Se dispone de las siguientes tablas con los siguientes datos:
TABLA FABRICANTE
ID_Fab Nombre País
1 Oracle Estados Unidos
2 Microsoft Estados Unidos
3 IBM Estados Unidos
4 Dinamic España
5 Borland Estados Unidos
6 Symantec Estados Unidos
TABLA PROGRAMA
Código Nombre Versión
1 Application Server 9i
2 Database 8i
3 Database 9i
4 Database 10g
5 Developer 6i
6 Access 97
7 Access 2000
8 Access XP
9 Windows 98
10 Windows XP
Professional
11 Windows XP
Home Edition
12 Windows 2003 Server
13 Norton Internet Security
2004
14 Freddy Hardest -
15 Paradox 2
16 C++ Builder 55
17 DB/2 20
18 OS/2 10
19 JBuilder X
20 La prisión 10
TABLA COMERCIO
CIF Nombre Ciudad
1 El
Corte Inglés Sevilla
2 El Corte Inglés Madrid
3 Jump Valencia
4 Centro Mail Sevilla
5 FNAC Barcelona
TABLA CLIENTE
DNI Nombre
Edad
1 Pepe Pérez 45
2 Juan González 45
3 María Gómez 33
4 Javier Casado 18
5 Nuria Sánchez 29
6 Antonio Navarro 58
TABLA DESARROLLA
ID_FAB Código
1 1
1 2
1 3
1 4
1 5
2 6
2 7
2 8
2 9
2 10
2 11
2 12
6 13
4 14
5 15
5 16
3 17
3 18
5 19
4 20
TABLA DISTRIBUYE
cif codigo cantidad
1 1 10
1 2 11
1 6 5
1 7 3
1 10 5
1 13 7
2 1 6
2 2 6
2 6 4
2 7 7
3 10
8
3 13 5
4 14 3
4 20 6
5 15 8
5 16 2
5 17 3
5 19 6
5 8 8
TABLA REGISTRA
cif dni codigo medio
1 1 1 Internet
1 3 4 Tarjeta postal
4 2 10 Teléfono
4 1 10 Tarjeta postal
5 2 12 Internet
2 4 15 Internet
Las relaciones entre estas
tablas son las siguientes.
1.- Averigua
el DNI de todos los clientes:
SELECT dni
FROM `cliente` ;
2 Consulta
todos los datos de todos los programas:
SELECT * FROM
`programa` ;
3 Obtén un
listado con los nombres de todos los programas:
SELECT nombre
FROM programa ;
4 Genera una
lista con todos los comercios:
SELECT * FROM
comercio ;
5 Genera una
lista de las ciudades con establecimientos donde se venden programas,
sin que aparezcan valores duplicados (utiliza DISTINCT):
SELECT
DISTINCT ciudad FROM comercio, distribuye WHERE comercio.cif =
distribuye.cif ;
6 Obtén una
lista con los nombres de programas, sin que aparezcan valores duplicados
(utiliza DISTINCT) :
SELECT
DISTINCT nombre FROM programa ;
7 Obtén el
DNI más 4 de todos los clientes:
SELECT dni+4
FROM cliente ;
8 Haz un
listado con los códigos de los programas multiplicados por 7:
SELECT codigo
* 7 FROM programa ;
9 ¿Cuáles son
los programas cuyo código es inferior o igual a 10?
SELECT * FROM programa
WHERE codigo <= 10 ;
10 ¿Cuál es
el programa cuyo código es 11?
SELECT * FROM programa
WHERE codigo = 11 ;
11 ¿Qué
fabricantes son de Estados Unidos?
SELECT * FROM
fabricante WHERE pais = “Estados Unidos” ;
12 ¿Cuáles
son los fabricantes no españoles? Utilizar el operador IN.
SELECT * FROM
fabricante WHERE pais NOT IN (“España”) ;
13 Obtén un
listado con los códigos de las distintas versiones de Windows:
SELECT version FROM
programa WHERE nombre = “Windows” ;
14 ¿En qué
ciudades comercializa programas El Corte Inglés?
SELECT ciudad
FROM comercio WHERE nombre = “El Corte Inglés” ;
15 ¿Qué otros
comercios hay, además de El Corte Inglés? Utilizar el operador IN.
SELECT nombre
FROM comercio WHERE nombre NOT IN (“El Corte Inglés”) ;
16 Genera una
lista con los códigos de las distintas versiones de Windows y Access.
Utilizar el operador IN.
SELECT codigo FROM programa
WHERE nombre IN (“Access”, “Windows”) ;
17 Obtén un
listado que incluya los nombres de los clientes de edades comprendidas
entre 10 y 25 y de los mayores de 50 años. Da una solución con BETWEEN
y otra sin BETWEEN:
SELECT nombre FROM
cliente WHERE (edad BETWEEN 10 AND 25) OR edad >= 50 ;
18 Saca un
listado con los comercios de Sevilla y Madrid. No se admiten valores
duplicados:
SELECT
DISTINCT nombre FROM comercio WHERE ciudad IN (“Sevilla”, “Madrid”) ;
19 ¿Qué
clientes terminan su nombre en la letra “o”?
SELECT * FROM cliente
WHERE nombre LIKE “%o” ;
20 ¿Qué
clientes terminan su nombre en la letra “o” y, además, son mayores de 30 años?
SELECT * FROM cliente
WHERE nombre LIKE “%O” AND edad > 30 ;
21 Obtén un
listado en el que aparezcan los programas cuya versión finalice por una letra
i, o cuyo nombre comience por una A o por una W:
SELECT * FROM programa
WHERE version LIKE “%i” OR nombre LIKE “A%” OR nombre LIKE “W%” ;
22 Obtén un
listado en el que aparezcan los programas cuya versión finalice por una letra
i, o cuyo nombre comience por una A y termine por una S.
SELECT nombre, version
FROM programa
WHERE version LIKE
"%i"
OR nombre LIKE
"A%S" ;
23 Obtén un
listado en el que aparezcan los programas cuya versión finalice por una letra
i, y cuyo nombre no comience por una A.
SELECT nombre, version
FROM programa
WHERE version LIKE
"%i"
AND nombre NOT LIKE
"A%" ;
24 Obtén una
lista de empresas por orden alfabético ascendente.
SELECT * FROM comercio
ORDER BY nombre ASC ;
25 Genera un
listado de empresas por orden alfabético descendente:
SELECT nombre FROM comercio ORDER BY nombre DESC ;
26 Obtén un
listado de programas por orden de versión:
SELECT * FROM programa
ORDER BY version ;
27 Genera un
listado de los programas que desarrolla Oracle.
SELECT
programa.* FROM fabricante, desarrolla, programa
WHERE
fabricante.id_fab=desarrolla.id_fab
AND
desarrolla.codigo=programa.codigo
AND fabricante.nombre="ORACLE"
;
28 ¿Qué
comercios distribuyen Windows?
SELECT
comercio.nombre FROM comercio, distribuye, programa
WHERE comercio.cif =
distribuye.cif
AND distribuye.codigo =
programa.codigo
AND programa.nombre =
"Windows" ;
29 Genera un
listado de los programas y cantidades que
ha distribuido El
Corte Inglés
de Madrid:
SELECT
programa.nombre,distribuye.cantidad FROM comercio, distribuye, programa
WHERE
comercio.cif = distribuye.cif
AND
distribuye.codigo = programa.codigo
AND
comercio.nombre=”El Corte Inglés” ;
30 ¿Qué
fabricante ha desarrollado Freddy Hardest?
SELECT
fabricante.nombre FROM fabricante,desarrolla,programa
WHERE
fabricante.id_fab = desarrolla.id_fab
AND
desarrolla.codigo = programa.codigo
AND
programa.nombre=”Freddy Hardest” ;
31 Selecciona
el nombre de los programas que se registran por Internet:
SELECT DISTINCT
programa.nombre FROM programa, registra
WHERE
programa.codigo = registra.codigo
AND medio =
“Internet” ;
32 Selecciona
el nombre de las personas que se registran por Internet.
SELECT
cliente.nombre FROM cliente, registra
WHERE
cliente.dni = registra.dni
AND medio = “INTERNET” ;
33 ¿Qué
medios ha utilizado para registrarse Pepe Pérez?
SELECT medio
FROM registra, cliente
WHERE
registra.dni = cliente.dni
AND nombre =
“Pepe Pérez” ;
34 ¿Qué
usuarios han optado por Internet como medio de registro?
SELECT
cliente.nombre FROM cliente, registra
WHERE
cliente.dni = registra.dni
AND medio =
“Internet” ;
35 ¿Qué
programas han recibido registros por tarjeta postal?
SELECT
programa.nombre FROM programa, registra
WHERE
programa.codigo = registra.codigo
AND medio =
“tarjeta postal” ;
36 ¿En qué
localidades se han vendido productos que se han registrado por
Internet?
SELECT
comercio.ciudad FROM comercio, distribuye, programa, registra
WHERE
comercio.cif = distribuye.cif
AND
distribuye.codigo = programa.codigo
AND
programa.codigo =registra.codigo
AND
registra.medio = "INTERNET" ;
37 Obtén un
listado de los nombres de las personas que se han registrado por
Internet,
junto al nombre de los programas para los que ha efectuado el
registro:
SELECT
cliente.nombre, programa.nombre FROM cliente, registra, programa
WHERE
cliente.dni = registra.dni
AND
registra.codigo = programa.codigo
AND
registra.medio = "INTERNET" ;
38 Genera un
listado en el que aparezca cada cliente junto al programa que ha
registrado,
el medio con el que lo ha hecho y el comercio en el que lo ha
adquirido:
Nota: se ha
ampliado la consulta para que se vea que son tuplas distintas (no repetidas)
SELECT
cliente.nombre, programa.nombre, programa.version, registra.medio,
comercio.nombre, comercio.ciudad FROM cliente, registra, programa, distribuye,
comercio
WHERE
cliente.dni = registra.dni
AND
registra.codigo = programa.codigo
AND programa.codigo
= distribuye.codigo
AND
distribuye.cif = comercio.cif ;
39 Genera un
listado con las ciudades en las que se pueden obtener los productos de
Oracle.
SELECT
DISTINCT comercio.ciudad FROM comercio, distribuye, programa, desarrolla,
fabricante
WHERE
comercio.cif=distribuye.cif
AND
distribuye.codigo = programa.codigo
AND
programa.codigo = desarrolla.codigo
AND
desarrolla.id_fab = fabricante.id_fab
AND
fabricante.nombre = "ORACLE" ;
40 Obtén el
nombre de los usuarios que han registrado Access XP:
SELECT
cliente.nombre FROM cliente, registra, programa
WHERE
cliente.dni = registra.dni
AND
registra.codigo = programa.codigo
AND
programa.nombre = "Access"
AND
programa.version = "XP" ;
41 Nombre de
aquellos fabricantes cuyo país es el mismo que ʻOracleʼ. (Subconsulta):
SELECT nombre FROM
fabricante
WHERE pais = (SELECT
pais FROM fabricante WHERE nombre = "ORACLE" ) ;
42 Nombre de
aquellos clientes que tienen la misma edad que Pepe Pérez.(Subconsulta):
SELECT nombre
FROM cliente WHERE edad = (SELECT edad FROM cliente WHERE nombre = "Pepe
Pérez") ;
43 Genera un
listado con los comercios que tienen su sede en la misma ciudad que tiene el
comercio ʻFNACʼ. (Subconsulta):
SELECT nombre
FROM comercio WHERE ciudad = (SELECT ciudad FROM comercio WHERE nombre =
"FNAC") ;
44 Nombre de
aquellos clientes que han registrado un producto de la misma forma que el
cliente ʻPepe Pérezʼ. (Subconsulta):
SELECT
DISTINCT cliente.nombre FROM cliente, registra
WHERE
cliente.dni = registra.dni
AND medio IN
(SELECT DISTINCT
medio FROM cliente, registra WHERE cliente.dni = registra.dni AND
cliente.nombre = "Pepe Pérez" ) ;
45 Obtener el
número de programas que hay en la tabla programas.
SELECT COUNT(codigo)
FROM programa ;
46 Calcula el
número de clientes cuya edad es mayor de 40 años.
SELECT COUNT(dni) FROM
cliente WHERE edad > 40 ;
47 Calcula el
número de productos que ha vendido el establecimiento cuyo CIF es 1.
SELECT
SUM(cantidad) FROM distribuye WHERE cif = 1 ;
48 Calcula la
media de programas que se venden cuyo código es 7.
SELECT
AVG(cantidad) FROM distribuye,programa
WHERE
distribuye.codigo = programa.codigo
AND
programa.codigo = 7 ;
49 Calcula la
mínima cantidad de programas de código 7 que se ha vendido
SELECT
MIN(cantidad) FROM distribuye,programa
WHERE
distribuye.codigo = programa.codigo
AND
programa.codigo = 7 ;
50 Calcula la
máxima cantidad de programas de código 7 que se ha vendido.
SELECT
MAX(cantidad) FROM distribuye,programa
WHERE
distribuye.codigo = programa.codigo
AND
programa.codigo = 7 ;
51 ¿En
cuántos establecimientos se vende el programa cuyo código es 7?
SELECT
COUNT(comercio.cif) FROM comercio,distribuye
WHERE
distribuye.cif = comercio.cif
AND
distribuye.codigo = 7 ;
52 Calcular
el número de registros que se han realizado por Internet.
SELECT COUNT(dni) FROM
registra
WHERE
medio="INTERNET" ;
53 Obtener el
número total de programas que se han vendido en ʻsevillaʼ.
SELECT
SUM(distribuye.cantidad) FROM comercio,distribuye
WHERE
comercio.cif=distribuye.cif
AND
comercio.ciudad="SEVILLA" ;
54 Calcular
el número total de programas que han desarrollado los fabricantes cuyo país es
ʻEstados Unidosʼ.
SELECT
COUNT(programa.codigo) FROM fabricante, desarrolla, programa
WHERE
fabricante.id_fab=desarrolla.id_fab
AND
desarrolla.codigo=programa.codigo
AND
fabricante.pais="Estados Unidos" ;
55 Visualiza
el nombre de todos los clientes en mayúscula. En el resultado de la consulta
debe aparecer también la longitud de la cadena nombre.
SELECT
UPPER(nombre), LENGTH(nombre) FROM cliente ;
56 Con una
consulta concatena los campos nombre y versión de la tabla PROGRAMA.
SELECT CONCAT(nombre," ",version)
FROM programa ;
No hay comentarios:
Publicar un comentario