CURSO SQL + 4GL . curso gratuito bases de datos SQL
CURSO SQL + 4GL . curso gratuito bases de datos SQL
• Tipos
• Diferencias y características
• Motor de base de datos
Bases de datos relacionales. Informacion organizada en tablas. Campos y columnas. Filas no registros.
Utilizacion de SQL para manejar bases de datos relacionales.
Bases de datos transaccionales
Deben ser lo mas rapidas posibles debido a que gestionan gran cantidad de recursos.
Durante las peticiones que se realizen bloquean recursos que otros usuarios podrian necesitar.
En estas bases de datos se asignan espacios denominados extends para optimizar el tratamiento
de los mismos. Existen tres tipos diferentesd de extends.
Datos
Temporal
Las tablas de sistema, son un catalogo de las tablas de la base de datos.
SQL Structure Query Language. Lenguaje Estructurado de Consulta
Lenguaje nativo por su similitud con el lenguaje natural.
Ventajas del SQL. Las sentencias SQL van embebidas en la maquina, no necesitan de una cadena ODBC de conexion
para conectar y hacer peticiones a una base de datos.
Tipos de datos
Claves primarias. Las claves primarias se utilizan para establecer las relaciones con otras tablas. No se debe vincularse al usuario
Foreing key
Unique
Char
VarChar
NChar: Native Char(se suele utilizar para hacer uso de caracteres nativos al lenguaje que se este usando)
NVarChar:Permite especificar el tamaño maximo y minimo de la variable definida
Serial: Es un autoincrementable. Para las instrucciones de tipo Insert se coloca un cero al campo de tipo Serial.
Text: Es necesario crear un espacio de datos en la base de datos para poder utilizar este tipo de dato sino devuelve
un error
Variable de entorno
Se encargan de interpretar los tipos de datos que se envian al motor de la base de datos para posteriormente si es
necesario realizar su conversion.
PC Windows 4GL Front-End
|
| Solicitud
|
|
|@ Fichero que gestiona caracteres como la ñ, diéresis etc
|
MOTOR BASE DATOS —————– APLICACION ——- IMPRESORA
DBLocaler ClientLocaler
DBC_Localler
El directorio fisico donde se guardan todos los ficheros necesarios para la correcta manipulacion de los diversos idiomas, se encuentra en es_es. Son ficheros de conversion de cada pagina de codigos para la conversion de caracteres.
Para saber con que clase de fichero de conversion de caracteres se esta trabajando solo hay que teclear el comando:
Echo _$db_localer, devolviendo es_es 850
Echo _$
• Caracteristicas basicas del SQL
Default : Con esta caracteristica se permite que un campo que no reciba un valor, tome un dato por defecto, que habremos
identificado al crear la tabla.
With Log/With No Log : Con With Log el sistema lleva un registro de las operaciones que se lleven a cabo con la tabla. Las caidas del sistema, recuperacion de datos, etc son registradas.
DBSpace_name (kilobytes) : Hace referencia al DBSpace donde deseemos introducirla.
Lock Mode (Bloqueos) : Por defecto siempre por pagina pues consume menos recursos.
Filas y paginas de memoria que asigna el sistema operativo.
• Sentencias SQL basicas
• Creacion de una tabla temporal definiendo los campos y los tipos de datos
Create temp table alumnos1 (dni integer, nombre char(15), apellido1 char(20), sexo char(1));
• Teniendo dos tablas, añadir una clave primaria a la tabla alumnos1 y referenciar con el campo se quiere introducir un indice de tipo clave primaria.
1. Agregar campo identificador a la tabla alumno como serial o ejecutar la sentencia SQL para establecer el nuevo campo como identificador de clave primaria
Alter table alumnos1 add constraint primary key(identificador)
2. Ejecucion de la sentencia para relacionar el campo ref_clave de la tabla expediente, que se desea relacionar con la
tabla alumnos1
Alter table alumnos1 add constraint (foreign key(identificador) references alumnos1)
3. Finalmente se ejecuta la sentencia que relaciona las tablas expediente y Alumnos1
Alter table expediente add constraint (foreign key (ref_alumno) references alumnos1)
• Lista con todos los valores distintos de la columna customer_num de la tabla orders
Select distinct customer_num from orders
unique
• Obtener columnas paid_date, sip_date, order_date, customer_num, order_num, po_num de la tabla orders ordenados ascendentemente por paid_date y customer_num
Select paid_date, ship_date, order_date, customer_num, order_num, po_num,
From orders
Order by paid_date, order_date, customer_num asc (por defecto se ordenan ascendentemente)
(se podrian utilizar criterios numericos para hacer referencia
a los campos de la cabecera Ej: 1,2,3…)
• Seleccionar los tres primeros caracteres de la columna zipcode y la columna customer_num de la tabla customer ordenados por el campo zipcode
Select zipcode[1,3], customer_num
From customer
Order by zipcode
• Agregar tres registros desde el DBAccess con caracteres ñ y posteriormente visualizarlos con el SQL Editor. Mediante las utilidades de Table Editor y IECC Console permite ver los motores de datos y las bases de datos a traves de una aplicacion de Windows. Al ejecutar el Select de los apellidos de la tabla alumnos1 saca un caracter raro donde deberia ir la ñ. Con la sentencia Update se actualizan los tres registros con la ñ
• Recuperar las columnas customer_num, company, city, state de la tabla customer para aquellas filas en donde el campo state no contenga el valor ‘CA’
Select customer_num, company, city, state
F rom customer
Where state=!’CA’ Where state not Matches ‘CA’
(El metodo de la izq es mas eficiente que el de la der. pues solo tiene un operador. Se reduce el consumo de recursos)
• Para conocer los recursos que consume una sentencia SQL, el sistema deja un fichero con extension .out. Este fichero puede ser accedido para conocer el coste de la sentencia.
Set Explain On -> Mediante esta sentencia se puede evaluar el coste. Es utilizado para depurar
Off
• De la tabla customer obtener los campos fname, lname, company y state para las filas en donde el campo zipcode no este en el rango de entre 94000 y 94999 ordenando el resultado por el campo state
Select fname, lname, company, state
From customer
Where zipcode between 94000 and 94999 order by state;
• Seleccionar los campos lname, city, state, phone de la tabla customer para las filas en donde la columna state tome la cadena AZ o NJ ordenandola la lista por lname
Select fname, lname, company, state
From customer
Where state in ("AZ", "NJ") order by lname;
• Obtener de la practica anterior las filas contrarias
Select fname, lname, company, state
from customer
where state not in ("AZ", "NJ") order by lname;
• Seleccionar los campos order_num, customer_num y paid_date de la tabla orders obteniendo las filas donde pa_date tome el valor nulo ordenando el resultado por customer_num
Select orden_num, customer_num,po_num
From Orders
Where paid_dte is null and shipdate is null order customer_num
• Que desaparezcan las filas donde el campo ship_date sea nulo
Select orden_num, customer_num,po_num
From Orders
Where paid_dte is null and shipdate is not null order customer_num
• Obtener todas las filas de la tabla stock para cualquier fila que contenga una R en el segundo caracter de los 3 que forman el campo manu_code y en donde unit_price sea mayor o igual a 100 ordenando los resultados por description y unit_price
Select *
From stock
Where manu_code like’_R_’ and unit_price>=100
Order by description unit_price
• Obtener todas las columnas de la tabla stock y todas aquellas columnas cuya columna description empieze por bicycle
Select *
From stock
Where decription like ‘bicycle%’ order by description, unit_price;
• Eliminar las filas que no tengan el valor RC en la columna manu_code
Select * From Stock
Where description like ‘bicycle%’ and manu_code like ‘PRC’ order by description, unit_price;
• Columnas tabla cust_calls obteniendo filas cuyo campo res_descr el caracter porcentaje en cualquier lugar
Select * from cust_calls
Where res_descr like ‘%%%’
• Obtener la columna catalog_num de la tabla catalog con todas las filas la cadena âHigh’ en las 4 primeras posiciones del campo cat_advert sin utilizar like ni matches
Select catalog_num
From catalog
Where car_advert[1,4]=’High’
• Numero de filas de la tabla stock
Select count(*) From Stock
• Numero de filas de la tabla stock cuyo manu_code es SHM
Select count(*) From Stock where manu_code=’SHM’
• Seleccionar numero de valores distintos de la columna manu_code de la tabla stock
Select count(distinct manu_code) from stock
• Media de la columna unir_price de la tabla stock
Select AVG(unit_price) from Stock
• Max y min de ship_charge y ship_weight de la tabla orders
Select Max(ship_charge), Min(ship_charge) From Orders
• Seleccionar simultáneamente los valores de la primera / cuarta y quinta practica que se han planteado asignandoles etiquetas para poder reconocerlos de forma que solo se contabilizaran las filas cuyo campo manu_code sea SHM
Select count(*) Cantidad, AVG(unit_price) Media, (Select Min(ship_charge)
From Orders) Minimo (Select Max (ship_charge) Max From stock
Where manu_coode=’SHM’
• Valor maximo, minimo y suma de la diferencia de las columnas res_dtime y call_dtime de la tabla cust_calls donde el campo user_id sea Maryj
Select Max(res_dtime-call_dtime), Min(res_dtime-call_dtime), Sum(res_dtime-call_dtime)
From cust_calls
Where user_id=’Maryj’
Problemas con la funcion agregada SUM.
Si se hace un Sum sobre un tipo de dato que no puede representar la precision del resultado que se obtiene de ese Sum se obtendría un error. La forma de solucionarlo seria mediante la siguiente expresión : Se agregaria el operador de la multiplicación seguido de un 1. De esta forma el SQL es capaz de transformar el resultado del sum a un formato valido, identificando dicho resultado como un decimal o flota.
Select Sum( )*1
• Otros tipos de funciones agregadas
• Stdev (derivación estandar)
• Fechas
• Date
• Current (fecha y hora actual)
• Month
• Year
• Weekday
• Today
• Extend (trabajar con datos de tipo date_time para obtener un intervalo del date_time que tomamos)
Ej: Extend (A, Tour to Tour) devuelve 9:40, hora actual
• Manipulación de cadenas (2-75, 2-76, 2-77, 2-78, 2-79)
• Otras funciones agregadas : User y Lenght
• Sentencias SQL con varias tablas
• Teniendo en cuenta las tablas cust_calls y orders estan relacionadas con customer_num, obtener las columnas order_num, order_date, ship_date de la tabla orders y todas las columnas de la tabla cust_calls para obtener solo las filas de en la que la columna call_dtime sea mayor o igual que la columnas ship_date ordenando el resultado por el campo customer_num
Select order_num, order_date, ship_date, cust_calls.*
From orders, cust_calls
Where orders.customer_num=cust_calls.customer_num and call_dtime>=ship_date order by customer_num;
Ej : Select * From Stock, Ítems = El problema del producto cartesiano
El resultado de esta sentencia seria el producto cartesiano de ambas tablas. Estos es Num. Filas de stock * Num. Filas de Ítems. Por cada fila de Stock se obtendrían todas las filas de la tabla Ítems. Por lo tanto es completamente necesario el realizar filtros de las consultas multitablas pues los resultados que generan redundan en el trafico de datos y en los recursos que ocupa el motor de datos.
• Obtener las columnas stock, manu_code, description, unit_price, catalog_num, cat_descr, cat_Advert para sacar las filas que tengan en la columna manu_code los valores HRO o HSK. Ademas la columna stock_num debera tener un valor entre 100 y 301 ordenando el resultado por la columna catalog_num
Stock Catalog Manufact
Stock_num catalog_num manu_code
Manu_code stock_num manu_name
Description manu_code lead_time
Select st.stock_num, st.manu_code, description, unit_price, catalog_num, cat_descr, cat_advert
From stock st, catalog ca, manufact ma
Where st.stock_num=ca.stock_num and st.manu_code=ca.manu_code and st.manu_code=ma.manu_code and st.manu_code in ("HRO", "HSK") and st.stock_num between 100 and 301 order by catalog_num;
• Referencias a tablas que no se encuentran en la misma base o motor donde trabajamos
Si esta en la base de datos alumnos se haria de la siguiente forma.
From Alumnos:nombre_tabla
Si la tabla esta en otra bdd de otro motor : From alumnos@nombre-motor:nombre-tabla
Estas conexiones solo se podran hacer con bases de datos que hallan sido abiertas en el mismo modo
• Agrupamientos (Group by, Joins, Outer Join, Sub-queries, Union, Intersection, Difference)
Ej : Select M.manu_code count(*)
From Stock S. Manufact M
Where S.manu_code=M.manu_code
Group by manu_code (o 1)
• Ver por cada codigo de proveedor cuantos articulos hay
Select manu_code, count (*)
From stock
Group by manu_code;
• Del ejericio anterior, ademas sacar de que proveedores tengo mas de 20 artiuclos
Select manu_code, count (*)
From stock
Group by manu_code
Having count (*) > 20;
• Items para cada valor de la columna order_num, el numero de filas, la suma de la columna total_price y la media de la misma columna. Usar etiquetas. Y ordenar info de forma descendente por total_price
Select order_num count (*), sum(total_price) total_price, avg(total_price) media2
From items group by total_price;
• Hacer un Join de las tablas orders e ítems para obtener la suma de la columna total_price para cada valor de la columna order_num. Solo intervendran las filas en las que las columnas order_date sea mayor que el 01/01/93 y la columna customer_num sea igual a 110. La ordenación sera descendente por la columna calculada.
Select ord.order_num, sum(it.total_price) suma
From orders ord, items it
Where ord.order_num=it.order_num and
Order_date>’01/01/1993′ and ord.customer_num=110
Group by ord.order_num
Order by suma desc;
• De la tabla Items, para cada valor de la columna order_num, el numero de filas y la media de la columna total_price, pero solamente si existen mas de dos filas para cada order_num. Asignar etiquetas y ordenar por media
Select order_num, count(*) total, avg(total_price) media
From items
Group by order_num
Having count(*)>2
Order by media;
• Join de orders e items para recuperar para cad avalor que toma order_num, la suma de la columna total_price y la diferencia entre las fechas paid_date y order_date. Despreciar las filas en donde la columna order_date sea menor de la fecha 01/01/1993 o que customer_num sea menor o igual de 110. Despreciar tambien las filas de la tabla orders que tengan menos de 5 filas en ítems. Asignar etiquetas y ordenar los resultados por la diferencia entre fechas y almacenar el resultado en una tabla temporal.
Select ord.order_num, sum(total_price) suma, (paid_date-order_date) fecha
From orders ord, items it
Where ord.order_num=it.order_num and
order_date>=’01/01/1993′ or ord.customer_num>110
Group by 1, 3
Having count(*)>5
Order by fecha desc;
Insert into tabla1;
SPL (Lenguaje de Procedimientos Almacenados)
Introduccion
Es similar al 4GL pero con menos sentencias.
El motor de datos nos permite crear rutinas que funcionan como extensiones al propio motor. Se puede invocar desde DBAccess.
• Realizar un procedimiento de almacenado. Pasando un codigo de proveedor(manu_code), lo que nos va a devolver son todas las entradas que existan en la tabla stock con dicha entrada.
CREATE PROCEDURE pepe (mcode CHAR(3))
RETURNING smallint, char, char, money, char, char;
DEFINE sr smallint;
DEFINE mc char;
DEFINE d char ;
DEFINE up money;
DEFINE u char;
DEFINE ud char;
FOREACH SELECT * INTO sr, mc, d, up, u, ud FROM stock WHERE manu_code=mcode
RETURN sr, mc, d, up, u, ud WITH RESUME;
END FOREACH
END PROCEDURE;
EXECUTE PROCEDURE pepe("HRO");
Los procedimientos almacenados tambien se pueden utilizar opara devolver un dato dentro de una clausula âWhere’
• Tentiendo en cuenta que en las tablas de Informix existe una tabla oculta, rowid, que solo puede obtenerse invocandola explicitamente en la select donde dicha columna toma un valor unico para cada una de las filas de la tabla. Construir una sentencia SQL que obtenga el rowid y la columna customer_num de la tabla cust_calls si el valor de la col. customer_num aparece mas de una vez en la tabla.(Customer_num es clave primaria y se necesita hacer un self-join. No see ha de utilizar sub-queries)
Select cc1.rowid, cc1.customer_num
from cust_calls cc1, cust_calls cc2
where cc1.customer_num=cc2.customer_num and
cc1.rowid!=cc2.rowid
• Hacer un fichero con los datos que tenemos en la tabla alumnos. Hacerlo desde DBAccess pero hacer la carga de forma que esta se realice de forma correcta.
• Encontrar pares de ordenes de la tabla orders donde la columna ship_weight difiere en un factor de 5 o mas y en donde la columna ship_date es no nula ordenando el resultado por ship_date. (cada fila difiere en 5 o mas de la siguiente fila. Esta vez no se establece join entre las tablas)
• Lista con ítems de la tabla stock que son suministrados por tres proveedores (solo trss)
Stock_num Manu_code
1 HRO
1 HSK
1 SMT
Select A.unit_descr, A.stock_num, A.manu_code, B.manu_code, C.manu_code
From Stock A, stock B, stock C
Where A.stock_num=B.stock_num And
C.stock_num=A.stcok_num And
A.manu_code<>B.manu_code And (relacion redundante)
C.manu_code<>A.manu_code And
D.manu_code Not In (A.manu_code, B.manu_code, C.manu_code)
Los procedimientos de almacenado no devuelven mensajes
• SUBQUERIES
Una sentencia SQL dentro a su vez dentro de otra sentencia SQL, con la palabra reservada And / Or Exists
• Seleccionar cols. Order_num, stock_num, manu_code, total_price de ítems. Obtener info para las filas en donde total_price sea inferior al total_price de los ítems cuyo order_num sea de 1023
Select order_num, stock_num, manu_code, total_price
From items
Where total_price z ALL (Select total_price From Items Where order_num=1023)
• Idem, con total_price inferior al total_price de alguno de los ítems
• Seleccionar con Exists, de la tabla customer, customer_num y company siempre que no exista en la tabla orders, ningun pedido para el cliente
• Seleccionar todos los clientes que no tenga pedidos
• Seleccionar filas y columnas que tienen alguna entrada en la tabla ítems
Outer
Select * (o A.*, B.*) Esta sentencia sacara todas las filas que cumplen la condicion y
From A, outer B todas las filas de la tabla pA por ser esta la tabla dominante.
Where A.id=B.id B no devolvera ningun valor si no se cumple la condicion. Sin embargo B devolvera los valores cumpla o no la condicion
Union (unir sentencias SQL y concatenar el resultado de cada una de ellas)
Union va a eliminar las filas coincidentes de ambas sentencias.
Select
From
Where
Union [All] All saca todas las filas que devuelven ambas sentencias
Select
From
Where
…..
La seleccion de campos ha de ser sobre el mismo numero de columnas y de tipos de datos
• Definir una tabla temporal e introducir constantes en clausula select. Grabar en un fichero una lista de los campos lname, fname, company, city, state teniendo en cuenta que en la lista deben aparecer en primer lugar todos los clientes en donde la columna state es CA y a continuación las demas
Output to âclientes.txtâ
Select lname, fname, company, city, state, 1
From customer
Where state=’CA’
Union[All]
Select lname, fname, company, state, 2
From customer
Where state!=’CA’
Grup by 6
Load nombre-fichero
+ Sentencia SQL DESDE DBACCESS
Unload nombre-fichero
• Crear en Stores7 una tabla de acuerdo a las definiciones de la bdd de ejemplo con las columnas lname, fname, company de la tabla customer y otra col con el numero de entradas para cada cliente de la tabla orders. En otra col tendremos la suma total de total_price de la tabla ítems asi como el numero total de pedidos. Cargar los datos correspondientes en esta tabla extrayendolos de la bdd de ejemplo.
Select tabl.fname Fname, tabl.lname Lname, tabl.company Company,
(Select count(*) From orders tab4 Where tabl.customer_num=tab4.customer_num) Total_Pedidos, Sum(tab3.total_price)
From customer tab1 Outer (orders tab2, items tab3) // Esta sentencia conl Outer saca por cada cliente sus pedidos
Where tabl.customer_num=tab.customer_num And
Tab2.order_num=tab3.order_num
Group by 1,2,3,4 // Se agrupa porque la funcion agregada obliga a ello
Insert Temp Tabla-temp
• Procedimiento de almacenado. Creación de una tabla, si no existe crearla, si existe verificar que existe. Verificar que las columnas existen, sino crearlas. A continuación cargar los datos y devolver el valor que se ha cargado en ella. (primer procedimientos de almacenado 3-37)
• Triggers. Los triggers dan la posibilidad de incorporar a una tabla la capacidad de interceptar eventos que se producen sobre ella y actuar en consecuencia. Por ejemplo cuando se insertamo se puede realizar una auditoria acerca de quien a hecho la inserción, modificacion, como donde etc. Se sabe de donde procede una determinada operación. Permiten conocer y manejar datos que son modificados y sustituidos. De esta forma se conoce el valor que tenian antes y después de la modificacion. Los triggers no permiten realizar muchas operaciones..
• Dbschema âd base-datos ât nombre-tabla
• Self-Join. Pemiten diferenciar en una tabla (mediante instancias de ella) diferentes entradas evitando que no tratamos mas de una vez una misma fila.. Se busca el que al comparar una fila de la tabla con otra fila de la misma no repitamos los datos ni las filas de resultados.
• Seleccionar los empleados de la tabla nominas para determinar que empleados ganan mas que su manager
Pay_roll Select te.employee_num, te.dept_num, te.gross_pay,
Employee_num te.level, tm.employee_num, tm.dept_num, tm,gross_pay,
Employee_dept_num tm.level
Employee_level From Pay_rol Te, Pay_rol Tm
Employee_gross_pay Where te.employee_ num!=tm.employee_num And
Manager_dept_num te.dept_num=tm.dept_num And
te.gross_pay>tm.gross_pay
El rowid se utiliza en los casos en que no tengamos una clave primaria
• Sentencias de seguridad con SQL (ayuda de DBAccess)
Permisos de base de datos
Niveles. Administrador, recurso y conexion
Permisos a nivel de tabla
Tabla. Alter, delete, crear indices, insert, select(cols), update(cols), all
Conexion
GRant, Revoke
Load ; cargar info de forma masiva en la bdd
Unload : descargar idem
Lock table : Bloquear una tabla y de que forma se establece el bloqueo
Exclusivo : nadie puede acceder
Compartido : solo consulta
Begin [work] : inicio de transaccion
Comit [work] : fin de transacción con éxito
Rollback : deshacer todos los cambios. Es utilizado cuando se produce un error en la
transaccion
Update stadistics : actualizar estadisticas. Se utiliza para actualizar la información que el motor de bd guarda sobre las tablas y de esta manera ayudar al optimizador de codigo para facilitarle la ejecución de las sentencias SQL. Actualiza tambien parámetros internos del motor. Es adecuado su uso antes de ver la distribución de extendí de tablas, filas y demas.
• PRACTICA
Alu1General Alu2General Alu1Matricula Planes
Numero Numero Identificador Codigo
Apellido1 Datos Personales Numero_Alumno Codigo2
Apellido2 Cur_acad
Nombre Plan
AluAsig AluPlan PlanMatasig CrediCur
Plan
• Recuperar apellidos, nombre, codigos de plan de estudios y numero de asignaturas en las que se han matriculado los alumnos que hallan formalizado su matricula en mas de un plan de estudios para el curso. Ordenar el resultado de forma alfabetica mediante apellidos y nombre
Select alu.apellido1, alu.apellido2, alu.nombre, ma.plan count(*) nasign
From alugeneral alu, alu1matricula ma, aluasig asig
Where alu.numero=ma.numero_alumno And
ma.identificador=asig.numero_matricula And
ma.cur_acad=2000 And
ma.estado is null And //Hasta aqui muestra los alumnos que se han matriculado en el curso 2000
(Select ) >1 And //sacar si ha optado por una asinatura de libre eleccion
alu.numero In ( )
• Recuperar apellidos, nombre de los alumnos que se hallan matriculado en el curso 2000-2001 en el plan de estudios cuyo codigo es AYDEMPRE. Incluir solamente los alumnos que hallan optado por alguna asignatura de libre eleccion (asignaturas que no pertenecen al plan de estudios en el que el alumno se ha matriculado). Ordernar el resultado de forma alfabetica.
Select distinct alu.apellido1, alu.apellido2, alu.nombre
From alu1general, alumatricula mat
Where alu.numero=mat.numero_alumno And
mat.plan=’AYDEMPRE’ And
mat.cur_acad=2000 And
mat.estado is null And
Exists (Select csi, codigo
From planmatasig pla, aluasig csi
Where alu.numero=csi.numero_alumno And
mat.identificador=csi.identificador And
csi.codigo=pla.codigo And
pla.plan=mat.plan)
• Construir una relacion alfabetica de todos los alumnos matriculados en el curso 2000-2001 en el plan cuyo codigo es DERECHOA que tengan pendientes de aprobar para concluir el plan menos de 5 asignaturas.
• La asignatura 702 pertenece al plan de estudios ECONOMIA (codigo) pero en el curso academico se han matriculado de ella alumnos de otros planes de estudios. Confeccionar sentencia que obtenga apellidos y nombre de los alumnos y de aquellas filas de alumnos de otros planes, indicar el codigo de plan de estudio. Ordenar el resultado alfabéticamente pero primero apareceran los alumnos de economia y después el resto
• Construir sentencia SQL para obtener las asignaturas de otros planes en las que se han matriculado el curso 2000-2001 los alumnos del plan AYDEMPRE. De cada asignatura se indicara el codigo, nombre y numero de alumno de AYDEMPRE que se han matriculado en ella
• Optica es una asinatura del plan de fisica y que tiene codigo 1623. Obtener la relacion de alumnos, apellidos y nombre que hallan aprobado optica en el curso 1999-2000, pero solo sino se habian matriculado en ella en cursos anteriores.
4GL Four Generation Language
Informix. Motor Standart Engine (para instalaciones pequeñas)
Oracle
DB2
SQLServer
Informix DBAccess . Permite consultar tablas y hacer casi cualquier operacion bajo SQL.
Contiene una utilidad para la generacion de pantallas e informes.
La ejecucion se lleva a cabo desde el modo comando.
Se debe ejecutar DBAccess desde el directorio propio para evitar no mezclar las instrucciones.
Se puede redireccionar los resultados de una sentencia hacia un fichero.
Lenguajes de 4º generacion
Introduccion
Son denominados lenguajes de 4º generacion aquellos que poseen un nivel de abstraccion mayor
que otros lenguajes.
D4GL Dinamic Four Generation Language
Aplicacion "experimento" a modo de Visual C++ para maquinas bajo Win32.
Es una aplicacion que permite el desarrollo de programas cliente / servidor y de programacion distribuida
Se instala un pequeño componente en cada terminal o cliente para comunicarse con el servidor.
Dicho componente procesa cada instruccion, se conecta con el servidor y establece las variables
de entorno para el modo grafico. Se comunica bajo el protocolo TCP/IP.
Se hace dos instalaciones. Una para el desarrollo y otra para la ejecucion.
El servidor Informix 4GL se encarga de visualizar la aplicacion.
El servidor se puede ejecutar en modo caracter y en modo grafico.
Variables de entorno
FGLGUI=0 modo caracter
FGLFUI=1 modo grafico
Las licencias de usuario son controladas por IP
Red Hat Linux
Introduccion
Comandos basicos
El acceso a la linea de comandos desde DBAccess se hace mediante el comando Shift+1
SH:Abre una nueva shell como hija del shell !
Salir del Shell. Exit o Control-D
PS
FG
Q!
Modo comando(por defecto)
Modo edicion(para entrar se teclea Shift+: y a continuacion i+Intro. La vuelta al modo comando se hace mediante el
comando Esc).
Editor Vi
Para moverse por las paginas se utilizan los comandos:
Control+F : Para avanzar
Control+A : Para retroceder
Para salir del Vi, se utilizan dos formas.
Salida grabando : Q+Intro
Salida sin grabar: WX+Intro
Onstat
Ontape âa backup automatico
-c backup continuo
Ontape se utiliza para cuando se realiza una carga masiva de datos para asi evitar que se cancele o se caiga la entrada masiva con el comando Load
Set explain On
Off
Tiendas relacionadas:
No hay artículos relacionados.

0 Opiniones en CURSO SQL + 4GL . curso gratuito bases de datos SQL
Se el primero en opinar. ÂżQue te ha parecido? Cuentanos tu experiencia..