Consultas Bases De Datos
USE Personal;
CREATE TABLE departamento(
Numero_D varchar(5),
Nombre_D varchar(20),
NSS_Gerente varchar(10),
PRIMARY KEY(Numero_D)
)
CREATE TABLE empleado(
NSS varchar(10),
Nombre varchar(15),
Apellidos varchar(20),
NSS_Supervisor varchar(10),
Fecha_Nac datetime,
Dirección varchar(30),
Sexo varchar(10),
Num_Dep varchar(5),
Salario int
PRIMARYKEY(NSS)
)
CREATE TABLE familiar(
NSSE varchar(10),
Nombre varchar(20),
Sexo varchar(10),
Parentesco varchar(10),
PRIMARY KEY(NSSE,Nombre),
FOREIGN KEY(NSSE) REFERENCES empleado(NSS)
)
CREATE TABLE proyecto(
Cod_P varchar(5),
Nombre_P varchar(20),
Lugar_P varchar(15),
Num_Dep varchar(5),
PRIMARY KEY(Cod_P),
FOREIGN KEY(Num_Dep) REFERENCES departamento(Numero_D)
)
CREATE TABLEtrabaja_en(
NSS_E varchar(10),
Cod_proy varchar(5),
horas int,
PRIMARY KEY(NSS_E,Cod_proy),
FOREIGN KEY(Cod_proy) REFERENCES proyecto(Cod_P),
FOREIGN KEY(NSS_E) REFERENCES empleado(NSS)
)
ALTER TABLE departamento
ADD CONSTRAINT fk_gerente
FOREIGN KEY(NSS_Gerente) REFERENCES empleado(NSS) ON UPDATE CASCADE;
ALTER TABLE empleado
ADD CONSTRAINT fk_dpto
FOREIGN KEY(Num_Dep) REFERENCESdepartamento(Numero_D);
TABLA DEPARTAMENTO:
TABLA EMPLEADO:
TABLA FAMILIAR:
TABLA PROYECTO:
TABLA TRABAJA_EN:
CONSULTAS
Obtener todas las combinaciones de empleados y departamentos
SELECT *
FROM empleado,departamento
WHERE Num_Dep LIKE Numero_D
Obtener todas las combinaciones de NSS de empleados y nombres de departamento
SELECT
NSS,Nombre_D
FROM empleado,departamentoWHERE empleado.Num_Dep LIKE departamento.Numero_D
Obtener todos los empleados del departamento 001
SELECT
NSS,Nombre,Num_Dep
FROM empleado
WHERE empleado.Num_Dep LIKE '001'
Seleccionar los empleados del departamento de Investigación y la información de este departamento
SELECT
NSS,Nombre,Numero_D,Nombre_D
FROM empleado,departamento
WHERE empleado.Num_Dep LIKE departamento.Numero_D
ANDdepartamento.Nombre_D LIKE 'sistemas'
Seleccionar el salario de cada uno de los empleados
SELECT
Nombre,apellidos,salario
FROM empleado
Seleccionar los distintos salarios que cobran los empleados
SELECT
salario
FROM empleado
GROUP BY salario
Lista de todos los códigos de los proyectos en los que participa un empleado que se apellido perez bien como trabajador o como gerente deldepartamento al que pertenece el proyecto
SELECT
Cod_Proy
FROM trabaja_en,empleado
WHERE NSS_E LIKE NSS AND apellidos LIKE 'perez'
Seleccionar los NSS de los empleados que trabajan en el mismo proyecto y con las mismas horas de trabajo que el empleado con NSS='123455/90'
SELECT NSS_E
FROM trabaja_en
WHERE (Cod_Proy =(SELECT Cod_Proy FROM trabaja_en WHERE NSS_E='45213546')
ANDhoras=(SELECT horas FROM trabaja_en WHERE NSS_E='45213546'));
Nombre y apellidos de los empleados que tengan un salario mayor que cualquiera de los empleados del departamento 002
SELECT Nombre, Apellidos
FROM empleado
WHERE salario > (SELECT Max(salario) FROM empleado WHERE Num_Dep='002')
Nombre y apellidos de los empleados que tienen familiares que tienen el mismo nombre y sexo que élSELECT empleado.Nombre, Apellidos
FROM empleado,familiar
WHERE empleado.Sexo LIKE familiar.Sexo
AND empleado.Nombre LIKE familiar.Nombre
Nombre de todos los empleados que trabajan en todos los proyectos del departamento 003
SELECT Nombre,NSS_E
FROM empleado,trabaja_en
WHERE Cod_Proy LIKE
(SELECT Cod_P FROM proyecto WHERE Num_Dep LIKE '003')
AND trabaja_en.NSS_E LIKE empleado.NSS
NSS,nombre y apellidos de los empleados que no tienen familiares dependientes de él
SELECT NSS,Nombre,Apellidos
FROM empleado
WHERE NOT EXISTS (SELECT NSS,NSSE FROM empleado,familiar WHERE NSS LIKE NSSE)
Dadas las siguientes tablas relacionales:
Persona (#DNI, nombre, apellidos, DNI_cabeza, calle, numero, escalera, planta, puerta)
Piso (#calle, #n´umero, #escalera, #planta, #puerta,...
Regístrate para leer el documento completo.