DDL - Capítulo 8 - SQL
Document Details
Uploaded by PhenomenalYttrium8968
E.P.E.T. N° 16
Tags
Summary
Este documento ofrece una descripción general de los conceptos básicos de DDL (Data Definition Language) en SQL. Se centra en la creación de esquemas, tablas, y restricciones. Incluye ejemplos de comandos y define los diferentes tipos de datos utilizados.
Full Transcript
DDL Capitulo 8 Sql lenguaje estandar, es DDL y DML a la vez ya que diseña la base de datos y lo manipula. Sql es un lenguaje de programacion. Es acronimo de Structured Query Language, que significa Lenguaje de consulta estructurado, es global. Los dbms relacionales comercial son Postgre sql,...
DDL Capitulo 8 Sql lenguaje estandar, es DDL y DML a la vez ya que diseña la base de datos y lo manipula. Sql es un lenguaje de programacion. Es acronimo de Structured Query Language, que significa Lenguaje de consulta estructurado, es global. Los dbms relacionales comercial son Postgre sql, mysql server, oracle, dBASE, etc.. Algebra relacional Calculo basado en tuplas Tabla (ddl) ---------------------------- relacion (modelo relacional) Fila (ddl) ------------------------------ tupla (modelo relacional) Columna (ddl) ----------------------- atributo (modelo relacional) Create -------------- para crear esquemas, tablas, dominios asi como vistas, aserciones y triggers. Esquema SQL se identifica con un nombre esquema e incluye un identificador de autorizacion para indicar el usuario. El que lo crea es el DBA osea el administrador del sistema. CREATE SCHEMA Catalogo es una coleccion de esquemas bajo un nombre, en untorno de SQL. Un entorno SQL es una instalacion de RBDMS (sistema de gestion de base de datos relacionales) compatible con sql Las columnas en SQL siempre deben estar ordenadas El comando CREATE TABLE asigna un nombre, su tipo de datos y restricciones iniciales. Las relaciones o tablas creados con este comando se le asigna tabla base que crea y almacena como un fichero la relacion y sus tuplas. El comando DROP se utiliza para eliminar los elementos con nombre del esquema, como tablas, dominios o restricciones. Hay 2 opciones de compartimiento la cual son CASCADE y RESTRICT. Para eliminar el esquema de la base de datos y sus tablas, dominios, y otros elementos se usa CASCADE sin embargo si se usa RESTRICT el esquema solo eliminara si no contiene elementos en caso contrario el DROP no se ejecutara Si se desea eliminar los registros, pero manteniendo la definición de la tabla para un uso futuro, Entonces hay que utilizar el comando DELETE El comando ALTER TABLE sirve para modificar una tabla existente en una base de datos y luego con "ADD" agregar nuevas columnas. ej: ALTER TABLE personas ----------> va hacia la tabla personas ADD COLUMN nombre VARCHAR(50); ADD COLUMN apellido VARCHAR(50); ALTER TABLE no solo sirve para modificar columnas, tambien sirve para eliminar columnas y la adicion o eliminacion de una columna (atributo en modelo relacional) Para eliminar una columna, debemos elegir CASCADE o RESTRICT como comportamiento de eliminación. En el caso de CASCADE, todas las restricciones y vistas que hacen referencia a la columna se eliminarán automáticamente del esquema, junto con la columna. Si optamos por RESTRICT, el comando es satisfactorio sólo si no hay vistas o restricciones (u otros elementos) que hagan referencia a la columna. Si se desea eliminar los registros, pero manteniendo la definición de la tabla para un uso futuro, Entonces hay que utilizar el comando DELETE CREATE TABLE EMPLEADO ( Nombre VARCHAR(15) NOT NULL, Apellido1 CHAR, Apellido2 VARCHAR(15) NOT NULL, Dni CHAR(9) NOT NULL, FechaNac DATE, Dirección VARCHAR(30), Sexo CHAR, Sueldo DECIMAL(10,2), SuperDni CHAR(9), Dno INT NOT NULL, PRIMARY KEY (Dni), FOREIGN KEY(SuperDni) REFERENCES EMPLEADO(Dni), FOREIGN KEY(Dno) REFERENCES DEPARTAMENTO(NúmeroDpto) ); CREATE TABLE DEPARTAMENTO ( NombreDpto VARCHAR(15) NOT NULL, NúmeroDpto INT NOT NULL, DniDirector CHAR(9) NOT NULL, FechaIngresoDirector DATE, PRIMARY KEY(NúmeroDpto), UNIQUE(NombreDpto), FOREIGN KEY(DniDirector) REFERENCES EMPLEADO(Dni) ); CREATE TABLE LOCALIZACIONES_DPTO ( NúmeroDpto INT NOT NULL, UbicaciónDpto VARCHAR(15) NOT NULL, PRIMARY KEY(NúmeroDpto, UbicaciónDpto), FOREIGN KEY(NúmeroDpto) REFERENCES DEPARTAMENTO(NúmeroDpto) ); CREATE TABLE PROYECTO ( NombreProyecto VARCHAR(15) NOT NULL, NumProyecto INT NOT NULL, UbicaciónProyecto VARCHAR(15), NumDptoProyecto INT NOT NULL, PRIMARY KEY(NumProyecto), UNIQUE(NombreProyecto), FOREIGN KEY(NumDptoProyecto) REFERENCES DEPARTAMENTO(NúmeroDpto) ); CREATE TABLE TRABAJA_EN ( DniEmpleado CHAR(9) NOT NULL, NumProy INT NOT NULL, Horas DECIMAL(3,1) NOT NULL, PRIMARY KEY(DniEmpleado, NumProy), FOREIGN KEY(DniEmpleado) REFERENCES EMPLEADO(Dni), FOREIGN KEY(NumProy) REFERENCES PROYECTO(NumProyecto) ); Los tipos de datos básicos disponibles para los atributos son numérico, cadena de caracteres, cadena de bits, booleano, fecha y hora. Los tipos de numero entero es int, de coma flotante es real y decimal Los tipos de datos cadena de caracteres pueden ser de longitud fija (char) y longitud variable (varchar) El tipo de datos cadena de bits es de longitud fija bit o de longitud variable bit varying Un tipo de dato booleano tieno los valores de TRUE o FALSE. Tambien se utiza UNKNOWN Tambien existen los datos fecha y hora. El tipo DATE tiene 10 pocisiones y sus componentes AÑO, MES Y DIA. El tipo TIME tiene al menos 8 posiciones que son horas minutos y segundos Otro tipo es de marca de tiempo (TIMESTAP) incluye los campos DATE y TIME mas un minimo de 6 posiciones Interval permite especificar un intervalo (un valor relativo que puede utilizarse para incrementar o reducir el valor absoluto de una fecha, una hora o una marca de tiempo). Restricciones en SQL Restricciones: Son reglas que se aplican a los datos de una base de datos para garantizar su precisión y consistencia. Tipos de restricciones Restricciones de atributos: NOT NULL: Asegura que un atributo (columna) no pueda tener un valor NULL (vacío). Es útil cuando queremos que siempre haya un valor en esa columna. DEFAULT: Permite definir un valor predeterminado para un atributo si no se proporciona uno. Por ejemplo, si no se especifica un valor para Dno en la tabla EMPLEADO, se asignará automáticamente el valor 1. Restricciones de dominio: CHECK: Restringe los valores que un atributo puede tomar. Por ejemplo, para asegurar que NumeroDpto esté entre 1 y 20: sql NumeroDpto INT NOT NULL CHECK (NumeroDpto > 0 AND NumeroDpto < 21); Restricciones de clave: PRIMARY KEY: Identifica de manera única cada registro en una tabla. No permite valores NULL y debe ser única. Ejemplo: sql PRIMARY KEY(Dni) UNIQUE: Asegura que todos los valores en una columna (o conjunto de columnas) sean únicos, pero permite valores NULL. Integridad referencial: FOREIGN KEY: Establece una relación entre dos tablas y asegura que los valores en la columna clave extranjera existan en la clave primaria de la otra tabla. Permite acciones específicas en caso de actualizaciones o eliminaciones: ON DELETE SET NULL: Si se elimina la tupla referenciada, el valor en la clave extranjera se establece a NULL. ON UPDATE CASCADE: Si se actualiza la clave primaria, la clave extranjera se actualiza automáticamente. Ejemplo de tablas con restricciones sql CREATE TABLE EMPLEADO ( Dno INT NOT NULL DEFAULT 1, Dni CHAR(9), SuperDni CHAR(9), CONSTRAINT EMPPK PRIMARY KEY(Dni), CONSTRAINT SUPERFKEMP FOREIGN KEY(SuperDni) REFERENCES EMPLEADO(Dni) ON DELETE SET NULL ON UPDATE CASCADE, CONSTRAINT EMPDEPTFK FOREIGN KEY(Dno) REFERENCES DEPARTAMENTO(NumeroDpto) ON DELETE SET DEFAULT ON UPDATE CASCADE ); CREATE TABLE DEPARTAMENTO ( NumeroDpto INT PRIMARY KEY, NombreDpto VARCHAR(50) UNIQUE, DniDirector CHAR(9) NOT NULL DEFAULT '888665555', CONSTRAINT DEPTPK PRIMARY KEY(NumeroDpto), CONSTRAINT DEPTMGRFK FOREIGN KEY(DniDirector) REFERENCES EMPLEADO(Dni) ON DELETE SET DEFAULT ON UPDATE CASCADE ); Asignación de nombres a las restricciones Se pueden asignar nombres únicos a las restricciones para identificarlas fácilmente, como se muestra con CONSTRAINT EMPPK y CONSTRAINT DEPTPK. Restricciones en las tuplas CHECK: Para asegurar condiciones específicas en cada fila. Ejemplo: sql CHECK (FechaCreaciónDpto