Anda di halaman 1dari 8

DML1

1.

Quiero saber el nombre y telfono de todos los clientes


SELECT nombre, telefono
FROM CLIENTES
2. Quiero saber todas las matrculas, marcas y modelos de los vehculos del taller ordenados por marca
SELECT matricula, marca, modelo
FROM VEHICULOS
ORDER BY marca
3.

Quiero saber las caracteristicas, fecha de reparacion y coste de las averias del coche con matricula
LO4499P ordenadas de mayor a menor coste
SELECT caracteristicas, fecha_reparacion, coste
FROM AVERIAS
WHERE matricula=LO4499P
ORDER BY coste DESC
4.

Dime el nombre del personal que su telfono empieza por 6


SELECT nombre
FROM PERSONAL
WHERE telefono LIKE 6%

5. Cuntos vehculos han pasado por mi taller?


SELECT COUNT(matricula)
FROM VEHICULOS
6. Cuntos vehculos han pasado por taller del cliente Carlos?
SELECT COUNT(*)
FROM VEHICULOS v, CLIENTES c
WHERE v.cod_cliente=c.cod_cliente
AND c.nombre=Carlos
7. Matrculas y fecha de reparacin de los coches reparados por Fernando
SELECT Matricula, Fecha_reparacion
FROM AVERIAS, PERSONAL
WHERE dni=mecanico
AND nombre=Fernado
8.

Cuntos vehculos han pasado por taller agrupados por marca del cliente Carlos?
SELECT COUNT(marca),marca
FROM VEHICULOS v, CLIENTES c
WHERE v.cod_cliente=c.cod_cliente
AND c.nombre=Carlos
GROP BY marca
9. Quiero saber cuntos empleados que se llaman Pedro.
SELECT COUNT(nombre)
FROM PERSONAL
WHERE nombre=Pedro
10. Quiero saber matrcula y modelo de coches de la marca OPEL que ha arreglado Pedro.
SELECT modelo, matricula
FROM AVERIAS a , PERSONAL p , VEHICULOS v
WHERE p.dni = a.mecanico AND v.matricula=a.matricula
AND nombre=Pedro AND marca=Opel
11. Quiero saber los modelos y fecha de reparacin de coches de la marca OPEL que ha arreglado Pedro.
SELECT modelo,fecha_reparacion
FROM VEHICULOS v, AVERIAS a, PERSONAL p
WHERE v.matricula=a.matricula AND p.dni=a.mecanico
AND p.nombre=Pedro AND v.marca=Opel;

12. Quiero saber el nombre del propietario, el modelos y la fecha de reparacin de coches de la marca
MERCEDES que ha arreglado Pedro.
SELECT c.nombre,modelo,fecha_reparacion
FROM CLIENTES c, VEHICULOS v, AVERIAS a, PERSONAL p
WHERE c.cod_cliente=v.cod_cliente AND v.matricula=a.matricula AND p.dni=a.mecanico
AND p.nombre=Pedro AND v.marca=MERCEDES;
13. Cal es el coste de la avera ms cara?
SELECT max(coste)
FROM AVERIAS
14. Cal ha sido la media de coste de las averas?
SELECT AVG(coste) FROM AVERIAS
15. Dime los datos de la avera ms barata.
SELECT * FROM AVERIAS
WHERE coste=MIN(coste)
16. Cuntas averas se repararon el 14/11/2014?
SELECT COUNT (fecha_reparacion)
FROM AVERIAS
WHERE fecha_reparacion=14/11/2014;
17. Cuntas averas repar el 14/11/2014 el mecanico Pedro?
SELECT COUNT (cod_averia)
FROM AVERIAS a, PERSONAL p
WHERE p.dni=a.mecanico
AND fecha_reparacion=14/11/2014 AND nombre=Pedro;
18. Dime la matrcula del coche, caractersticas de la avera, coste y descripcin de la reparacin de todas
las averas a partir del 01/01/2014 ordenadas de las ms caras a las ms baratas.
SELECT matricula, caracteristicas, coste, descripcion_reparacion
FROM AVERIAS
WHERE fecha_reparacion >=01/01/2014
ORDER BY coste DESC
19. Quiero saber el nombre del cliente, la matricula, la fecha de reparacin y el coste de las averias de los
coches de Manolo y Luisa cuyo coste es superior a 100
SELECT C.nombre, V.matricula, A.fecha_reparacion, A.coste
FROM CLIENTES C, VEHICULOS V, AVERIAS A
WHERE V.matricula=A.matricula AND C.cod_cliente=V.cod_cliente
AND C.nombre IN (Manolo, Luisa)
AND A.coste >100
20. De cantas piezas tengo una cantidad inferior a 10 en el taller?
SELECT COUNT (cod_pieza)
FROM PIEZAS
WHERE cantidad <10
AND en_taller =TRUE
21. Cual es la pieza ms cara que tengo en el taller?
SELECT cod_pieza
FROM PIEZAS
WHERE precio = MAX (precio)
22. En cuantas reparaciones hemos escrito en la descripcin de la misma la palabra Buja?
SELECT COUNT (descripcion_reparacion)
FROM AVERIAS
WHERE descripcion_reparacion LIKE %Buja%;

23. Queremos saber la fecha de reparacin, coste y matrcula de las averas realizadas por Rubn a coches
de Juan o de Manuel
SELECT fecha_reparacion, coste, a.matricula
FROM CLIENTES c, VEHICULOS v, AVERIAS a, PERSONAL p
WHERE c.cod_cliente = v.cod_cliente
AND v.matricula = a.matricula
AND mecanico = dni
AND p.nombre = Rubn
AND (c.nombre = Juan OR c.nombre = Manuel);
24. Dime todos los datos de la avera ms cara
SELECT * FROM AVERIAS
WHERE coste=MAX(coste)

25. Dime el nombre y telfono de los clientes que empieza su nombre por CA o que se llamen Mara y su
telefono sea el +346578987
SELECT nombre, telefono
FROM CLIENTES
WHERE nombre LIKE CA%
OR (nombre=Mara AND telefono=+346578987)

DML2

1. Todos los de mexico, de madrid y de barcelona


SELECT * FROM Customers
WHERE country='Mexico' or city in ('Madrid','Barcelona')
9 rows
2. Todos que comience su nombre por 'Ana' y sean de 'UK'
SELECT * FROM Customers
where CustomerName like 'Ana%' and country='UK'
0 rows
3. Todos que comience su nombre por 'Ana' y sean de 'Mexico'
SELECT * FROM Customers
where CustomerName like 'Ana%' and country='Mexico'
1 row
4. todos los de UK o los que su nombre empiece por A
y sean de Mexico
SELECT * FROM Customers
where country='UK' OR (ContactName like 'A%' AND Country='Mexico')
5. Quiero saber cual es el precio ms caro de cada categoria de productos
y tenerlos ordenados de ms caro a ms barato
SELECT max(price) as maximo,categoryId
FROM products
GROUP BY categoryId
order by 1 desc
--Borrar todos los productos de la categora "Confections"
DELETE FROM Products
WHERE CategoryID IN
(SELECT distinct p.CategoryID FROM Categories c, Products p
where p.CategoryId=c.CategoryId and categoryname='Beverages')

DML3
1.
Quiero saber las notas y fecha que ha sacado Jose Luis Fenoy en la asignatura Bases de Datos
SELECT es.mark, e.date
FROM exams_students es , exams e, students s, subjetcs d
WHERE es.studentID=s.studentID AND d.subjetccode=e.subjectcode AND e.examID= es.examID AND
s.name=Jose Luis AND s.surname=Fenoy AND d.description=Bases de datos
2.

Quiero saber la mxima nota que se ha obtenido en cualquiera de los exmenes realizados por los
alumnos
SELECT MAX (mark) FROM EXAMS_STUDENTS
3.

Quiero saber el nombre del profesor que ha diseado la Prctica 2, de qu tipo es y qu dificultad
tiene.
SELECT t.NAME , p.Type , p.Difficulty
FROM TEACHERS t , PRACTICES p , PRACTICES_TEACHERS pt
WHERE t.Teachercard = p.Teachercard AND p.Practiceid = pt.Practiceid AND p.Practicename = Practica 2
4.

Dime la media de las notas de las prcticas de dificultad 2 de Milen Yordanov que haya realizado en el
ao 2014.
SELECT AVG(MARK) FROM PRACTICE_STUDENTS ps, STUDENTS s, PRACTICES p
WHERE p.Practiceid = ps.Practiceid AND ps.Studentid = s.Studentid AND s.Name =Milen AND s.Surname=
Yordanov AND p.difficulty = 2 AND ps.date between 2014-01-01 AND 2014-12-31

5.

Dime el nombre de los estudiantes que tengan prcticas de tipo group aprobadas y que las hayan
diseado profesores cuyo nombre empieza por C
SELECT s.name
FROM STUDENTS s, PRACTICES_STUDENTS ps, PRACTICES p, PRACTICES_TEACHERS pt,
TEACHERS t
WHERE s.studentid=ps.studentid AND ps.practiceid=p.practiceid
AND p.practiceid=pt.practiceid AND pt.teachercard=t.teachercard
AND p.type=group AND mark>=5 AND t.name LIKE C%;
6. Quiero insertar la asignatura Free Operating Systems con el cdigo FOS
INSERT INTO SUBJECTS (subjectcode,description)
VALUES (FOS,Free Operating Systems);
7. Quiero aadir al profesor Andrs Muoz
INSERT INTO TEACHERS (teachercard, name, surname)
VALUES (Boss002, Andres, Muoz);
8. Quiero aadir un examen de la asignatura que acabo de aadir de 10 preguntas.
INSERT INTO EXAMS (questions, date, subjectcode)
VALUES (10, getdate(), FOS);
9. En este examen, Kenan ha sacado un 6,5.
INSERT INTO EXAMS_STUDENTS (studentid, examid, mark)
VALUES ((select studentid from students where name=Kenan), (select examid from exams where
subjectcode=FOS), 6.5);

10. El 15 de enero el profesor Andrs Muoz dise la prctica 4 individual de dificultad alta (3)
INSERT INTO PRACTICES (TYPE, PRACTICENAME, DIFICULTY)
VALUES (INDIVIDUAL,PRACTICA 4,3)
INSERT INTO PRACTICES_TEACHERS (TEACHERCARD, PRACTICEID,DATE)
VALUES ((select teachercard from teachers where name=Andrs and surname=Muoz),(select practiceid from
practices where practicename=Practica 4 and type=individual),01/15/2015)

11.

Quiero actualizar todas las notas de los exmenes de los alumnos que hayan suspendido y poner en la
nota un 4.
UPDATE EXAMS_STUDENTS
SET mark=4 WHERE mark < 5
12. Quiero actualizar la fecha de las prcticas que se han hecho en el 2014 al 1 de enero de 2014 y las
prcticas que se han hecho en 2015 a 1 de enero de 2015
UPDATE PRACTICES_STUDENTS
SET date=2014-01-01
WHERE date BETWEEN 2014-01-01 AND 2014-12-31
UPDATE PRACTICES_STUDENTS
SET date=2015-01-01 WHERE year(date)=2015

13. Quiero poner que las prcticas en las que la nota media de la misma sea menos de 5 que su dificultad es
4 (muy alta)
UPDATE PRACTICES
SET difficulty = 4
WHERE practiceid IN (SELECT practiceid FROM PRACTICES_STUDENTS
GROUP BY practiceid having AVG (mark) < 5 )
14. Quiero actualizar todas las prcticas a dificultad 1 y tipo group para todas las prcticas que fueran
group y dificultad 2 o dificultad 3.
UPDATE PRACTICES
SET difficulty = 1, type = group
WHERE type = group AND (difficulty =2 OR difficulty = 3)
15. Todos los profesores que su identificador no empiece por BOS tenemos que aadrselo al principio.
UPDATE TEACHERS
SET teachercard=BOS + teachercard
WHERE teachercard NOT LIKE BOS%

16. Borra los exmenes de los alumnos en los que la nota sea menor de 5
DELETE FROM exams_stundents WHERE mark <5
17. Borra las prcticas que haya hecho Pablo Zrate de tipo grupal
DELETE FROM practices WHERE practiceid IN (SELECT practiceid FROM practices_teachers WHERE
teachercard = (SELECT teachercard FROM teachers WHERE name=Pablo AND surname=Zarate)) AND
type=group
DELETE FROM practices
WHERE practiceid IN (SELECT practiceid FROM practices_teachers pt, teachers t WHERE t.teachercard =
pt.teachercard and name=Pablo AND surname=Zarate) AND type=group
18. Borra los exmenes de agosto de la asignatura Bases de Datos
DELETE FROM EXAMS WHERE month (date)=8 AND subjectcode=(SELECT subjectcode FROM subjects
WHERE description=bases de datos);
19. Borra todos los exmenes que tengan menos de 5 preguntas y que tengan fecha nulla
DELETE FROM EXAMS WHERE questions <5 AND DATE IS null
20. Borra las prcticas del alumno Milen que haya preparado el profesor Cesar
DELETE FROM Practices_Students
WHERE Studentid= (SELECT Studentid FROM STUDENTS WHERE name=Milen)
AND Practiceid IN (SELECT Practiceid FROM PRACTICES_TEACHERS
WHERE Teachercard=(SELECT Teachercard FROM TEACHERS WHERE name=Cesar))

DML 4
1.
Vamos a aadir las marcas Mercedes-Benz, Opel y Renault
INSERT INTO BRANDS (brandid, description)
VALUES ('OPE', 'Opel'), ('REN', 'Renault'), ('MBZ', 'Mercedes-Benz')
2. Aadimos los extras pintura metalizada, climatizador y navegador
INSERT INTO EXTRAS (extraid, name, description)
VALUES ('PIN', 'pintura', 'pintura metalizada'),('CLI', 'climatizador', 'aire acondicionado'),('NAV', 'navegador',
'gps')
3.

Aadimos al catlogo el Mercedes modelo clase C de 1800 cc y de precio 36000 y el Mercedes modelo
clase A de 1600 cc y de precio 21000
INSERT INTO CATALOG ( brand, model, cc, price)
VALUES ('MBZ', 'Clase C', '1800', '36000'),('MBZ', 'Clase A', '1600', '21000')
4. Aadimos al catlogo el Renault Twingo 1200 cc y de precio 9000
INSERT INTO CATALOG (brand, model, cc, price)
VALUES ('REN', 'Twingo', '1200', '9000')
5. Aadimos al catlogo el Opel Vectra 2000 cc y de precio 22500
INSERT INTO CATALOGS (brand, model, cc, price)
VALUES ('OPE', 'Vectra','2000', '22500')
6.

Aadimos el extra del climatizador al Mercedes clase A que vale 600

INSERT INTO CATALOG_EXTRAS (catalogid, extraid, price)


VALUES ((SELECT catalogid FROM CATALOG WHERE model=Clase A),(SELECT extraid FROM EXTRAS WHERE
name=Climatizador),600)
7. Aadimos el extra del climatizador al Opel Vectra que vale 700
INSERT INTO CATALOG_EXTRAS (catalogid, extraid, price)
VALUES ((SELECT catalogid FROM CATALOG WHERE model=Vectra),(SELECT extraid FROM EXTRAS WHERE
name=Climatizador),700)
8. Aadimos el extra del navegador al clase C que vale 900
INSERT INTO CATALOG_EXTRAS (catalogid, extraid, price)
VALUES ((SELECT catalogid FROM CATALOG WHERE model=Clase C),(SELECT extraid FROM EXTRAS WHERE
name=Navegador),900)
9. Aadimos el extra de pintura metalizada al Renault Twingo 500
INSERT INTO CATALOG_EXTRAS (catalogid, extraid, price)
VALUES ((SELECT catalogid FROM CATALOG WHERE model=Twingo),(SELECT extraid FROM EXTRAS WHERE
description LIKE %pintura metalizada%),500)
10. Aadimos dos vendedores: Miguel ngel y Carolina
INSERT INTO SELLERS (SellerID, Name)
VALUES ('Sel001', 'Miguel Angel'), ('Sel002', 'Carolina')
--AVISO. Cuidado con valores requeridos y que la longitud de nuestro campos no sea menor a los valores que
insertamos
11. Aadimos 4 compradores: Juan, Javier, Mara y Manuel
INSERT INTO CUSTOMERS (CustomerId, Name, telephone)
VALUES ('Cus001', 'Juan','65897894'), ('Cus002', 'Javier','65897894'),
('Cus003','Maria','65897894'),('Cus004', 'Manuel','65897894')

12. Aadimos las siguientes ventas:


a.
Miguel ngel vende a Juan un clase A de matrcula 1234HBX el 01/10/2014 sin ningn extra
INSERT INTO SELLS (SellerId, CustomerID, Plate,date,CatalogId)
VALUES (
(select SellerId from SELLERS WHERE name = 'Miguel Angel'),
(select CustomerId from CUSTOMERS WHERE name= 'Juan'),
'1234HBX','2014-10-01',
(select CatalogId from CATALOG WHERE model like '%clase A%'))
b.

Miguel ngel vende a Javier un Twingo de matricula 2345HGB el 10/10/2014 con pintura
metalizada
insert into SELLS(sellerid,customerid,plate,date,catalogid)
values ((select sellerid from SELLERS where name='Miguel Angel'),
(select customerid from CUSTOMERS where name='Javier'),
'2345HGB',
'2014-10-01',
(select catalogid from CATALOG where model like'%twingo%'))
insert into EXTRAS_SELLS (catextraid,plate)
values
((select catextrasid from CATALOG_EXTRAS ce, CATALOG c, EXTRAS e
where c.catalogid=ce.catalogid
and ce.extraid=e.extraid
and c.model like '%twingo%'
and e.name like '%pintura%'),'2345HGB')
c.

Miguel ngel vende a Mara un clase de A de matrcula 1231DFG el 01/02/2015 con


climatizador
insert into SELLS(sellerid,customerid,plate,date,catalogid)
values ((select sellerid from SELLERS where name='Miguel Angel'),
(select customerid from CUSTOMERS where name='Maria'),
'1231DFG',
'2015-02-01',
(select catalogid from CATALOG where model like '%clase A%'))
insert into EXTRAS_SELLS (catextraid,plate)
values
((select catextrasid from CATALOG_EXTRAS ce, CATALOG c, EXTRAS e
where c.catalogid=ce.catalogid
and ce.extraid=e.extraid
and c.model like '%clase A%'
and e.name like '%clima%'),'1231DFG')
d.

Carolina vende a Manuel un Opel Vectra de matrcula 3422GHH el 23/10/2014

e.

Carolina vende a Manuel un clase C de matrcula 3421GHH el 23/01/2015 con navegador

13. Quiero saber el nmero de coches que ha vendido Miguel ngel en 2014
select COUNT (*) from SELLS v, SELLERS s
where v.sellerid=s.sellerid and name='miguel angel' and YEAR (date)=2014
14. Cuntos coches han comprado clientes que empiecen por J
SELECT COUNT(S.plate) FROM SELLS S, CUSTOMERS C
WHERE S.customerid = C.customerid AND C.name LIKE 'J%'

15. Quiero saber cuntos coches tengo en el catlogo por marca (5 mercedes, 2 renault)
SELECT COUNT (brand),brand
FROM CATALOG
GROUP BY brand
SELECT COUNT (description),description

FROM CATALOG c, BRANDS b


where b.brandid=c.brand
GROUP BY description
16. Quiero saber cuntos coches valen ms 21000 y adems tienen ms de 1500 cc
SELECT COUNT (catalogid) FROM CATALOG
WHERE Price > 21000 AND cc > 1500

17. Quiero saber cuntos coches ha vendido cada comercial en 2014 (una sola consulta)
SELECT COUNT (plate), SE.name FROM SELLS S, SELLERS SE
WHERE
S.sellerid = SE.sellerid AND year(date) = 2014
GROUP BY SE.name
18. Quiero saber la marca y modelo de los coches que vendi Carolina en 2014. En la misma consulta quiero
ver la marca y modelo de los coches que se vendieron y que costaban ms de 20000 en 2014.
--Opcin 1
SELECT C.brand, C.model, SE.name
FROM CATALOG C, SELLS S, SELLERS SE
WHERE SE.sellerid = S.sellerid AND S.catalogid = C.catalogid
AND (SE.name = 'Carolina' OR C.price >20000 )
AND year(date) = 2014
--Opcin 2
SELECT C.brand, C.model, SE.name
FROM CATALOG C, SELLS S, SELLERS SE
WHERE SE.sellerid = S.sellerid AND S.catalogid = C.catalogid
AND SE.name = 'Carolina' AND year(date) = 2014
UNION
SELECT C.brand, C.model, SE.name
FROM CATALOG C, SELLS S, SELLERS SE
WHERE SE.sellerid = S.sellerid AND S.catalogid = C.catalogid
AND c.price>20000 AND year(date) = 2014
19. Cuntos coches se han vendido sin extras?
select COUNT(*) from SELLS
where plate not in ( select plate from EXTRAS_SELLS)
20. Cunto dinero se ha facturado en total en 2014 sin tener en cuenta los extras?
--Option1
SELECT SUM(price) FROM CATALOG c, SELLS s
WHERE s.catalogid=c.catalogid and year(date)=2014
--Option2
SELECT SUM(price) FROM CATALOG
WHERE catalogid in (select catalogid from sells where year(date)=2014)
21. Cunto dinero ha facturado cada vendedor sin tener en cuenta los extras?
--Option1
SELECT SUM(price),sellerid FROM CATALOG c, SELLS s
WHERE s.catalogid=c.catalogid and year(date)=2014
group by sellerid
--Option2
SELECT SUM(price),name FROM CATALOG c, SELLS s, SELLERS se
WHERE s.catalogid=c.catalogid and s.sellerid=se.sellerid and year(date)=2014
group by name
22. En una consulta quiero tener la matrcula, descripcin de la marca, modelo, precio, nombre del
comprador, nombre del vendedor de todas las ventas de octubre de 2014
SELECT plate, description, model, price, c.name buyer, se.name
FROM sells s, sellers se, customers c, brands b, catalog ca
WHERE s.customerid=c.customerid and s.sellerid=se.sellerid and s.catalogid=ca.catalogid
and b.brandid=ca.brand and date between '2014-10-01' and '2014-10-31'

Anda mungkin juga menyukai