SQL: Lenguaje de Interrogación Estructurado
Vistas Declaración de vista CREATE VIEW ( ) AS SELECT... Semántica Tabla virtual cuyo contenido es el resultado de un query Renombramiento de atributos (lista de nombs. no obligatoria) Esquema tomado del query Ejemplo: Títulos del CLC con 20% de descuento CREATE VIEW OfertaCLC(titulo,precio) AS SELECT LIBRO.nombre,precio*0.8 FROM Ofrece, LIBRERIA, LIBRO WHERE rif=riflib AND LIBRERIA.nombre=‘CLC’ AND codigo =codlib
Actualización de vistas Es un tema de investigación en la actualidad: Si es vista “simple” sobre una tabla no hay problema Si tiene calculados no es trivial Si tiene agregados no es posible Si involucra varias tablas es complejo
Clave primaria Sintaxis en CREATE TABLE..PRIMARY KEY PRIMARY KEY ( ) Semántica La primera para clave primaria simple La segunda para clave primaria compuesta Ejemplo: Clave en Libro CREATE TABLE LIBRO ( nombre VARCHAR(100), codigo INT PRIMARY KEY, autor VARCHAR(30), editorial VARCHAR(30) )
Claves alternas Sintaxis en CREATE TABLE..UNIQUE UNIQUE ( ) Semántica La primera para clave alterna simple La segunda para clave alterna compuesta Ejemplo: Clave en Librería CREATE TABLE LIBRERIA ( nombre VARCHAR(100) UNIQUE, rif INT PRIMARY KEY, direccion VARCHAR(100), )
Claves foráneas Sintaxis en CREATE TABLE -..REFERENCES ( ) -FORAIN KEY ( ) REFERENCES ( ) Semántica Indica la tabla y los atributos que se referencian Ejemplo: Clave en Ofrece CREATE TABLE Ofrece ( codlib INT REFERENCES LIBRO(codigo), riflib INT REFERENCES LIBRERIA(rif), precio REAL, existencia INT(30), PRIMARY KEY (riflib,codlib) )
Problemas de modificación CF Inserción: clave foránea no nula ni corresponde a una tupla referenciada Actualización: clave foránea no nula ni corresponde a una tupla referenciada Eliminación: tupla referenciada por clave foránea Actualización: tupla referenciada por clave foránea
Mantenimiento de Integridad Referencial Rechazar: no admite la modificaición (política por defecto) Cascada(3,4): propaga la actualización o eliminación a las tuplas que le referencian Colocar nulo (3,4): coloca nulo en las calves foráneas que refrencian a la tupla eliminada o actualizada
Ejemplo: Clave en Ofrece CREATE TABLE Ofrece ( codlib INT REFERENCES LIBRO(codigo) ON DELETE CASCADE ON UPDATE CASCADE, riflib INT REFERENCES LIBRERIA(rif) ON UPDATE CASCADE, precio REAL, existencia INT(30), PRIMARY KEY (riflib,codlib) )
Restricción de Nulos Sintaxis en CREATE TABLE..NOT NULL Semántica El atributo no puede ser nulo En una inserción debe especificarse valor Ejemplo: Autor de un Libro CREATE TABLE LIBRO ( nombre VARCHAR(100), codigo INT PRIMARY KEY, autor VARCHAR(30) NOT NULL, editorial VARCHAR(30) )
Restricción de Valores con condiciones Sintaxis en CREATE TABLE..CHECK Semántica El atributo debe cumplir la condición Los condición es como en un WHERE Ojo:No Claves Foráneas Ejemplo: El sexo ‘M’ o ‘F’ CREATE TABLE LECTOR ( ci CHAR(12) PRIMARY KEY, nombre VARCHAR(30) NOT NULL, sexo CHAR CHECK (sexo IN (‘F’,’M’) )
Restricción de Dominio Sintaxis CREATE DOMAIN CHECK Semántica VALUE: Indica el valor Los condición es como en un WHERE Ejemplo: Dominio de edades CREATE DOMAIN Edades INT CHECK (VALUE>=0 AND VALUE<=120) )
Restricción de Tuplas Sintaxis en CREATE TABLE...CHECK Semántica La tupla debe cumplir la condición La condición es como en un WHERE Ejemplo: Los códigos de los libros UNILIT CREATE TABLE LIBRO ( nombre VARCHAR(100), codigo INT PRIMARY KEY, autor VARCHAR(30) NOT NULL, editorial VARCHAR(30), CHECK (codigo>=10000 AND código ’UNILIT’) )