CURSO SQL + 4GL . curso gratuito bases de datos SQL

Inicio » Blog » CURSO SQL + 4GL . curso gratuito bases de datos SQL

CURSO SQL + 4GL . curso gratuito bases de datos SQL

 

CURSO SQL + 4GL . curso gratuito bases de datos SQL

Bases de datos.

•  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.

 

Etiquetas

, , , , , ,

Relacionado

 
 

0 Opiniones en CURSO SQL + 4GL . curso gratuito bases de datos SQL

Se el primero en opinar. ÂżQue te ha parecido? Cuentanos tu experiencia..

 
 

Comentar