Sunteți pe pagina 1din 4

EJERCICIOS DE SQL: USANDO MYSQL

Considerar las siguientes tablas:


EMPLEADO:
SUCURSAL:
CUENTA:
CLIENTE:
TITULAR:
CAJERO:
OPERACIN:

( DniEmp, NomEmp, SexEmp, FecNac, FecAlt, SalEmp, CodSuc, Dir, Cargo )


( CodSuc, DirSuc, TelSuc )
( NumCta, FecApe, CodSuc, SaldoCta )
( DniCli, NomCli, DirCli, TelCli, TipoCli )
( NumCta, DniCli, NumOrd )
( CodCaj, TipCaj, CodSuc )
( CodCaj, FecOpe, HorOpe, TipOpe, DesOpe, ImpOpe, NumCta )

Realizar las siguientes consultas:


1.

Nmero de todas las cuentas corrientes ( NumCta ) de la sucursal nmero 2 ordenadas por fecha
de apertura ( FecApe ).

2.

El nmero de todas las cuentas corrientes del cliente con DNI 44444444 y el orden de titularidad.

3.

El nmero de todas las cuentas corrientes del cliente que se llama Pedro del Valle y el orden de
titularidad.

4.

El DNI y nombre de todos los clientes que tienen cuenta en la sucursal nmero 4, ordenado por
nombre.

5.

El saldo de la cuenta nmero 6.

6.

El nmero y saldo de todas las cuentas de la sucursal nmero 4.

7.

Listado de clientes ( DNI y nombre ) con el saldo total ( suma de saldos ) de todas sus cuentas
corrientes, ordenado por nombre.

8.

Todas las sucursales ( nmero ) y su saldo total ( suma de los saldo de todas sus cuentas ) ordenado
descendentemente por el saldo.

9.

Todas las fechas que hay operaciones junto con el saldo global del banco acumulado hasta esa
fecha.

10.

Todos los clientes (DNI y nombre) junto con el nmero de cuentas corrientes que tienen (Cuntas
tienen?), el saldo mximo y la suma de los saldos ordenado por el nmero de cuentas que tienen
descendentemente; y para todos aquellos que tienen el mismo nmero de cuentas, ordenados por
nombre ascendentemente.

11.

Todos los clientes (DNI) junto con el nmero de cuentas corrientes que tienen; pero slo aquellos
clientes que tienen ms de una cuenta corriente.

12.

Todas las cuentas corrientes ( nmero ) cuyo saldo sea superior a la media de saldos de la misma
sucursal.

13.

Extraer las cuentas en las que no han hecho ninguna operacin en un cajero de la sucursal de la
cuenta.

14.

Extraer un listado de todas las sucursales ( nmero ) junto con el nmero de empleados de dicha
sucursal; ordenado por el nmero de empleados

15.

Extraer un listado de todas las sucursales ( nmero ) junto con el nmero de empleados masculinos
y el nmero de empleados femeninos.

16.

Extraer un listado de clientes ( DNI y nombre ) junto con el nombre del director de la sucursal de
todas aquellas cuentas en las que el cliente es el primer titular.

Nota: * = Dos versiones; utilizando una vista y sin utilizarla; # = Slo utilizando vistas.

EJERCICIOS SQL: USANDO POSTGRESQL


Para que un alumno ingrese en la Universidad, debe realizar una preinscripcin, especificando a qu
estudios desea acceder en orden de preferencia.
Dicha informacin se guarda en una base de datos cuyo modelo de datos responde al siguiente diagrama:
ALUMNO
N
Preinscripcin
M
ESTUDIO

Orden,
Admitid
o

Pasando el modelo de datos a relacional obtenemos:


ALUMNO:
(DNI, Nombre, Nota, Isla)
ESTUDIO:
(Cdigo, Nombre, Nota de corte )
PREINSCRIPCION: (DNI, Cdigo, Orden, Admitido)
Por otro lado, su implementacin en SQL corresponde a:
CREATETABLEALUMNO
(DNIVarchar2(9),
NOMVarchar2(40),
ILLAVarchar2(3)
CHECK(ILLAIN(MA,ME,IB,FO)),

NOTANumber
);
CREATETABLEPREINSCRIPCION
(DNIVarchar2(9),
CODVarchar2(4),
ORDNumber(2),
ADMVarchar2(1)CHECK(ADMIN(S,N))
);
CREATETABLEESTUDIO
(CODVarchar2(4),
NOMVarchar2(20),
NOTANumber
);

Nota: El atributo Nota de corte de la entidad ESTUDIO indica la nota mnima para acceder a estos
estudios. Sin embargo hay alumnos que tienen acceso directo por otras causas (por ejemplo por aprobar
las pruebas de mayores de 25 aos); por tanto se considera que un alumno est admitido en un estudio si
el atributo Admitido de la relacin Preinscripcin es igual a S.
1) Extraer el DNI y nombre de todos los alumnos junto con el nombre del estudio donde han sido
admitidos ordenados por estudios.
2) Extraer el DNI y nombre de todos los alumnos que no han sido admitidos en ningn estudio
ordenados por DNI.
3) Extraer todos los estudios junto con el nmero de alumnos que lo han solicitado en primera
preferncia, ordenado descendentemente por el nmero de alumnos.
4) Extraer todos los alumnos (DNI y nombre) cuya nota sea igual o superior a la nota media de todos
los alumnos que viven en la misma isla.
5) Enunciar las instrucciones SQL necesarias para crear las claves primarias, externas y los ndices
que creis convenientes del ejemplo.
6) Suponer que al crear la clave primaria de la tabla de alumnos da error porque existen DNIs
duplicados. Dar la sentencia SQL para listar los DNIs duplicados ( es decir, que existen dos o ms
registros diferentes en a tabla de alumnos con el mismo DNI). Evidentemente, al listar los DNIs
no deben salir duplicados.

ERCICIOS SQL: USANDO MYSQL


Considerar el siguiente modelo de datos que corresponde a los prstamos de libros de una biblioteca:
LIBRO

PRSTAMO

SOCIO

Este modelo genera la siguiente definicin de tablas:


CREATETABLELIBRO
(ISBNNumber(10),Cdigoidentificativodellibro
TituloVarchar2(70),Ttulodellibro
EditorialVarchar2(40),Nombredelaeditorialdellibro
NumPaginasNumber(4),Nmerodepginasdellibro
CONSTRAINTpk_libroPRIMARYKEY(ISBN)
);
CREATETABLEPRESTAMO
(ISBNNumber(10),Cdigodellibroprestado
DNIVarchar2(11),DNIdelsocioquesellevael
libro
FechaPrestamoDATE,Fechadelprstamo
FechaDevolucionDATE,Fechaprevistadedevolucin
DevueltoVarchar2(1)Indicasiestdevueltoono
CONSTRAINTck_devueltoCHECK(DevueltoIN(S,N)),
CONSTRAINTpk_prestamoPRIMARYKEY(ISBN,DNI,FechaPrestamo)
);
CREATETABLESOCIO
(DNIVarchar2(11),DNIdelsocio
NombreVarchar2(70),Nombrecompletodelsocio
CONSTRAINTpk_socioPRIMARYKEY(DNI)
);

Realizar las siguientes consultas en SQL sobre las tablas anteriores:


1)

Listar el DNI y Nombre de todos los socios que tienen algn libro en prstamo junto con el
nmero total de libros que tienen en prstamo.

2)

Listar el ISBN y Ttulo de todos aquellos libros que estn en prstamo y ya deberan estar
devueltos; visualizar tambin el DNI del socio que lo tiene y las fechas de prstamo y de
devolucin. Ordenar la lista descendentemente por el tiempo que hace que lo tena que haber
devuelto ( los que haga ms tiempo que lo tenan que haber devuelto deben salir los primeros ).

3)

Definiendo las vistas que se crean necesarias, extraer el ISBN y ttulo del libro que se ha prestado
ms veces.

EJERCICIOS SQL: USANDO POSTGRESQL


Considerar el siguiente modelo de tablas en SQL de una tienda de comestibles
CREATETABLEALIMENTO
(
REFERENCIAVARCHAR2(13)CONSTRAINTPRIMARYKEY,/*Referenciadelproducto*/
NOMBREVARCHAR2(50)NOTNULL,/*Nombredelproducto*/
PRECIONUMBERNOTNULL/*Preciodelproducto*/
);
CREATETABLEPROVEEDOR
(
NIFVARCHAR2(11)CONSTRAINTPRIMARYKEY,/*NIFdelproveedor*/
NOMBREVARCHAR2(50)NOTNULL/*Nombredelproveedor*/
);
CREATETABLEALBARAN
(
CODIGONUMBER(5)CONSTRAINTPRIMARYKEY,/*Cdigodelalbaran*/
NIF_PROVARCHAR2(11)NOTNULL,/*NIFdelproveedor*/
FECHADATENOTNULL,/*Fechadelalbaran*/
FACTURADOVARCHAR2(1)NOTNULL,/*Estfacturado?*/
CONSTRAINTCHECK(FACTURADOIN(S,N))
CONSTRAINTFOREIGNKEY(NIF_PRO)REFERENCESPROVEEDOR(NIF)
);
CREATETABLELINEA_ALBARAN
(
CODIGO_ALBNUMBER(5)NOTNULL,/*Cdigodelalbaran*/
REFERENCIAVARCHAR2(13)NOTNULL,/*Referenciadelproducto*/
KILOSNUMBERNOTNULL/*Kilosdeproducto*/
PRECIONUMBERNULL,/*Preciodelkilodeproducto*/
CONSTRAINTPRIMARYKEY(CODIGO_ALB,REFERENCIA),
CONSTRAINTFOREIGNKEY(CODIGO_ALB)REFERENCESALBARAN(CODIGO),
CONSTRAINTFOREIGNKEY(REFERENCIA)REFERENCESALIMENTO(REFERENCIA)
);
CREATETABLEVENTA
(
CODIGONUMBER(8)CONSTRAINTPRIMARYKEY,/*Cdigodelaventa*/
REFERENCIAVARCHAR2(13)NOTNULL,/*Referenciadelproducto*/
FECHADATENOTNULL,/*Fechadelaventa*/
KILOSNUMBERNOTNULL,/*Kilosvendidosdelproducto*/
PRECIONUMBERNOTNULL,/*Precioelkilodeproducto*/
CONSTRAINTFOREIGNKEY(REFERENCIA)REFERENCESALIMENTO(REFERENCIA)
);

Las entradas de alimentos en la tienda quedan registradas en los albaranes; mientras que las
salidas de alimentos quedan registradas por las ventas; de esta forma las existencias de un
producto se calculan como la diferencia entre las entradas y las salidas.
1) Realizar el modelo entidad-relacin del cual provienen estas tablas, incluyendo los
atributos.
2) Calcular en lgebra relacional y en SQL las siguientes consultas:
Obtener la referencia y el nombre de todos los alimentos que nos ha servido el
proveedor que se llama MercaFruita
Extraer el cdigo del albaran y el nombre del proveedor de todos aquellos albaranes
facturados que tienen alguna lnea sin especificar el precio.
3) Realizar en SQL las siguientes consultas:
Extraer las referencias de los alimentos junto con el ltimo precio de algn albarn de
entrada de este producto. Si se desea se puede crear una vista.
Calcular el estoc de la tienda. Extraer la referencia del alimento, el nombre y el nmero
de kilos que hay.
4) Crear los triggers necesarios para garantizar que todo albarn facturado tiene todas sus
lneas con precio.

S-ar putea să vă placă și