Está en la página 1de 11

ACTIVIDAD 3

Empleados:
CREATE TABLE EMPLEADOS
(
DNI VARCHAR (8) PRIMARY KEY,
NOMBRE NVARCHAR (100),
APELLIDOS NVARCHAR (255),
DEPARTAMENTO INT,
FOREIGN KEY (DEPARTAMENTO) REFERENCES DEPARTAMENTOS(CODIGO)
);

INSERT INTO EMPLEADOS (DNI,NOMBRE,APELLIDOS,DEPARTAMENTO) VALUES


(1,'Jorge','Lopez',14),
(2,'Santiago','Molano',14),
(3,'Juliana','Perez',77),
(4,'Maria','Robledo',37),
(5,'Cristian','Sanchez',23),
(6,'Luisa','Lopez',77),
(7,'Carolina','Perez',37),
(8,'Cristina','Mendez',3),
(9,'Patricia','Alvarado',14),
(10,'Crisanto','Casas',5),
(11,'Luis','Gomez',77),
(12,'Jorge','Perez',77),
(13,'Manuel','Linarez',37),
(14,'Hilda','Roncancio',23),
(15,'Yeison','Perez',5);

2.1 Obtener los apellidos de los empleados

SELECT APELLIDOS AS 'Apellidos de los empleados' FROM EMPLEADOS;

2.2 Obtener los apellidos de los empleados sin repeticiones

SELECT APELLIDOS AS 'Apellidos de los empleados' FROM EMPLEADOS GROUP BY


APELLIDOS;

2.3 Obtener todos los datos de los empleados que se apellidan 'Lopez'

SELECT * FROM EMPLEADOS WHERE APELLIDOS = 'Lopez';

2.4 Obtener todos los datos de los empleados que se apellidan 'Lopez' y
los que se apelldian 'Perez'

SELECT * FROM EMPLEADOS WHERE APELLIDOS = 'Lopez' OR APELLIDOS = 'Perez'


;

2.5 Obtener todos los datos de los empleados que trabajan para el
departamento 14
SELECT * FROM EMPLEADOS WHERE DEPARTAMENTO = 14;

2.6 Obtener todos los datos de los empleados que trabajan para el
departamento 37 y para el departamento 77

SELECT * FROM EMPLEADOS WHERE DEPARTAMENTO = 14 OR DEPARTAMENTO = 77;

2.7 Obtener todos los datos de los empleados cuyo apellido comienze por P

SELECT APELLIDOS AS 'Apellidos de empleados que comienzan por P' FROM


EMPLEADOS WHERE APELLIDOS LIKE 'P%';

2.8 Obtener el presupuesto total de todos los departamentos

SELECT SUM(PRESUPUESTO) FROM DEPARTAMENTOS;

2.9 Obtener el numero de empleados en cada departamento

SELECT COUNT(DEPARTAMENTO ) AS 'Dept 1'FROM EMPLEADOS WHERE DEPARTAMENTO


= 14 ;
SELECT COUNT(DEPARTAMENTO ) AS 'Dept 2' FROM EMPLEADOS WHERE DEPARTAMENTO
= 37 ;
SELECT COUNT(DEPARTAMENTO )AS 'Dept 3' FROM EMPLEADOS WHERE DEPARTAMENTO
= 77;
SELECT COUNT(DEPARTAMENTO ) AS 'Dept 4' FROM EMPLEADOS WHERE DEPARTAMENTO
= 23 ;
SELECT COUNT(DEPARTAMENTO ) AS 'Dept 5' FROM EMPLEADOS WHERE
DEPARTAMENTO = 3;

2.10 Obtener un listado completo de empleados, incluyendo por empleado


los datos del empleado y su departamento

SELECT *
FROM EMPLEADOS INNER JOIN DEPARTAMENTOS
WHERE EMPLEADOS.DEPARTAMENTO = DEPARTAMENTOS.CODIGO ORDER BY CODIGO;

2.11 Obtener un listado completo de empleados, incluyendo el nombre


y apellidos del empleado junto al nombre y presupuesto de su departamento

SELECT
EMPLEADOS.DNI,EMPLEADOS.NOMBRE,EMPLEADOS.APELLIDOS,DEPARTAMENTOS.CODIGO,D
EPARTAMENTOS.NOMBRE,DEPARTAMENTOS.PRESUPUESTO
FROM EMPLEADOS INNER JOIN DEPARTAMENTOS
WHERE EMPLEADOS.DEPARTAMENTO = DEPARTAMENTOS.CODIGO ORDER BY CODIGO;

2.12 Obtener los nombres y apellidos de los empleados que trabajen en


departamentos cuyo presupuesto sea mayor de 60000 E

SELECT
EMPLEADOS.DNI,EMPLEADOS.NOMBRE,EMPLEADOS.APELLIDOS,DEPARTAMENTOS.CODIGO,D
EPARTAMENTOS.NOMBRE,DEPARTAMENTOS.PRESUPUESTO
FROM EMPLEADOS INNER JOIN DEPARTAMENTOS
WHERE EMPLEADOS.DEPARTAMENTO = DEPARTAMENTOS.CODIGO AND
DEPARTAMENTOS.PRESUPUESTO > 60000 ORDER BY DNI ;
2.13 Obtener los datos de los departamentos cuyo presupuesto es superior
al presupuesto 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 mas de 2 empleados

SELECT DEPARTAMENTOS.NOMBRE FROM DEPARTAMENTOS INNER JOIN EMPLEADOS


WHERE DEPARTAMENTOS.CODIGO = EMPLEADOS.DEPARTAMENTO AND
EMPLEADOS.DEPARTAMENTO >2 ;

2.15 Añadir un nuevo departamento:'Calidad', con presupuesto de 40000 E y


codigo 11.

Añadir un empleado vinculado al departamento recien creado: Esther


Vazquez, DNI 89267109

INSERT INTO DEPARTAMENTOS (CODIGO,NOMBRE,PRESUPUESTO) VALUES


(11,'Calidad',40000);
INSERT INTO EMPLEADOS (DNI,NOMBRE,APELLIDOS,DEPARTAMENTO) VALUES
(16,'Esther','Vazquez',11);

SELECT * FROM DEPARTAMENTOS;


SELECT * FROM EMPLEADOS;

2.17 Reasignar a los empleados del departamento de investigacion (codigo


77) al departamento de informatica (codigo 14).

UPDATE EMPLEADOS SET DEPARTAMENTO = 14 WHERE DEPARTAMENTO = 77;

2.18 Despedir a todos los empleados que trabajan para el departamento de


informatica (Codigo 14)

DELETE FROM EMPLEADOS WHERE DEPARTAMENTO=14;

2.19 Despedir a todos los empleados que trabajan para departamentos cuyo
presupuesto sea superior a los 60000 E

DELETE FROM DEPARTAMENTOS WHERE PRESUPUESTO >= 60000;

2.20 Despedir a todos los empleados

DELETE FROM EMPLEADOS;

Almacenes:
CREATE TABLE ALMACENES (
Codigo INT PRIMARY KEY AUTO_INCREMENT,
Lugar NVARCHAR(100),
Capacidad INT
);
INSERT INTO ALMACENES (Lugar,Capacidad) VALUES
('Bogota',200),
('Cali',100),
('Bilbao',20),
('Bilbao',90),
('Bogota',130),
('Medellin',150),
('Cartagena',10),
('Veracruz',250),
('Bilbao',300);

Cajas:
CREATE TABLE CAJAS (
NumReferencia CHAR (5) PRIMARY KEY,
Contenido NVARCHAR(100),
Valor INT,
Almacen INT,
FOREIGN KEY (Almacen) REFERENCES ALMACENES (Codigo)
);

INSERT INTO CAJAS (NumReferencia,Contenido,Valor,Almacen) VALUES


('ADFM','Lapiz',50,1),
('EFGS','Borrador',90,2),
('IJKL','Tajalapiz',100,3),
('ADFG','Papel Mache',50,4),
('EFGD','Porta Lapices',90,5),
('IJKS','Clip',100,6),
('ADFF','Engrapadora',50,7),
('EFGG','Corrector',90,8),
('IJKH','Colores',100,9);

3.1 Obtener todos los almacenes

SELECT * FROM ALMACENES;

3.2 Obtener todas las cajas cuyo contenido tenga un valor superior a 150
e

SELECT * FROM CAJAS WHERE Contenido > 150;

3.3 Obtener los tipos de contenidos de las cajas

SELECT 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 CAJAS.Almacen AS 'Codigo del almacen', AVG(Cajas.Valor) AS 'Valor


promediado' FROM
CAJAS INNER JOIN ALMACENES
WHERE CAJAS.Almacen = ALMACENES.Codigo;

3.6 Obtener los codigos de los almacenes en los cuales el valor medio de
las cajas sea superior a 150 E

SELECT CAJAS.Almacen AS 'Codigo del almacen', AVG(Cajas.Valor) AS 'Valor


promediado' FROM
CAJAS INNER JOIN ALMACENES
WHERE CAJAS.Almacen = ALMACENES.Codigo AND Cajas.Valor >150;

3.7 Obtener el numero de referencia de cada caja junto con el nombre de


la ciudad en el que se encuentra

SELECT CAJAS.NumReferencia AS 'Numero de referencia de la caja',


ALMACENES.Lugar AS 'Ubicacion de la caja' FROM
CAJAS INNER JOIN ALMACENES
WHERE CAJAS.Almacen = ALMACENES.Codigo;

3.8 Obtner el numero de cajas que hay en cada almacen

SELECT CAJAS.NumReferencia AS 'Numero de referencia de la


caja',CAJAS.Valor AS 'Numero de cajas',CAJAS.Almacen AS 'Codigo del
almacen'FROM
CAJAS INNER JOIN ALMACENES
WHERE CAJAS.Almacen = ALMACENES.Codigo ;

3.9 Obtener los codigos de los almacenes que estan saturados ( los
almacenes donde el numero de cajas es superior a la capacidad

SELECT ALMACENES.Codigo AS 'Codigo del almacen'FROM


CAJAS INNER JOIN ALMACENES
WHERE CAJAS.Almacen = ALMACENES.Codigo AND CAJAS.Valor
>ALMACENES.Capacidad ;

3.10 Obtener los numeros de referencia de las cajas que estan en Bilbao

SELECT CAJAS.NumReferencia AS 'Numero de referencia de la


caja',ALMACENES.Lugar AS 'Lugar donde se encuentra la caja'FROM
CAJAS INNER JOIN ALMACENES
WHERE CAJAS.Almacen = ALMACENES.Codigo AND ALMACENES.Lugar = 'Bilbao';

3.11 Insertar un nuevo almacen en Barcelona con capacidad para 3 cajas

INSERT INTO ALMACENES (Lugar,Capacidad) VALUES ('Barcelona',3);

3.12 Insertar una nueva caja, con numero de referencia 'H5RT',con


contenido 'Papel',valor 200, situada en el almacen 2

INSERT INTO CAJAS (NumReferencia,Contenido,Valor,Almacen) VALUES


('H5RT','Papel',200,2);
3.13 Rebajar el valor de todas las cajas un 15%

UPDATE CAJAS SET Valor = Valor*0.15;

3.14 Rebajas 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.20 WHERE Valor >80.0000;

3.15 Eliminar todas las cajas cuyo valor sea inferior a 100E

DELETE FROM CAJAS WHERE Valor < 100;

3.16 Vaciar el contendido de los almacenes que estan saturados


DELETE FROM ALMACENES WHERE Capacidad <(SELECT Valor FROM CAJAS) ;

Películas y Salas:
Películas:
CREATE TABLE PELICULAS
(
Codigo INT PRIMARY KEY AUTO_INCREMENT,
Nombre NVARCHAR(100),
CalificacionEdad INT
);
INSERT INTO PELICULAS (Nombre,CalificacionEdad) VALUES
('Pets',12),
('American Pie',0),
('Los Colores De La Montaña',7),
('Home',7),
('Wonder Woman',18),
('It',0),
('Open Season',10),
('The Devil Wears Prada',30);

Salas:
CREATE TABLE SALAS
(
Codigo INT PRIMARY KEY AUTO_INCREMENT,
Nombre NVARCHAR(100),
Pelicula INT,
FOREIGN KEY (Pelicula) REFERENCES PELICULAS (Codigo)
);
INSERT INTO SALAS (Nombre,Pelicula) VALUES
('Uno',1),
('Dos',2),
('Tres',3),
('Cuatro',4),
('Cinco',5),
('Seis',6),
('Siete',7),
('Ocho',8);

4.1 Mostrar el nombre de todas las películas

SELECT Nombre FROM PELICULAS;

4.2 Mostrar las diferentes clasificaciones de edad que existen

SELECT CalificacionEdad FROM PELICULAS;

4.3 Mostrar todas las peliculas que no han sido clasificadas

SELECT * FROM PELICULAS WHERE CalificacionEdad = 0;

4.4Mostrar todas las salas que no proyectan nincuna película

SELECT * FROM SALAS INNER JOIN PELICULAS


WHERE SALAS.Codigo = PELICULAS.CODIGO AND PELICULAS.CalificacionEdad = 0;

4.5 Mostrar Informacion de todas las salas y si se proyecta alguna


película en la sala , mostrar también la información de la película.

SELECT * FROM SALAS INNER JOIN PELICULAS


WHERE SALAS.Codigo = PELICULAS.CODIGO AND PELICULAS.CalificacionEdad;

*4.6 Mostrar la información de todas las películas y si se proyecta en


alguna sala, mostrar también la información de la sala.

SELECT * FROM PELICULAS INNER JOIN SALAS


WHERE PELICULAS.CODIGO = SALAS.Codigo AND PELICULAS.CalificacionEdad;

4.7 Mostrar los nombres de las películas que no se proyectan en ninguna


sala.

SELECT * FROM SALAS INNER JOIN PELICULAS


WHERE SALAS.Codigo = PELICULAS.CODIGO AND PELICULAS.CalificacionEdad = 0;

4.8 Añadir una pelicula uno ,dos , tres para mayores de 7 años.

INSERT INTO PELICULAS (Nombre,CalificacionEdad) VALUES


('Uno, Dos, Tres',7);

4.9 hacer constar que todas las películas no calificadas han sido
calificadas no recomendables para menores de 13 años.

UPDATE PELICULAS SET CalificacionEdad = 13 WHERE CalificacionEdad = 0;

4.10 Eliminar todas las salas que proyectan películas recomendadas para
todos los públicos.

DELETE FROM PELICULAS WHERE CalificacionEdad = 13;


Los Directores:
CREATE TABLE DIRECTORES
(
DNI VARCHAR(8) PRIMARY KEY,
NomApels NVARCHAR (255),
DNIJefe VARCHAR(8),
Despacho INT,
FOREIGN KEY (DNIJefe) REFERENCES DESPACHOS (Numero),
FOREIGN KEY (Despacho) REFERENCES DESPACHOS (Numero)
);

INSERT INTO DIRECTORES (DNI,NomApels,DNIJefe,Despacho) VALUES


(1,'Juan Romero','0',1),
(2,'Clara Perez','1',2),
(3,'Santiago Molano','1',3),
(4,'Camilo Monsalve','0',4),
(5,'Lola Mento','1',5),
(6,'Cristian Sanchez','0',6),
(7,'Rosa Perez','1',7),
(8,'Thomas Perez','1',8);

Despachos:
CREATE TABLE DESPACHOS
(
Numero INT PRIMARY KEY,
Capacidad int
);

INSERT INTO DESPACHOS (Numero,Capacidad) VALUES


(1,5),
(2,10),
(3,15),
(4,20),
(5,25),
(6,30),
(7,35),
(8,40);

5.1 Mostrar el DNI nombre y apellidos de todos los directores.

SELECT DNI ,NomApels FROM DIRECTORES;

5.2 Mostrar los datos de los directores que no tienen jefes.

SELECT * FROM DIRECTORES WHERE DNIJefe = 0;


5.3 Mostar el nombre y apellidos de cada director, junto con la capacidad
del despacho en el que se encuentra.

SELECT DIRECTORES.NomApels AS 'Nombres De Los


Directores',DESPACHOS.Capacidad AS 'Capacidad del despacho' FROM
DIRECTORES
INNER JOIN DESPACHOS WHERE Directores.Despacho = DESPACHOS.Numero;

5.4 Mostrar el numero de directores que hay en cada despacho.

SELECT COUNT(NomApels),Despacho FROM DIRECTORES ;

5.5 Mostrar los datos de los directores cuyos jefes no tienen jefes.

SELECT * FROM DIRECTORES WHERE DNIJefe = 0;

5.6 Mostrar los nombres y apellidos de los directores junto con los de
su jefe.

SELECT * FROM DIRECTORES;

5.7 Mostrar el numero de despachos que están sobre utilizados.

SELECT Numero AS 'Numeros de despachos sobreutilizados'


FROM DESPACHOS WHERE Numero > (Select Count(NomApels) FROM DIRECTORES);

5.8 Añadir un nuevo director llamado Paco Perez DNI 28301700 SIN JEFE Y
SITUADO EN EL DESPACHO 124.

INSERT INTO DIRECTORES (DNI,NomApels,DNIJefe,Despacho) VALUES


(28301700,'Paco Perez','0',124);

5.9 Asignar a todos los empleados apelidados Perez un nuevo jefe con
DNI 74568521.

UPDATE DIRECTORES SET DNIJefe = '74568521' WHERE NomApels >= 'Perez';

5.10 Despedir a todos los directores excepto a los que no tienen jefe.

DELETE FROM DIRECTORES WHERE DNIJefe <> '0';

Piezas y Proveedores:

Piezas:
CREATE TABLE PIEZAS
(
Codigo INT PRIMARY KEY AUTO_INCREMENT,
Nombre NVARCHAR(100)
);

INSERT INTO PIEZAS (Nombre) Values


('Tornillos'),
('Tuercas'),
('Llaves'),
('Destonilladores'),
('Martillos');
SELECT * FROM PIEZAS;

Suministra:
CREATE TABLE SUMINISTRA
(
CodigoPieza INT,
IdProveedor CHAR(4),
Precio INT,
FOREIGN KEY (CodigoPieza) REFERENCES PIEZAS (Codigo),
FOREIGN KEY (IdProveedor) REFERENCES PROVEEDORES (Id)
);
INSERT INTO SUMINISTRA (CodigoPieza,IdProveedor,Precio) VALUES
(16,'HAL',1000),
(17,'HEL',2000),
(18,'HIL',3000),
(19,'HOL',4000),
(20,'HUL',5000);
DELETE FROM SUMINISTRA;

Proveedores:
CREATE TABLE PROVEEDORES
(
Id CHAR (4) PRIMARY KEY,
Nombre NVARCHAR(100)
);
INSERT INTO PROVEEDORES (Id,Nombre) Values
('HAL','Norma'),
('HEL','Carlos Perez'),
('HIL','Juana Lolas'),
('HOL','Carlos Vives'),
('HUL','Hello');

6.1 Obtener los nombres de todas las piezas.

SELECT Nombre FROM PIEZAS;

6.2 Obtener todos los datos de todos los proveedores.

SELECT * FROM PROVEEDORES;


6.3 Obtener el precio medio al lque se nos suministran las piezas.

SELECT AVG(SUMINISTRA.Precio),PIEZAS.Nombre AS 'Nombre de las piezas'


FROM SUMINISTRA
INNER JOIN PIEZAS WHERE SUMINISTRA.CodigoPieza=Piezas.Codigo;

6.4 Obtener los nombres de los proveedores que sumintrasn la pieza 1.

SELECT PROVEEDORES.Nombre AS 'Nombre De Los Proveedores', PIEZAS.Nombre


AS 'Nombre de las piezas' FROM PROVEEDORES
INNER JOIN SUMINISTRA INNER JOIN PIEZAS WHERE PROVEEDORES.Id =
SUMINISTRA.IdProveedor
AND SUMINISTRA.CodigoPieza=Piezas.Codigo AND PIEZAS.Codigo =16;

6.5 Obtener los nombres de las piezas suministradas por el proveedor


cuyo código es HAL.

SELECT PIEZAS.Nombre AS 'Nombre de las piezas',PROVEEDORES.Nombre AS


'Nombre De Los Proveedores', PROVEEDORES.Id AS 'Codigo Del Proveedor'
FROM PROVEEDORES
INNER JOIN SUMINISTRA INNER JOIN PIEZAS WHERE PROVEEDORES.Id =
SUMINISTRA.IdProveedor
AND SUMINISTRA.CodigoPieza=Piezas.Codigo AND PROVEEDORES.Id = 'Hal';

6.6 Obtener los nombres de los proveedores que suministran las piezas
mas caras, indicando el nombre de la pieza y el precio al que la
suministraran.

SELECT PROVEEDORES.Id AS 'Codigo Del Proveedor',PROVEEDORES.Nombre AS


'Nombre De Los Proveedores',PIEZAS.Nombre AS 'Nombre de las
piezas',MAX(SUMINISTRA.Precio) AS 'Precio De La Pieza' FROM PROVEEDORES
INNER JOIN SUMINISTRA INNER JOIN PIEZAS WHERE PROVEEDORES.Id =
SUMINISTRA.IdProveedor
AND SUMINISTRA.CodigoPieza=Piezas.Codigo;

También podría gustarte