Sei sulla pagina 1di 27

Ejercicios de MySQL

Diego Barrios Joel Rodriguez - Jose Tirado


Universidad de Crdoba Ingeniera de Sistemas Montera 2011

EJERCICIOS DE SQL: SGBD MYSQL Considerar las siguientes tablas: Nombre EMPLEADO: SUCURSAL: CUENTA: CLIENTE: TITULAR: CAJERO: OPERACIN: Campos DniEmp, NomEmp, SexEmp, FecNac, FecAlt, SalEmp, CodSuc, Dir CodSuc, DirSuc, TelSuc NumCta, FecApe, CodSuc DniCli, NomCli, DirCli, TelCli NumCta, DniCli, NumOrd CodCaj, TipCaj, CodSuc CodCaj, FecOpe, HorOpe, TipOpe, DesOpe, ImpOpe, NumCta

Mostrando la informacin de las tablas:

Tabla 1- Cajero

Tabla 2- Cliente

Tabla 3- Cuenta

Tabla 4- Empleado

Tabla 5- Operacin

Tabla 6- Sucursal

Tabla 7- Titular

Consultas SQL 1. Nmero de todas las cuentas corrientes (NumCta) de la sucursal nmero 2 ordenadas por fecha de apertura (FecApe). select numcta from cuenta where (tipcta='corriente') and (codsuc='2') order by fecape ;

2. El nmero de todas las cuentas corrientes del cliente con DNI 44444444 y el orden de titularidad. select numord, numcta from titular where numcta in (select cuenta.numcta from cuenta where cuenta.tipcta='corriente' and cuenta.numcta in (select titular.numcta from titular where titular.dnicli='44444444' )) ;

3. El nmero de todas las cuentas corrientes del cliente que se llama Pedro del Valle y el orden de titularidad. select distinct numcta from titular where numcta in (select cuenta.numcta from cuenta where cuenta.tipcta='corriente' and cuenta.numcta in (select titular.numcta from titular where titular.dnicli = (select dnicli from cliente where nomcli='Pedro del Valle' ) )) ;

4. El DNI y nombre de todos los clientes que tienen cuenta en la sucursal nmero 4, ordenado por nombre. select dnicli, nomcli from cliente where dnicli in( select dnicli from titular where numcta in ( select cuenta.numcta from cuenta where codsuc='4' ) ) ;

5. El saldo de la cuenta nmero 6. select saldo from cuenta where numcta='6' ;

CREATE VIEW `banco`.`consulta6` AS select saldo from cuenta where numcta='6' ;

SELECT * FROM `banco`.`consulta6`;

6. El nmero y saldo de todas las cuentas de la sucursal nmero 4. select numcta, saldo from cuenta where codsuc='4' ;

CREATE VIEW `banco`.`consulta7` AS select numcta, saldo from cuenta where codsuc='4' ;

SELECT * FROM `banco`.`consulta7`;

7. Listado de clientes ( DNI y nombre ) con el saldo total ( suma de saldos ) de todas sus cuentas corrientes, ordenado por nombre. select titular.dnicli, cliente.nomcli, titular.numcta, cuenta.saldo, sum(saldo) from titular, cliente, cuenta where titular.numcta in (select numcta from cuenta where tipcta='corriente') and ( titular.dnicli=cliente.dnicli ) and ( titular.numcta=cuenta.numcta ) group by dnicli order by nomcli ;

CREATE VIEW `banco`.`consulta8` as select titular.dnicli, cliente.nomcli, titular.numcta, cuenta.saldo, sum(saldo) from titular, cliente, cuenta where titular.numcta in (select numcta from cuenta where tipcta='corriente') and ( titular.dnicli=cliente.dnicli ) and ( titular.numcta=cuenta.numcta ) group by dnicli order by nomcli;

SELECT * FROM `banco`.`consulta8`;

8. Todas las sucursales (nmero) y su saldo total (suma de los saldo de todas sus cuentas) ordenado descendentemente por el saldo. select codsuc, sum(saldo) from cuenta group by codsuc order by sum(saldo) desc ;

CREATE VIEW `banco`.`consulta9` AS select codsuc, sum(saldo) from cuenta group by codsuc order by sum(saldo) desc;

SELECT * FROM `banco`.`consulta9`;

9. Todas las fechas que hay operaciones junto con el saldo global del banco acumulado hasta esa fecha. select fecope,sum(impope) from operacion group by fecope order by fecope ;

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. select titular.dnicli, cliente.nomcli, titular.numcta, cuenta.saldo, count(titular.dnicli), sum(saldo) from titular, cliente, cuenta where titular.numcta in (select numcta from cuenta where tipcta='corriente') and (titular.dnicli=cliente.dnicli) and (titular.numcta=cuenta.numcta) group by dnicli order by count(titular.dnicli) desc, nomcli asc;

CREATE VIEW `banco`.`consulta10` as select titular.dnicli, cliente.nomcli, titular.numcta, cuenta.saldo, count(titular.dnicli), sum(saldo) from titular, cliente, cuenta where titular.numcta in (select numcta from cuenta where tipcta='corriente') and (titular.dnicli=cliente.dnicli) and (titular.numcta=cuenta.numcta) group by dnicli order by count(titular.dnicli) desc, nomcli asc;

SELECT * FROM `banco`.`consulta10`;

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. select * from ( select cliente.dnicli,count(*) as co from cliente,titular,cuenta where cliente.dnicli=titular.dnicli and cuenta.numcta=titular.numcta and cuenta.tipcta='corriente' group by cliente.dnicli) as cc where cc.co > '1' ;

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. select cuenta.numcta from cuenta where numcta not in ( select cuenta.numcta from cajero,cuenta,operacion where operacion.codcaj=cajero.codcaj and (operacion.numcta=cuenta.numcta) and (cajero.codsuc=cuenta.codsuc)) ;

14. Extraer un listado de todas las sucursales (nmero) junto con el nmero de empleados de dicha sucursal; ordenado por el nmero de empleados select codsuc,count(*) as cant from empleado group by codsuc;

15. Extraer un listado de todas las sucursales (nmero) junto con el nmero de empleados masculinos y el nmero de empleados femeninos. Vista 1: en la cual se almacenan las personas de sexo femenino de cada sucursal select codsuc,count(*) as mujeres from empleado where sexemp='femenino' group by codsuc UNION select codsuc,0 as mujeres from sucursal where codsuc NOT IN ( select codsuc from empleado where sexemp='femenino' group by codsuc ) order by codsuc ;

Vista 2: en la cual se almacenan las personas de sexo masculino de cada sucursal select codsuc,count(*) as hombres from empleado where sexemp='masculino' group by codsuc UNION select codsuc, 0 as hombres from sucursal where codsuc NOT IN ( select codsuc from empleado where sexemp='masculino' group by codsuc ) order by codsuc ;

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. select distinct cliente.dnicli,cliente.nomcli,empleado.nomemp from titular,cuenta,sucursal,empleado,cliente where numord='1' and cargo='director' and cuenta.numcta=titular.numcta and sucursal.codsuc=cuenta.codsuc and empleado.codsuc=sucursal.codsuc and cliente.dnicli=titular.dnicli ;

Potrebbero piacerti anche