SGBD_SQL Consultas
Access SQL: DDL y DML
Ejercicio
Una empresa de Ingeniería precisa una
base de datos para la gestión de sus
proyectos.
Necesita almacenar información acerca
de sus empleados y los proyectos en los
que trabaja.
1
Ejercicio
Sobre los Proyectos:
Número de proyecto
DNI de la persona que lo dirige
Cliente
Fecha de inicio
Ejercicio
Sobre los Empleados:
DNI
Apellidos y nombre
Cargo quedesempeña en la empresa
Fecha de nacimiento
Tiempo en horas dedicado por cada empleado a
cada uno de los proyectos en que participa.
2
Ejercicio
Se deberá tener en cuenta que:
Un empleado puede estar asignado a varios
proyectos
En un proyecto trabajan varios empleados
Un proyecto solo tiene un director, que tiene
que ser Jefe de Proyecto
Diagrama Entidad-Relación
Horas
DNI
Número
NombreEmpleado
F.Nacimiento
Cargo
Trabaja
DNI Dir
Proyecto
Cliente
F.Inicio
3
Modelo Relacional
Tabla Empleados
DNI Nombre Puesto FNacimiento
Clave Primaria
Modelo Relacional
Tabla Proyectos
Proyecto DNI_Director Cliente Inicio
Clave Primaria
4
Modelo Relacional
Tabla Tiempos
DNI Proyecto Tiempo
¿Clave Primaria ?
Modelo Relacional
Relaciones:
DNI
Nombre
Puesto
Fnacimiento
DNI
ClaveForanea
Proyecto
Proyecto
Tiempo
DNI_Director
Cliente
Inicio
Clave Foranea
Clave Foranea
5
Creación de Tablas
Tabla Empleados
CREATE TABLE Empleados (
DNI INTEGER,
Nombre CHAR(50),
Puesto CHAR(50),
FNacimiento DATE)
Creación de Tablas
Tabla Proyectos
CREATE TABLE Proyectos (
Numero INTEGER,
DNI_Director CHAR(50),
Cliente CHAR(50),
FInicio DATE)
6
Creación de Tablas
Tabla TiemposCREATE TABLE Tiempos (
Proyecto INTEGER,
DNI INTEGER,
Tiempo INTEGER)
Claves Primarias
Tablas Empleados y Proyectos
ALTER TABLE Empleados ADD
CONSTRAINT clave_empleados
PRIMARY KEY(DNI)
ALTER TABLE Proyectos ADD
CONSTRAINT clave_proyectos
PRIMARY KEY(Proyecto)
7
Integridad Referencial
Relación de Tiempos a Empleados
ALTER TABLE Tiempos ADD
CONSTRAINT ajena_empleados
FOREIGN KEY(DNI) REFERENCESEmpleados(DNI)
Integridad Referencial
Relación de Tiempos a Proyectos
ALTER TABLE Tiempos ADD
CONSTRAINT ajena_proyectos
FOREIGN KEY(Proyecto) REFERENCES
Proyectos(Proyecto)
8
Integridad Referencial
Relación de Proyectos a Empleados
ALTER TABLE Proyectos ADD
CONSTRAINT ajena_empleados
FOREIGN KEY(DNI_Director)
REFERENCES Empleados(DNI)
Modificación de tablas
Añadir un nuevo campo en la tablaProyectos que indique si el proyecto está
ó no finalizado (campo lógico)
ALTER TABLE Proyectos ADD
Finalizado LOGICAL;
Proyecto DNI_Director Cliente Inicio Finalizado
9
Claves Candidatas
Suponiendo la existencia de alguna
clave de este tipo, la sentencia SQL que
la genera es:
ALTER TABLE tabla ADD CONSTRAINT
clave_unica UNIQUE(columna)
Consultas
Sentencia SELECT
SELECT [DISTINCT] campos FROMtabla
Ejemplo: Listar el nombre y el puesto de cada
empleado
SELECT nombre, puesto FROM empleados
10
Consultas
Sentencia SELECT
Listar todos los campos de la tabla:
SELECT * FROM empleados
Columnas calculadas y alias de columna:
SELECT SUM(tiempo)/24 AS Dias
FROM tiempos
Consultas
Sentencia SELECT
SELECT campos FROM tabla
WHERE condición
Ejemplo: Listar el nombre de los empleados nacidos
en unafecha determinada
SELECT Nombre FROM Empleados
WHERE Fnacimiento=#05/08/1970#
11
Consultas
Test de Comparación:
Comparación simple:
=, <>, >, >=, <, <=
Pertenencia a conjunto
… WHERE expresión
IN (valor1, valor2, valor3, …)
Pertenencia a rango
… WHERE expresión
BETWEEN valor1 AND valor2
Consultas
Correspondencia con patrón:
… WHERE expresión
LIKE ‘patrón’
Uso de comodines ( * , ? ) ó ( % ,_ )
Valor nulo (NULL)
… WHERE expresión IS NULL
Condiciones compuestas: mediante AND, OR y
NOT (y el uso de paréntesis)
12
Consultas
Ordenación de filas:
Criterio de ordenación:
SELECT campos FROM tabla
ORDER BY columna [DESC] [,columna,…]
Límite de filas
SELECT TOP n campos FROM tabla
ORDER BY columna
Consultas
Agrupación
SELECT columna, función(columna)
FROM tabla
WHERE condición
GROUP...
Regístrate para leer el documento completo.