































Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Asignatura: castellano, Profesor: , Carrera: Relacions Laborals i Recursos Humans, Universidad: UV
Tipo: Ejercicios
1 / 39
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!
































©c Borja Sotomayor, 2002
Este documento ha sido compuesto ´ıntegramente en LATEX.
Para producir el documento se ha utilizado pdfTEX-1.0a de la distribuci´on MiKTEX. http://www.miktex.org/
Se han utilizado los paquetes amssymb, babel, color, fancybox, fancyvrb, graphicx, hyperref, ifthen, inputenc, marvosym, scrbook y scrpage (KOMA–Script), titlesec, titletoc, pdfcrypt, y url.
Los diagramas han sido elaboradas con Microsoftr^ Visior^2002. http://www.microsoft.com/office/visio/
FABRICANTES PK Codigo int identity
Nombre nvarchar(100)
ARTICULOS PK Codigo int identity
Nombre nvarchar(100) Precio int FK1 Fabricante int
1.1. Obtener los nombres de los productos de la tienda.
SELECT Nombre FROM ARTICULOS
1.2. Obtener los nombres y los precios de los productos de la tienda.
SELECT Nombre, Precio FROM ARTICULOS
1.3. Obtener el nombre de los productos cuyo precio sea menor o igual a 200 ¤.
SELECT Nombre FROM ARTICULOS WHERE Precio > 200
1.4. Obtener todos los datos de los art´ıculos cuyo precio est´e entre los 60 ¤ y los 120 ¤ (ambas cantidades incluidas).
/* Con AND */ SELECT * FROM ARTICULOS WHERE Precio >= 60 AND Precio <= 120
/* Con BETWEEN */ SELECT * FROM ARTICULOS WHERE Precio BETWEEN 60 AND 120
1 La Tienda de Inform´atica
/* Sin INNER JOIN */ SELECT ARTICULOS.Nombre, Precio, FABRICANTES.Nombre FROM ARTICULOS, FABRICANTES WHERE ARTICULOS.Fabricante = FABRICANTES.Codigo
/* Con INNER JOIN */ SELECT ARTICULOS.Nombre, Precio, FABRICANTES.Nombre FROM ARTICULOS INNER JOIN FABRICANTES ON ARTICULOS.Fabricante = FABRICANTES.Codigo
1.12. Obtener el precio medio de los productos de cada fabricante, mostrando solo los c´odigos de fabricante.
SELECT AVG(Precio), Fabricante FROM ARTICULOS GROUP BY Fabricante
1.13. Obtener el precio medio de los productos de cada fabricante, mostrando el nombre del fabricante.
/* Sin INNER JOIN */ SELECT AVG(Precio), FABRICANTES.Nombre FROM ARTICULOS, FABRICANTES WHERE ARTICULOS.Fabricante = FABRICANTES.Codigo GROUP BY FABRICANTES.Nombre
/* Con INNER JOIN */ SELECT AVG(Precio), FABRICANTES.Nombre FROM ARTICULOS INNER JOIN FABRICANTES ON ARTICULOS.Fabricante = FABRICANTES.Codigo GROUP BY FABRICANTES.Nombre
1.14. Obtener los nombres de los fabricantes que ofrezcan productos cuyo precio medio sea mayor o igual a 150 ¤.
/* Sin INNER JOIN */ SELECT AVG(Precio), FABRICANTES.Nombre FROM ARTICULOS, FABRICANTES WHERE ARTICULOS.Fabricante = FABRICANTES.Codigo GROUP BY FABRICANTES.Nombre HAVING AVG(Precio) >= 150
/* Con INNER JOIN */ SELECT AVG(Precio), FABRICANTES.Nombre FROM ARTICULOS INNER JOIN FABRICANTES ON ARTICULOS.Fabricante = FABRICANTES.Codigo GROUP BY FABRICANTES.Nombre HAVING AVG(Precio) >= 150
Ejercicios de Bases de Datos 3
1 La Tienda de Inform´atica
1.15. Obtener el nombre y precio del art´ıculo m´as barato.
SELECT Nombre, Precio FROM ARTICULOS WHERE Precio = (SELECT MIN(Precio) FROM ARTICULOS)
1.16. Obtener una lista con el nombre y precio de los art´ıculos m´as caros de cada pro- veedor (incluyendo el nombre del proveedor).
/* Sin INNER JOIN */ SELECT A.Nombre, A.Precio, F.Nombre FROM ARTICULOS A, FABRICANTES F WHERE A.Fabricante = F.Codigo AND A.Precio = ( SELECT MAX(A.Precio) FROM ARTICULOS A WHERE A.Fabricante = F.Codigo )
/* Con INNER JOIN */ SELECT A.Nombre, A.Precio, F.Nombre FROM ARTICULOS A INNER JOIN FABRICANTES F ON A.Fabricante = F.Codigo AND A.Precio = ( SELECT MAX(A.Precio) FROM ARTICULOS A WHERE A.Fabricante = F.Codigo )
1.17. A˜nadir un nuevo producto: Altavoces de 70 ¤ (del fabricante 2)
INSERT INTO ARTICULOS( Nombre , Precio , Fabricante) VALUES ( ’Altavoces’ , 70 , 2 )
1.18. Cambiar el nombre del producto 8 a ’Impresora Laser’
UPDATE ARTICULOS SET Nombre = ’Impresora Laser’ WHERE Codigo = 8
1.19. Aplicar un descuento del 10 % (multiplicar el precio por 0’9) a todos los productos.
UPDATE ARTICULOS SET Precio = Precio * 0.
4 Ejercicios de Bases de Datos
EMPLEADOS PK DNI varchar(8)
Nombre nvarchar(100) Apellidos nvarchar(255) FK1 Departamento int
DEPARTAMENTOS PK Codigo int
Nombre nvarchar(100) Presupuesto int
2.1. Obtener los apellidos de los empleados.
SELECT Apellidos FROM EMPLEADOS
2.2. Obtener los apellidos de los empleados sin repeticiones.
SELECT DISTINCT Apellidos FROM EMPLEADOS
2.3. Obtener todos los datos de los empleados que se apellidan ’L´opez’.
SELECT * FROM EMPLEADOS WHERE Apellidos = ’L´opez’
2.4. Obtener todos los datos de los empleados que se apellidan ’L´opez’ y los que se apellidan ’P´erez’.
2 Empleados
2.11. Obtener un listado completo de empleados, incluyendo el nombre y apellidos del empleado junto al nombre y presupuesto de su departamento.
/* Sin etiquetas */ SELECT EMPLEADOS.Nombre, Apellidos, DEPARTAMENTOS.Nombre, Presupuesto FROM EMPLEADOS INNER JOIN DEPARTAMENTOS ON EMPLEADOS.Departamento = DEPARTAMENTOS.Codigo
/* Con etiquetas */ SELECT E.Nombre, Apellidos, D.Nombre, Presupuesto FROM EMPLEADOS E INNER JOIN DEPARTAMENTOS D ON E.Departamento = D.Codigo
2.12. Obtener los nombres y apellidos de los empleados que trabajen en departamentos cuyo presupuesto sea mayor de 60.000 ¤.
/* Sin subconsulta */ SELECT EMPLEADOS.Nombre, Apellidos FROM EMPLEADOS INNER JOIN DEPARTAMENTOS ON EMPLEADOS.Departamento = DEPARTAMENTOS.Codigo AND DEPARTAMENTOS.Presupuesto > 60000
/* Con subconsulta */ SELECT Nombre, Apellidos FROM EMPLEADOS WHERE Departamento IN (SELECT Codigo FROM DEPARTAMENTOS WHERE Presupuesto > 60000)
2.13. Obtener los datos de los departamentos cuyo presupuesto es superior al presupues- to medio de todos los departamentos.
SELECT * FROM DEPARTAMENTOS WHERE Presupuesto > ( SELECT AVG(Presupuesto) FROM DEPARTAMENTOS )
2.14. Obtener los nombres (´unicamente los nombres) de los departamentos que tienen m´as de dos empleados.
Ejercicios de Bases de Datos 9
2 Empleados
/* Con subconsulta / SELECT Nombre FROM DEPARTAMENTOS WHERE Codigo IN ( SELECT Departamento FROM EMPLEADOS GROUP BY Departamento HAVING COUNT() > 2 )
/* Con UNION. No funciona si dos departamentos tienen el mismo nombre / SELECT DEPARTAMENTOS.Nombre FROM EMPLEADOS INNER JOIN DEPARTAMENTOS ON Departamento = Codigo GROUP BY DEPARTAMENTOS.Nombre HAVING COUNT() > 2
2.15. A˜nadir un nuevo departamento: ‘Calidad’, con presupuesto de 40.000 ¤ y c´odigo
INSERT INTO DEPARTAMENTOS VALUES ( 11 , ’Calidad’ , 40000)
INSERT INTO EMPLEADOS VALUES ( ’89267109’ , ’Esther’ , ’V´azquez’ , 11)
2.16. Aplicar un recorte presupuestario del 10 % a todos los departamentos.
UPDATE DEPARTAMENTOS SET Presupuesto = Presupuesto * 0.
2.17. Reasignar a los empleados del departamento de investigaci´on (c´odigo 77) al depar- tamento de inform´atica (c´odigo 14).
UPDATE EMPLEADOS SET Departamento = 14 WHERE Departamento = 77
2.18. Despedir a todos los empleados que trabajan para el departamento de inform´atica (c´odigo 14).
DELETE FROM EMPLEADOS WHERE Departamento = 14
2.19. Despedir a todos los empleados que trabajen para departamentos cuyo presupuesto sea superior a los 60.000 ¤.
10 Ejercicios de Bases de Datos
ALMACENES PK Codigo int identity
Lugar nvarchar(100) Capacidad int
CAJAS PK NumReferencia char(5)
Contenido nvarchar(100) Valor int FK1 Almacen int
3.1. Obtener todos los almacenes
SELECT * FROM ALMACENES
3.2. Obtener todas las cajas cuyo contenido tenga un valor superior a 150 ¤.
SELECT * FROM CAJAS WHERE Valor > 150
3.3. Obtener los tipos de contenidos de las cajas.
SELECT DISTINCT Contenido FROM CAJAS
3.4. Obtener el valor medio de todas las cajas.
SELECT AVG(Valor) FROM CAJAS
3.5. Obtener el valor medio de las cajas de cada almacen.
SELECT Almacen, AVG(Valor) FROM CAJAS GROUP BY Almacen
/* Sin subconsultas */ SELECT NumReferencia FROM ALMACENES LEFT JOIN CAJAS ON ALMACENES.Codigo = CAJAS.Almacen WHERE Lugar = ’Bilbao’
/* Con subconsultas */ SELECT NumReferencia FROM CAJAS WHERE Almacen IN ( SELECT Codigo FROM ALMACENES WHERE Lugar = ’Bilbao’ )
3.11. Insertar un nuevo almac´en en Barcelona con capacidad para 3 cajas.
INSERT INTO ALMACENES(Lugar,Capacidad) VALUES(’Barcelona’,3)
3.12. Insertar una nueva caja, con n´umero de referencia ‘H5RT’, con contenido ‘Papel’, valor 200, y situada en el almac´en 2.
INSERT INTO CAJAS VALUES(’H5RT’,’Papel’,200,2)
3.13. Rebajar el valor de todas las cajas un 15 %.
UPDATE CAJAS SET Valor = Valor * 0.
3.14. Rebajar un 20 % el valor de todas las cajas cuyo valor sea superior al valor medio de todas las cajas.
UPDATE CAJAS SET Valor = Valor * 0. WHERE Valor > (SELECT AVG(Valor) FROM CAJAS)
3.15. Eliminar todas las cajas cuyo valor sea inferior a 100 ¤.
DELETE FROM CAJAS WHERE Valor < 100
3.16. Vaciar el contenido de los almacenes que est´an saturados.
Ejercicios de Bases de Datos 15
3 Los Almacenes
DELETE FROM CAJAS WHERE Almacen IN ( SELECT Codigo FROM ALMACENES WHERE Capacidad < ( SELECT COUNT(*) FROM CAJAS WHERE Almacen = Codigo ) )
16 Ejercicios de Bases de Datos