Trab. SQL. Presentar.xxx

March 17, 2018 | Author: Aula Diferencial | Category: Sql, Information Science, Information Technology, Data Model, Information Technology Management


Comments



Description

UNIVERSIDAD NACIONAL DE CAJAMARCAFACULTAD DE EDUCACIÓN ESPECIALIDAD DE MATEMÁTICA E INFORMÁTICA Asignatura de BASE DE DATOS Estudiante: CARMONA CASTREJÓN, Luis Alberto CONSULTAS EN SQL Contenido La tienda Informática Los empleados Los almacenes 1 PK La Tienda de Inform´ atica ARTICULOS FABRICANTES Codigo Nombre int identity nvarchar(100) FK1 Nombre Precio Fabricante nvarchar(100) int int PK Codigo int identity 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 Aprendiendo a consultar en SQL 1 incluyendo por cada articulo los datos del articulo y de su fabricante. incluyendo el nombre del art´ ıculo. Aprendiendo a consultar en SQL 2 . Precio FROM ARTICULOS WHERE Precio >= 180 ORDER BY Precio DESC.8.Consultas en SQL 1. SELECT COUNT(*) FROM ARTICULOS WHERE Precio >= 180 1. Obtener el precio medio de los art´ ıculos cuyo c´ odigo de fabricante sea 2. Obtener un listado completo de art´ ıculos. SELECT Nombre.7.9. Obtener el numero de art´ ıculos cuyo precio sea mayor o igual a 180 ¤. /* Sin INNER JOIN */ SELECT * FROM ARTICULOS. Precio * 166.10. y el nombre de su fabricante. Obtener el nombre y el precio en pesetas (es decir. Precio * 166. Obtener un listado de art´ ıculos. su precio.386 AS PrecioPtas FROM ARTICULOS 1.Codigo 1. SELECT AVG(Precio) FROM ARTICULOS WHERE Fabricante=2 1. Obtener el nombre y precio de los art´ ıculos cuyo precio sea mayor o igual a 180 ¤ y ordenarlos descendentemente por precio.5. SELECT AVG(Precio) FROM ARTICULOS 1. el precio en euros multiplicado por 166’386) /* Sin AS */ SELECT Nombre.Fabricante = FABRICANTES. Seleccionar el precio medio de todos los productos. FABRICANTES WHERE ARTICULOS.Fabricante = FABRICANTES. Nombre 1.Codigo /* Con INNER JOIN */ SELECT * FROM ARTICULOS INNER JOIN FABRICANTES ON ARTICULOS.11.6. y luego ascendentemente por nombre.386 FROM ARTICULOS /* Con AS */ SELECT Nombre. Nombre FROM ARTICULOS INNER JOIN FABRICANTES ON ARTICULOS. FABRICANTES. FABRICANTES WHERE ARTICULOS. /* Sin INNER JOIN */ SELECT AVG(Precio). /* Sin INNER JOIN */ SELECT AVG(Precio).12. Obtener los nombres de los fabricantes que ofrezcan productos cuyo precio medio sea mayor o igual a 150 ¤. mostrando solo los c´ odigos de fabricante.Nombre FROM ARTICULOS. Fabricante FROM ARTICULOS GROUP BY Fabricante 1.Fabricante = FABRICANTES. FABRICANTES.Nombre FROM ARTICULOS INNER JOIN FABRICANTES ON ARTICULOS.Nombre HAVING AVG(Precio) >= 150 Aprendiendo a consultar en SQL 3 .13. SELECT AVG(Precio).Codigo GROUP BY FABRICANTES. Obtener el precio medio de los productos de cada fabricante.Fabricante = FABRICANTES.Fabricante = FABRICANTES.Consultas en SQL /* Sin INNER JOIN */ SELECT ARTICULOS. mostrando el nombre del fabricante.Nombre. Precio.Codigo 1.Fabricante = FABRICANTES. FABRICANTES.Fabricante = FABRICANTES. FABRICANTES WHERE ARTICULOS. FABRICANTES.Nombre FROM ARTICULOS INNER JOIN FABRICANTES ON ARTICULOS.Nombre FROM ARTICULOS.14.Nombre 1. FABRICANTES WHERE ARTICULOS. FABRICANTES.Codigo GROUP BY FABRICANTES.Nombre FROM ARTICULOS.Fabricante = FABRICANTES.Nombre HAVING AVG(Precio) >= 150 /* Con INNER JOIN */ SELECT AVG(Precio).Codigo /* Con INNER JOIN */ SELECT ARTICULOS. FABRICANTES.Nombre /* Con INNER JOIN */ SELECT AVG(Precio).Codigo GROUP BY FABRICANTES.Nombre. Obtener el precio medio de los productos de cada fabricante.Codigo GROUP BY FABRICANTES. Precio. 70 .Nombre. Obtener una lista con el nombre y precio de los art´ ıculos m´ as caros de cada proveedor (incluyendo el nombre del proveedor). A.Precio) FROM ARTICULOS A WHERE A.Nombre.Fabricante = F. FABRICANTES F WHERE A.Nombre FROM ARTICULOS A INNER JOIN FABRICANTES F ON A.Precio.Nombre FROM ARTICULOS A. Aplicar un descuento del 10 % (multiplicar el precio por 0’9) a todos los productos.Fabricante = F. A.Precio. Cambiar el nombre del producto 8 a ’Impresora Laser’ UPDATE ARTICULOS SET Nombre = ’Impresora Laser’ WHERE Codigo = 8 1.Codigo AND A.Precio = ( SELECT MAX(A. Obtener el nombre y precio del art´ ıculo m´ as barato. /* Sin INNER JOIN */ SELECT A.18.Codigo ) /* Con INNER JOIN */ SELECT A.Codigo AND A.Fabricante = F. 2 ) 1.Precio = ( SELECT MAX(A. F.Consultas en SQL 1.Precio) FROM ARTICULOS A WHERE A.Codigo ) 1. Precio .16.Fabricante = F. SELECT Nombre. A˜ nadir un nuevo producto: Altavoces de 70 ¤ (del fabricante 2) INSERT INTO ARTICULOS( Nombre .17.9 Aprendiendo a consultar en SQL 4 .15. UPDATE ARTICULOS SET Precio = Precio * 0. Precio FROM ARTICULOS WHERE Precio = (SELECT MIN(Precio) FROM ARTICULOS) 1. Fabricante) VALUES ( ’Altavoces’ .19. F. 2. Obtener todos los datos de los empleados que se apellidan ’L´ opez’. SELECT Apellidos FROM EMPLEADOS 2.4. Obtener los apellidos de los empleados sin repeticiones. SELECT * FROM EMPLEADOS WHERE Apellidos = ’L´ opez’ 2. Obtener todos los datos de los empleados que se apellidan ’L´ opez’ y los que se apellidan ’P´ erez’.1. Aprendiendo a consultar en SQL 5 .Consultas en SQL 2 Empleados EMPLEADOS PK DNI Nombre Apellidos Departamento varchar(8) nvarchar(100) nvarchar(255) int PK DEPARTAMENTOS Codigo int FK1 Nombre nvarchar(100) Presupuesto int 2. SELECT DISTINCT Apellidos FROM EMPLEADOS 2. Obtener los apellidos de los empleados.3. 9.Consultas en SQL /* Con OR */ SELECT * FROM EMPLEADOS WHERE Apellidos = ’L´ opez’ OR Apellidos = ’P´ erez’ /* Con IN */ SELECT * FROM EMPLEADOS WHERE Apellidos IN (’L´ opez’ .Codigo Aprendiendo a consultar en SQL 6 . Obtener todos los datos de los empleados que trabajan para el departamento 14. Obtener un listado completo de empleados.5. SELECT * FROM EMPLEADOS WHERE Departamento = 14 2. SELECT * FROM EMPLEADOS INNER JOIN DEPARTAMENTOS ON EMPLEADOS. SELECT SUM(Presupuesto) FROM DEPARTAMENTOS 2. /* Con OR */ SELECT * FROM EMPLEADOS WHERE Departamento = 37 OR Departamento = 77 /* Con IN */ SELECT * FROM EMPLEADOS WHERE Departamento IN (37. SELECT Departamento. ’P´ erez’) 2. COUNT(*) FROM EMPLEADOS GROUP BY Departamento 2.7.8. Obtener el numero de empleados en cada departamento. Obtener todos los datos de los empleados cuyo apellido comience por ’P’.Departamento = DEPARTAMENTOS. SELECT * FROM EMPLEADOS WHERE Apellidos LIKE ’P%’ 2.6. Obtener el presupuesto total de todos los departamentos. Obtener todos los datos de los empleados que trabajan para el departamento 37 y para el departamento 77. incluyendo por cada empleado los datos del empleado y de su departamento.10.77) 2. Departamento = D.13. Apellidos FROM EMPLEADOS INNER JOIN DEPARTAMENTOS ON EMPLEADOS.12.Nombre.Nombre. Presupuesto FROM EMPLEADOS INNER JOIN DEPARTAMENTOS ON EMPLEADOS.Presupuesto > 60000 /* Con subconsulta */ SELECT Nombre. /* Sin etiquetas */ SELECT EMPLEADOS. Presupuesto FROM EMPLEADOS E INNER JOIN DEPARTAMENTOS D ON E.11.Nombre. Obtener los datos de los departamentos cuyo presupuesto es superior al presupuesto medio de todos los departamentos. Apellidos.14.000 ¤. DEPARTAMENTOS. /* Sin subconsulta */ SELECT EMPLEADOS.Nombre.Departamento = DEPARTAMENTOS.Codigo AND DEPARTAMENTOS.Codigo 2. Obtener los nombres y apellidos de los empleados que trabajen en departamentos cuyo presupuesto sea mayor de 60.Nombre. Obtener un listado completo de empleados. D. incluyendo el nombre y apellidos del empleado junto al nombre y presupuesto de su departamento.Consultas en SQL 2. SELECT * FROM DEPARTAMENTOS WHERE Presupuesto > ( SELECT AVG(Presupuesto) FROM DEPARTAMENTOS ) 2.Codigo /* Con etiquetas */ SELECT E. Aprendiendo a consultar en SQL 7 . Apellidos FROM EMPLEADOS WHERE Departamento IN (SELECT Codigo FROM DEPARTAMENTOS WHERE Presupuesto > 60000) 2. Obtener los nombres (´ unicamente los nombres) de los departamentos que tienen m´ as de dos empleados.Departamento = DEPARTAMENTOS. Apellidos. 40000) INSERT INTO EMPLEADOS VALUES ( ’89267109’ . UPDATE EMPLEADOS SET Departamento = 14 WHERE Departamento = 77 2.18.17.19. ’Esther’ . Aprendiendo a consultar en SQL 8 . DNI: 89267109 INSERT INTO DEPARTAMENTOS VALUES ( 11 .9 2. UPDATE DEPARTAMENTOS SET Presupuesto = Presupuesto * 0. ’V´ azquez’ .Nombre FROM EMPLEADOS INNER JOIN DEPARTAMENTOS ON Departamento = Codigo GROUP BY DEPARTAMENTOS.Nombre HAVING COUNT(*) > 2 2. No funciona si dos departamentos tienen el mismo nombre */ SELECT DEPARTAMENTOS. Reasignar a los empleados del departamento de investigaci´ on (c´ odigo 77) al departamento de inform´ atica (c´ odigo 14). ’Calidad’ . A˜ nadir un empleado vinculado al departamento reci´ en creado: Esther V´ azquez.000 ¤ y c´ odigo 11. con presupuesto de 40. A˜ nadir un nuevo departamento: ‘Calidad’. DELETE FROM EMPLEADOS WHERE Departamento = 14 2. Despedir a todos los empleados que trabajen para departamentos cuyo presupuesto sea superior a los 60. 11) 2.Consultas en SQL /* Con subconsulta */ SELECT Nombre FROM DEPARTAMENTOS WHERE Codigo IN ( SELECT Departamento FROM EMPLEADOS GROUP BY Departamento HAVING COUNT(*) > 2 ) /* Con UNION. Despedir a todos los empleados que trabajan para el departamento de inform´ atica (c´ odigo 14).15.16.000 ¤. Aplicar un recorte presupuestario del 10 % a todos los departamentos. Obtener los tipos de contenidos de las cajas.3.1.2. SELECT * FROM CAJAS WHERE Valor > 150 3. AVG(Valor) FROM CAJAS GROUP BY Almacen Aprendiendo a consultar en SQL 9 . SELECT DISTINCT Contenido FROM CAJAS 3. Obtener el valor medio de las cajas de cada almacen.5. SELECT AVG(Valor) FROM CAJAS 3.4. Obtener todos los almacenes SELECT * FROM ALMACENES 3. SELECT Almacen. Obtener todas las cajas cuyo contenido tenga un valor superior a 150 ¤.Consultas en SQL 3 Los Almacenes ALMACENES PK Codigo Lugar Capacidad int identity nvarchar(100) int PK CAJAS NumReferencia Contenido Valor Almacen char(5) nvarchar(100) int int FK1 3. Obtener el valor medio de todas las cajas. 6.Almacen GROUP BY Codigo 3. SELECT Codigo FROM ALMACENES WHERE Capacidad < ( SELECT COUNT(*) FROM CAJAS WHERE Almacen = Codigo ) 3.8. Obtener los numeros de referencia de las cajas que est´ an en Bilbao. SELECT NumReferencia. Obtener el numero de cajas que hay en cada almac´ en. Obtener el numero de referencia de cada caja junto con el nombre de la ciudad en el que se encuentra.9.Codigo = CAJAS. Obtener los c´ odigos de los almacenes en los cuales el valor medio de las cajas sea superior a 150 ¤. Obtener los c´ odigos de los almacenes que est´ an saturados (los almacenes donde el numero de cajas es superior a la capacidad).Almacen 3. SELECT Almacen. COUNT(NumReferencia) FROM ALMACENES LEFT JOIN CAJAS ON ALMACENES. /* Esta consulta no tiene en cuenta los almacenes vac´ ıos */ SELECT Almacen.7.Consultas en SQL 3.10. Lugar FROM ALMACENES INNER JOIN CAJAS ON ALMACENES. Aprendiendo a consultar en SQL 10 . COUNT(*) FROM CAJAS GROUP BY Almacen /* Esta consulta tiene en cuenta los almacenes vac´ ıos */ SELECT Codigo.Codigo = CAJAS. AVG(Valor) FROM CAJAS GROUP BY Almacen HAVING AVG(Valor) > 150 3. ’Papel’.15.200. con n´ umero de referencia ‘H5RT’.3) 3.12. y situada en el almac´ en 2. INSERT INTO ALMACENES(Lugar. DELETE FROM CAJAS WHERE Valor < 100 Aprendiendo a consultar en SQL 11 . INSERT INTO CAJAS VALUES(’H5RT’.Almacen WHERE Lugar = ’Bilbao’ /* Con subconsultas */ SELECT NumReferencia FROM CAJAS WHERE Almacen IN ( SELECT Codigo FROM ALMACENES WHERE Lugar = ’Bilbao’ ) 3. valor 200.2) 3. UPDATE CAJAS SET Valor = Valor * 0.Codigo = CAJAS.Capacidad) VALUES(’Barcelona’. Insertar un nuevo almac´ en en Barcelona con capacidad para 3 cajas.11.14. Rebajar el valor de todas las cajas un 15 %.13.85 3. con contenido ‘Papel’. Insertar una nueva caja.80 WHERE Valor > (SELECT AVG(Valor) FROM CAJAS) 3. Rebajar un 20 % el valor de todas las cajas cuyo valor sea superior al valor medio de todas las cajas. Eliminar todas las cajas cuyo valor sea inferior a 100 ¤. UPDATE CAJAS SET Valor = Valor * 0.Consultas en SQL /* Sin subconsultas */ SELECT NumReferencia FROM ALMACENES LEFT JOIN CAJAS ON ALMACENES.
Copyright © 2024 DOKUMEN.SITE Inc.