Ejercicio Práctico de Base de Datos

11
Ejercicios de Base de Datos Docente Pilar Pardo

Transcript of Ejercicio Práctico de Base de Datos

Page 1: Ejercicio Práctico de Base de Datos

Ejercicios de Base de Datos

Docente Pilar Pardo

Page 2: Ejercicio Práctico de Base de Datos

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

Page 3: Ejercicio Práctico de Base de Datos

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

Page 4: Ejercicio Práctico de Base de Datos

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

Page 5: Ejercicio Práctico de Base de Datos

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

Page 6: Ejercicio Práctico de Base de Datos

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)

Page 7: Ejercicio Práctico de Base de Datos

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

Page 8: Ejercicio Práctico de Base de Datos

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;

Page 9: Ejercicio Práctico de Base de Datos

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

Page 10: Ejercicio Práctico de Base de Datos

ORDER BY: Ordena los registros seleccionados ascendentemente. DESC: Ordena los registros seleccionados descendentemente. SELECT nombre, apellido FROM EMPLEADO ORDER BY apellido DESC;

Page 11: Ejercicio Práctico de Base de Datos

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