Fundamentos de las Bases de Datos, grados I. Informática e I. Multimedia
1
Fundamentos de las bases de datos
Ejercicios de práctica SQL resueltos
T02.001- Obtén toda la información de los usuarios
select * from usuario;
T02.002- Lista los email y nombre y apellidos de los usuarios
select email,nombre,apellidos from usuario
T02.003- Lista los email y nombre y apellidos de los usuarios ordenados por email
select email,nombre,apellidos
from usuario
order by email;
T02.004- Lista los email y nombre y apellidos de los usuarios ordenados por apellidos y nombre
select email,nombre,apellidos
from usuario
order by apellidos,nombre;
T02.005- Lista los email y nombre y apellidos de los usuarios ordenados ascendentemente por
apellidos y descendentemente por nombre
select email,nombre,apellidos
from usuario
order by apellidos,nombre desc;
T02.006- Lista los email y nombre y apellidos de los usuarios en orden descendente de apellidos y
nombre
select email,nombre,apellidos
from usuario
order by apellidos desc, nombre desc;
T02.007- DNI,email,nombre y apellidos de los usuarios de la provincia de Asturias (código 33).
select dni,email,nombre,apellidos
BDgite, DLSI, Universidad de Alicante
Fundamentos de las Bases de Datos, grados I. Informática e I. Multimedia
2
from usuario
where provincia='33';
Solución alternativa:
select dni,email,u.nombre,apellidos
from usuario u, provincia pv
where u.provincia=codp and pv.nombre='Asturias';
El código de las localidades y de las provincias es texto, no número.
T02.008- Toda la información (código y nombre) de las provincias de las que se tienen usuarios
select pv.*
from usuario u, provincia pv
where u.provincia=codp;
T02.009- Toda la información (código y nombre) de las provincias de las que se tienen usuarios,
eliminando duplicados y ordenando por nombre
select distinct pv.*
from usuario u, provincia pv
where u.provincia=codp
order by pv.nombre;
Solución alternativa:
select distinct pv.*
from usuario u, provincia pv
where u.provincia=codp
order by 2;
T02.010- Email de los usuarios de la provincia de Murcia que no tienen teléfono, acompañado en la
salida por un mensaje que diga "No tiene teléfono"
select email,'No tiene teléfono'
from usuario u, provincia pv
where u.provincia=codp and pv.nombre = 'Murcia'
and telefono is null;
T02.011- Marcas
select * from marca;
T02.012- Artículos que no tienen marca
select * from articulo where marca is null
BDgite, DLSI, Universidad de Alicante
Fundamentos de las Bases de Datos, grados I. Informática e I. Multimedia
3
T02.013- Código de los artículos que pertenecen a algún pack.
select articulo
from ptienea;
T02.014- Número de pack, nombre y precio del mismo.
select p.cod,nombre,pvp
from articulo a, pack p
where a.cod = p.cod
T02.015- Código, nombre y marca de los articulos que pertenecen a algún pack.
select articulo,nombre,marca
from articulo, ptienea
where cod = articulo
T02.016- Código y precio de venta de los artículos solicitados en el pedido número 1.
select articulo,precio
from linped
where numpedido=1
T02.017- Código, nombre, marca, pvp y precio de venta de los artículos solicitados en el pedido número
1.
select articulo,nombre,marca,pvp,precio
from linped l, articulo a
where numpedido=1
and a.cod=l.articulo
T02.018- Código, nombre, marca, pvp y precio de venta de los artículos solicitados en el pedido número
1 que sean televisores.
select articulo,nombre,marca,pvp,precio
from linped l, articulo a, tv t
where numpedido=1
and a.cod=l.articulo
and a.cod=t.cod
T02.019- Fecha y usuario del pedido, código, nombre, marca, pvp y precio de venta de los artículos
solicitados en el pedido número 1 que sean televisores.
select fecha,usuario,articulo,nombre,marca,pvp,precio
BDgite, DLSI, Universidad de Alicante
Fundamentos de las Bases de Datos, grados I. Informática e I. Multimedia
4
from linped l, articulo a, tv t, pedido p
where l.numpedido=1 and l.numpedido = p.numpedido
and a.cod=l.articulo
and a.cod=t.cod
T02.021- Código,nombre y precio de venta al público de los artículos de menos de 100€; la salida ha de
ser código, nombre, "tiene el precio de", pvp.
select cod,nombre,'tiene el precio de',pvp from articulo where pvp < 100
T02.022- Código, sensor y pantalla de las cámaras, si es que "pantalla" tiene valor, ordenado por código
descendentemente;
select cod,sensor,pantalla
from camara
where pantalla is not null order by cod desc;
T02.023- Panel de los televisores de 21 pulgadas o menos de pantalla, eliminando duplicados.
select distinct panel
from tv
where pantalla <= 21;
T02.024- Código, nombre, marca y precio de venta al público de los artículos que tienen ese precio
entre 350 y 450.
select cod, nombre, marca, pvp
from articulo
where pvp >=350 and pvp <= 450;
T02.025- Número de pack, nombre y precio del mismo, y código, nombre y pvp de los artículos que
pertenezcan a ellos.
select p.cod, a1.nombre, a1.pvp, a2.cod, a2.nombre, a2.pvp
from articulo a1, pack p, ptienea pp, articulo a2
where a1.cod = p.cod
and pp.pack = p.cod
and pp.articulo = a2.cod
BDgite, DLSI, Universidad de Alicante
Fundamentos de las Bases de Datos, grados I. Informática e I. Multimedia
5
T03.001- Código y nombre de los articulos con un precio entre 400 y 500 euros.
select cod,nombre from articulo where pvp between 400 and 500;
Solución alternativa:
select cod,nombre from articulo where pvp >= 400 and pvp <= 500;
T03.002- Código y nombre de los articulos con precio 415, 129, 1259 o 3995.
select cod,nombre from articulo
where pvp in (415, 129, 1259, 3995);
Solución alternativa:
select cod,nombre from articulo
where pvp = 415 or pvp = 129 or pvp = 1259 or pvp = 3995;
T03.003- Código y nombre de las provincias que no son Huelva, Sevilla, Asturias ni Barcelona.
select codp,nombre from provincia
where nombre not in ('huelva', 'sevilla', 'asturias', 'barcelona');
Solución alternativa:
select codp,nombre from provincia
where nombre != 'huelva' and nombre != 'sevilla'
and nombre != 'asturias'and nombre != 'barcelona';
T03.004- Código de la provincia Alicante.
select codp from provincia
where nombre like 'Alicante%';
T03.005- Obtener el código, nombre y pvp de los articulos cuya marca comience por S.
select cod, nombre, pvp from articulo where marca like 'S%'
T03.006- Información sobre los usuarios cuyo email es de la eps.
select * from usuario where email like '%@eps.%'
T03.007- Código, nombre y resolución de los televisores cuya pantalla no esté entre 22 y 42.
select a.cod, nombre, resolucion
from articulo a, tv
where a.cod=tv.cod and pantalla not between 22 and 42;
BDgite, DLSI, Universidad de Alicante
Fundamentos de las Bases de Datos, grados I. Informática e I. Multimedia
6
T03.008- Código y nombre de los televisores cuyo panel sea tipo LED y su precio no supere los 1000
euros.
select t.cod, nombre from tv t, articulo a where t.cod=a.cod and panel like '%LED%' and
pvp<=1000;
T03.009- Email de los usuarios cuyo código postal no sea 02012, 02018 o 02032.
select email from usuario
where codpos not in ('02012','02018','02032');
T03.010- Código y nombre de los packs de los que se conoce qué articulos los componen.
select distinct cod, nombre
from articulo, ptienea
where pack=cod;
T03.011- ¿Hay algún artículo en cesta que esté descatalogado?
select *
from cesta c, stock s
where c.articulo=s.articulo
and entrega='descatalogado';
T03.012- Código, nombre y pvp de las cámaras de tipo compacta.
select a.cod, nombre, pvp
from articulo a, camara c
where a.cod=c.cod and tipo like'%compacta%';
T03.013- Código, nombre y diferencia entre pvp y precio de los articulos que hayan sido solicitados en
algún pedido a un precio distinto de su precio de venta.
select cod, nombre, pvp-precio
from articulo, linped
where cod=articulo and pvp<>precio;
T03.014- Número de pedido,fecha y nombre y apellidos del usuario que solicita el pedido, para aquellos
pedidos solicitados por algún usuario de apellido MARTINEZ.
select numpedido, fecha, nombre, apellidos
from pedido, usuario
where usuario=email and apellidos like'%MARTINEZ%'
BDgite, DLSI, Universidad de Alicante
Fundamentos de las Bases de Datos, grados I. Informática e I. Multimedia
T03.015- Código, nombre y marca del artículo más caro.
select cod, nombre, marca, pvp
from articulo
where pvp = (select max(pvp) from articulo);
Solución alternativa:
select cod, nombre, marca, pvp
from articulo
where pvp >= all (select pvp from articulo);
La solución alternativa no funciona por un "bug" de la versión instalada del motor MySQL.
T03.016- Nombre, marca y resolucion de las cámaras que nunca se han solicitado.
select nombre, marca, resolucion
from articulo a, camara c
where a.cod=c.cod and
c.cod not in (select articulo from linped);
T03.017- Código, nombre, tipo y marca de las cámaras de marca Nikon, LG o Sigma.
select a.cod, nombre, tipo, marca
from articulo a, camara c
where a.cod=c.cod and marca in ('NIKON','LG','SIGMA');
T03.018- Código, nombre y pvp de la cámara más cara de entre las de tipo réflex.
select a.cod, nombre, pvp
from articulo a, camara c
where a.cod=c.cod
and tipo like '%reflex%'
and pvp=(
select max(pvp)
from articulo a, camara c
where a.cod=c.cod and tipo like '%reflex%');
Solución alternativa:
select a.cod, nombre, pvp
from articulo a, camara c
where a.cod=c.cod and tipo like'%réflex%'
and pvp >= all (select pvp from articulo a, camara c
where a.cod=c.cod and tipo like'%réflex%');
BDgite, DLSI, Universidad
Comentarios de: Fundamentos de las Bases de Datos (0)
No hay comentarios