Post on 17-Jan-2017
Ejercicios de Base de Datos
Docente Pilar Pardo
Ejemplo Práctico Resuelto
# ID_DPTO
NOMBRE_DPTO
N_EMPLEADOS_DPTO
FECHA_CREAC_DPTO
DEPARTAMENTO
# ID_EMPLEADO
NOMBRE_EMP
APELLIDO_EMP
FECHA_NACIM_EMP
SALARIO_EMP
ID_DEPTO
EMPLEADO
1 n
MODELO FISICO
CREATE TABLE DEPARTAMENTO (
ID_DPTO INT NOT NULL,
NOM_DPTO VARCHAR(50) NOT NULL,
N_EMPLEADOS_DPTO INT NOT NULL,
FECHA_CREAC_DPTO VARCHAR (12) NULL,
PRIMARY KEY(ID_DPTO)
);
Creando tabla DEPARTAMENTO
CREATE TABLE EMPLEADO (
ID_EMPLEADO INT NOT NULL,
NOMBRE_EMP VARCHAR(15) NOT NULL,
APELLIDO_EMP VARCHAR(15) NOT NULL,
FECHA_NAC_EMP VARCHAR(12) NOT NULL,
SALARIO_EMP INT NOT NULL,
ID_DPTO INT NOT NULL,
PRIMARY KEY (ID_EMPLEADO),
FOREIGN KEY (ID_DPTO) REFERENCES DEPARTAMENTO (ID_DPTO)
);
Creando la tabla EMPLEADO
Indica que tabla proviene la clave foránea (FK).
En este caso, ID_DPTO es la clave foránea y proviene
de la tabla DEPARTAMENTO
CLAVE FORANEA QUE SE CREA DEBIDO A LA CARDINALIDAD UNO A MUCHOS
Insertando datos a la tabla DEPARTAMENTO
INSERT INTO DEPARTAMENTO (ID_DPTO, NOM_DPTO, N_EMPLEADOS_DPTO, FECHA_CREAC_DPTO)
VALUES (001, 'SISTEMAS', 30, '10-10-2009') ; INSERT INTO DEPARTAMENTO (ID_DPTO, NOM_DPTO, N_EMPLEADOS_DPTO, FECHA_CREAC_DPTO)
VALUES (002, 'CONTABILIDAD', 20, '03-01-2000') ; INSERT INTO DEPARTAMENTO (ID_DPTO, NOM_DPTO, N_EMPLEADOS_DPTO, FECHA_CREAC_DPTO)
VALUES (003, ‘CONTABILIDAD', 15, '25-12-2009') ;
001
002
003
ID_DPTO
SISTEMAS
CONTABILIDAD
CONTABILIDAD
NOM_DPTO
30
20
15
N_EMPLEADOS_DPTO
10-10-2009
03-01-2000
25-12-2009
FECHA_CREAC_DPTO
Insertando datos a la tabla EMPLEADO
INSERT INTO EMPLEADO (ID_EMPLEADO, NOMBRE_EMP, APELLIDO_EMP, FECHA_NAC_EMP, SALARIO_EMP, ID_DPTO) VALUES ('1111’ , 'MAURICIO’, 'HERRERA’, '03-01-1980’, 800000, 001 ) ;
INSERT INTO EMPLEADO (ID_EMPLEADO, NOMBRE_EMP, APELLIDO_EMP, FECHA_NAC_EMP, SALARIO_EMP, ID_DPTO)
VALUES ('2222’ , ‘PAOLA‘, ‘NUÑEZ’, '18-05-1973’, 600000, 002 ) ; INSERT INTO EMPLEADO (ID_EMPLEADO, NOMBRE_EMP, APELLIDO_EMP, FECHA_NAC_EMP, SALARIO_EMP, ID_DPTO)
VALUES ('3333’ , 'NATALIA’, 'GATICA’, '25-12-1984’, 400000, 003 ) ;
111
2222
3333
ID_EMPLEADO
MAURICIO
PAOLA
NATALIA
NOMBRE_EMP
HERRERA
NUÑEZ
GATICA
APELLIDO_EMP
03-01-1980
18-05-1973
25-12-1984
FECHA_NAC_EMP
800000
600000
400000
SALARIO_EMP
001
002
003
ID_DPTO (FK)
SI QUISIERAMOS CAMBIAR EL ID_EMPLEADO 111 DEL PRIMER REGISTRO AL FORMATO 1111:
Update EMPLEADO Set id_empleado='1111' Where id_empleado='111'
1111
2222
3333
ID_EMPLEADO
MAURICIO
MARIELA
NATALIA
NOMBRE_EMP
HERRERA
NEIRA
GATICA
APELLIDO_EMP
03-01-1980
18-05-1973
25-12-1984
FECHA_NAC_EMP
800000
600000
400000
SALARIO_EMP
001
002
003
ID_DPTO (FK)
Obtener la Suma del Numero de empleados de la tabla DEPARTAMENTO
SELECT SUM(N_EMPLEADOS) AS NUMERO_TOTAL FROM DEPARTAMENTO;
Numero de DEPARTAMENTOS de la empresa
SELECT COUNT(DISTINCT NOM_DPTO) AS NUMERO_DPTO FROM DEPARTAMENTO;
Consultas
Empleados que trabajan en el departamento de Sistemas
SELECT COUNT(*) AS FUNCIONARIOS_SISTEMAS
FROM DEPARTAMENTO
WHERE nom_dpto='sistemas';
Numero de empleados de cada departamento
SELECT nom_dpto, COUNT(*) AS CANTIDAD_FUNCIONARIOS
FROM DEPARTAMENTO
GROUP BY nom_dpto;
Cláusula HAVING:
Selecciona alguno de los grupos definidos por GROUP BY, según una
condición.
Ejemplo:
Lista los departamentos que tengan menos de 10 funcionarios ingresados a la base de datos.
Ojo! No confundir con la cantidad TOTAL de funcionarios por departamento.
Esta consulta permite ver sólo aquellos registros que han sido ingresados a la base de datos y que
cumplan la condición de ser menor a 10 por departamento.
SELECT NOM_DPTO, COUNT(*) FROM empleado
GROUP BY NOM_DPTO
HAVING COUNT(*)<10;
Cláusulas
ORDER BY: Ordena los registros seleccionados ascendentemente. DESC: Ordena los registros seleccionados descendentemente. SELECT nombre, apellido FROM EMPLEADO ORDER BY apellido DESC;
AND Evalúa dos condiciones y devuelve un valor de
verdad solo si ambas son ciertas.
OR Evalúa dos condiciones y devuelve un valor de si
alguna de las dos es cierta.
NOT Devuelve el valor contrario de la expresión.
Operadores Lógicos