SQL: DDL
SQL:DDL <ul><li>DDL: Lenguaje de Definición de Datos </li></ul><ul><li>Permite crear objetos en la Base de Datos </li></ul...
<ul><ul><li>Se pueden crear tablas con la instrucción  </li></ul></ul><ul><ul><li>CREATE TABLE nombre_tabla </li></ul></ul...
<ul><li>Restricciones de Integridad </li></ul><ul><li>Aseguran que los cambios realizados a una BD no provoquen inconsiste...
<ul><li>Nulos :  Un atributo puede o no admitir nulos.  En SQL se especifica mediante la cláusula  NOT NULL . </li></ul><u...
<ul><li>Clave Alternativa :  Garantiza la unicidad de los atributos declarados como tal. Se utiliza la cláusula  UNIQUE . ...
<ul><li>Sea el modelo: </li></ul>DEPARTAMENTO # código  *  nombre * ciudad EMPLEADO #cédula * nombre  * salario  comisión ...
<ul><li>CREATE TABLE   departamento </li></ul><ul><li>( codigo  NUMBER (6)  PRIMARY KEY , </li></ul><ul><li>nombre  VARCHA...
<ul><li>Ejemplos con la cláusula   CHECK : </li></ul><ul><li>CREATE TABLE empleado </li></ul><ul><li>( cédula NUMBER(10)  ...
<ul><li>CREATE TABLE envio ( </li></ul><ul><li>snro  NUMBER(6), </li></ul><ul><li>pnro  NUMBER(6), </li></ul><ul><li>canti...
<ul><li>Clave foránea hacia una clave primaria compuesta: </li></ul><ul><li>CREATE TABLE revision( </li></ul><ul><li>codre...
<ul><li>Se puede modificar la estructura de una tabla con la instrucción  ALTER TABLE </li></ul><ul><ul><li>Ej:  ALTER TAB...
<ul><li>EJEMPLO:  </li></ul><ul><li>CREATE TABLE t (  </li></ul><ul><li>a number(3) PRIMARY KEY,  </li></ul><ul><li>b date...
<ul><li>Para eliminar filas de una tabla: </li></ul><ul><li>DELETE  </li></ul><ul><li>FROM tabla  </li></ul><ul><li>[WHERE...
<ul><li>Para actualizar filas de una tabla: </li></ul><ul><li>UPDATE tabla  </li></ul><ul><li>SET campo = nuevo_valor </li...
<ul><li>Ejemplo: </li></ul><ul><li>UPDATE envio  </li></ul><ul><li>SET cantidad = cantidad - 5 </li></ul><ul><li>WHERE snr...
<ul><li>Implementación de un  Arco </li></ul>FACTURA # código * fecha EMPLEADO # cédula  * nombre * carné AUTO # placa * m...
<ul><li>CREATE TABLE empleado( </li></ul><ul><li>cedula  NUMBER(8) PRIMARY KEY, </li></ul><ul><li>nombre  VARCHAR(25) NOT ...
<ul><li>CREATE TABLE factura ( </li></ul><ul><li>codigo NUMBER(6) PRIMARY KEY, </li></ul><ul><li>fecha    DATE NOT NULL, <...
<ul><li>INSERT INTO factura VALUES(300,SYSDATE,10,NULL); </li></ul><ul><li>INSERT INTO factura VALUES(900,TO_DATE('28/12/0...
Implementación de Supertipos/Subtipos PERSONA #cédula *nombre ESTUDIANTE *promedio PROFESOR *registro
<ul><li>Repasar la clase de  Conversión  </li></ul><ul><li>E-R a Relacional </li></ul><ul><li>Veamos la alternativa 2 para...
<ul><li>Se crea la tabla para el supertipo: </li></ul><ul><li>CREATE TABLE persona( </li></ul><ul><li>cedula  NUMBER(8) PR...
SUPERTIPOS/SUBTIPOS <ul><li>Se crean tablas para cada uno de los subtipos: </li></ul><ul><li>CREATE TABLE estudiante( </li...
<ul><li>En esta alternativa se debe validar por programación que la cédula de una persona no exista en ambas tablas para g...
Upcoming SlideShare
Loading in...5
×

SQL-DDL

6,698

Published on

Sintaxis y detalles del DDL de SQL

Published in: Technology
1 Comment
5 Likes
Statistics
Notes
No Downloads
Views
Total Views
6,698
On Slideshare
0
From Embeds
0
Number of Embeds
8
Actions
Shares
0
Downloads
196
Comments
1
Likes
5
Embeds 0
No embeds

No notes for slide
  • 1
  • 2
  • 3
  • 3
  • SQL-DDL

    1. 1. SQL: DDL
    2. 2. SQL:DDL <ul><li>DDL: Lenguaje de Definición de Datos </li></ul><ul><li>Permite crear objetos en la Base de Datos </li></ul><ul><li>Tipos de Objetos: </li></ul><ul><li>- Tablas </li></ul><ul><li>- Índices </li></ul><ul><li>- Vistas </li></ul><ul><li>- Otros </li></ul>
    3. 3. <ul><ul><li>Se pueden crear tablas con la instrucción </li></ul></ul><ul><ul><li>CREATE TABLE nombre_tabla </li></ul></ul><ul><ul><li>( atributos: cada uno con su tipo de datos y </li></ul></ul><ul><ul><li>restricciones </li></ul></ul><ul><ul><li>); </li></ul></ul><ul><ul><li>Se pueden crear índices así: </li></ul></ul><ul><ul><li>CREATE INDEX nombreindice ON tabla(columna(s)); </li></ul></ul><ul><ul><li>Las vistas no son más que “consultas con nombres” </li></ul></ul><ul><ul><li>Ejemplo: </li></ul></ul><ul><ul><li>CREATE VIEW nombre_vista AS consulta; </li></ul></ul>SQL:DDL
    4. 4. <ul><li>Restricciones de Integridad </li></ul><ul><li>Aseguran que los cambios realizados a una BD no provoquen inconsistencia en la información. </li></ul><ul><li>Restricciones de dominio: Conjunto de valores y de operaciones permitidas sobre ellos. </li></ul><ul><li>Dominios base en SQL: </li></ul><ul><ul><li>CHAR(p) : Cadena de caracteres de longitud fija p (máxima longitud p) </li></ul></ul><ul><ul><li>VARCHAR(p) : Cadena de caracteres de longitud variable. Máxima longitud p. </li></ul></ul><ul><ul><li>NUMBER(p,s) : Valor numérico de precisión p y escala s. </li></ul></ul><ul><ul><li>DATE : Fechas válidas. </li></ul></ul>
    5. 5. <ul><li>Nulos : Un atributo puede o no admitir nulos. En SQL se especifica mediante la cláusula NOT NULL . </li></ul><ul><li>Integridad Referencial : Garantiza la existencia de las Claves Foráneas. </li></ul><ul><li>Para ello se utilizan las cláusulas REFERENCES y FOREIGN KEY </li></ul><ul><li>Clave Primaria : Garantiza la unicidad y obligatoriedad del o los atributos definidos como clave primaria. Para ello se utiliza la cláusula PRIMARY KEY . </li></ul>Restricciones de Integridad
    6. 6. <ul><li>Clave Alternativa : Garantiza la unicidad de los atributos declarados como tal. Se utiliza la cláusula UNIQUE . </li></ul><ul><li>Si se desea hacer obligatoria debe especificarse adicionalmente NOT NULL . </li></ul><ul><li>Las reglas CHECK para atributos : </li></ul><ul><li>Involucra condiciones de chequeo para uno o varios atributos. </li></ul><ul><li>Sintaxis : CHECK ( condicion) </li></ul>Restricciones de Integridad
    7. 7. <ul><li>Sea el modelo: </li></ul>DEPARTAMENTO # código * nombre * ciudad EMPLEADO #cédula * nombre * salario comisión * cargo el jefe de el subordinado de el lugar de trabajo de adscrito a
    8. 8. <ul><li>CREATE TABLE departamento </li></ul><ul><li>( codigo NUMBER (6) PRIMARY KEY , </li></ul><ul><li>nombre VARCHAR (6) NOT NULL UNIQUE , </li></ul><ul><li>ciudad VARCHAR (12) CHECK (ciudad IN </li></ul><ul><li>('Medellín', 'Bogotá', 'Cali')) NOT NULL </li></ul><ul><li>); </li></ul><ul><li>CREATE TABLE empleado </li></ul><ul><li>( cédula NUMBER (10) PRIMARY KEY , </li></ul><ul><li>nombre VARCHAR (30) NOT NULL , </li></ul><ul><li>jefe NUMBER (10) REFERENCES empleado, </li></ul><ul><li>salario NUMBER (10,2) NOT NULL , </li></ul><ul><li>comisión NUMBER (2) , </li></ul><ul><li>cargo VARCHAR (20) NOT NULL , </li></ul><ul><li>depto NUMBER (6) NOT NULL REFERENCES d epartamento </li></ul><ul><li>); </li></ul>El atributo ciudad sólo admitirá 1 de estas 3 ciudades. Es necesario además colocarle la restricción de no nulidad. Clave foránea Clave foránea sobre la misma tabla
    9. 9. <ul><li>Ejemplos con la cláusula CHECK : </li></ul><ul><li>CREATE TABLE empleado </li></ul><ul><li>( cédula NUMBER(10) PRIMARY KEY, </li></ul><ul><li>nombre VARCHAR(30) NOT NULL, </li></ul><ul><li>jefe NUMBER(10) REFERENCES empleado(cédula), </li></ul><ul><li>salario NUMBER(10,2) NOT NULL CHECK (salario > 0 ) , </li></ul><ul><li>comision NUMBER(3) CHECK (comision between 0 and 100), </li></ul><ul><li>cargo VARCHAR(20) NOT NULL, </li></ul><ul><li>depto NUMBER(6) NOT NULL REFERENCES departamento </li></ul><ul><li>); </li></ul>Puede especificarse el atributo hacia el cual se refiere la clave foránea Restricciones de Integridad
    10. 10. <ul><li>CREATE TABLE envio ( </li></ul><ul><li>snro NUMBER(6), </li></ul><ul><li>pnro NUMBER(6), </li></ul><ul><li>cantidad NUMBER(6) NOT NULL, </li></ul><ul><li>PRIMARY KEY(snro,pnro) </li></ul><ul><li>); </li></ul><ul><li>Nota : Es incorrecto colocar PRIMARY KEY al </li></ul><ul><li>frente de snro y de pnro. </li></ul>Restricciones de Integridad Especificación de una clave primaria compuesta:
    11. 11. <ul><li>Clave foránea hacia una clave primaria compuesta: </li></ul><ul><li>CREATE TABLE revision( </li></ul><ul><li>codrevision NUMBER(5) PRIMARY KEY, </li></ul><ul><li>cf_snro NUMBER(6) NOT NULL, </li></ul><ul><li>cf_pnro NUMBER(6) NOT NULL, </li></ul><ul><li>revisor VARCHAR(20)NOT NULL, </li></ul><ul><li>FOREIGN KEY(cf_snro,cf_pnro) REFERENCES envio </li></ul><ul><li>); </li></ul>Cuando la clave primaria a la que se referencia es compuesta se debe utilizar esta sintaxis. Restricciones de Integridad
    12. 12. <ul><li>Se puede modificar la estructura de una tabla con la instrucción ALTER TABLE </li></ul><ul><ul><li>Ej: ALTER TABLE mitabla </li></ul></ul><ul><ul><li>ADD nuevocampo NUMBER(3); </li></ul></ul><ul><li>Para destruir una tabla (estructura y datos) </li></ul><ul><ul><li>DROP TABLE nombre_tabla; </li></ul></ul>Restricciones de Integridad
    13. 13. <ul><li>EJEMPLO: </li></ul><ul><li>CREATE TABLE t ( </li></ul><ul><li>a number(3) PRIMARY KEY, </li></ul><ul><li>b date, </li></ul><ul><li>c varchar(3)); </li></ul><ul><li>INSERT INTO t VALUES(10, CURRENT_DATE, ' hi ' ); </li></ul><ul><li>INSERT INTO t(c,a) VALUES(‘bye’,20); </li></ul>Se pueden especificar los campos a insertar… Ingresando valores … ¿Qué pasa con el atributo b en este caso?
    14. 14. <ul><li>Para eliminar filas de una tabla: </li></ul><ul><li>DELETE </li></ul><ul><li>FROM tabla </li></ul><ul><li>[WHERE condicion]; </li></ul><ul><li>Ej: DELETE </li></ul><ul><li> FROM envio </li></ul><ul><li>WHERE snro=34; </li></ul><ul><li>La condición puede incluir subconsultas… </li></ul>Eliminando valores …
    15. 15. <ul><li>Para actualizar filas de una tabla: </li></ul><ul><li>UPDATE tabla </li></ul><ul><li>SET campo = nuevo_valor </li></ul><ul><li>[WHERE condicion]; </li></ul><ul><li>- Se pueden actualizar varios campos al mismo tiempo separándolos por comas </li></ul><ul><li>- La condición y nuevo_valor pueden incluir </li></ul><ul><li>subconsultas… </li></ul>Actualizando valores …
    16. 16. <ul><li>Ejemplo: </li></ul><ul><li>UPDATE envio </li></ul><ul><li>SET cantidad = cantidad - 5 </li></ul><ul><li>WHERE snro = 10 AND pnro = 20; </li></ul>Actualizando valores …
    17. 17. <ul><li>Implementación de un Arco </li></ul>FACTURA # código * fecha EMPLEADO # cédula * nombre * carné AUTO # placa * marca
    18. 18. <ul><li>CREATE TABLE empleado( </li></ul><ul><li>cedula NUMBER(8) PRIMARY KEY, </li></ul><ul><li>nombre VARCHAR(25) NOT NULL, </li></ul><ul><li>carnet NUMBER(5) UNIQUE NOT NULL); </li></ul><ul><li>INSERT INTO empleado VALUES(10,'Dino',20); </li></ul><ul><li>CREATE TABLE auto( </li></ul><ul><li>placa VARCHAR(10) PRIMARY KEY, </li></ul><ul><li>marca VARCHAR(20) NOT NULL); </li></ul><ul><li>INSERT INTO auto VALUES('CTV 40','BMW'); </li></ul>Clave Alternativa
    19. 19. <ul><li>CREATE TABLE factura ( </li></ul><ul><li>codigo NUMBER(6) PRIMARY KEY, </li></ul><ul><li>fecha DATE NOT NULL, </li></ul><ul><li>cedula NUMBER(8) REFERENCES empleado, </li></ul><ul><li>placa VARCHAR(10) REFERENCES auto, </li></ul><ul><li>CHECK ( (placa IS NULL AND cedula IS NOT NULL) </li></ul><ul><li>OR </li></ul><ul><li>(placa IS NOT NULL AND cedula IS NULL) </li></ul><ul><li> ) </li></ul><ul><li>); </li></ul>Por medio del CHECK se implementa el arco ya que garantiza que si una CF es nula, la otra CF es no nula…
    20. 20. <ul><li>INSERT INTO factura VALUES(300,SYSDATE,10,NULL); </li></ul><ul><li>INSERT INTO factura VALUES(900,TO_DATE('28/12/04'),NULL,'CTV 40'); </li></ul><ul><li>propia de Oracle, en el SQL estándar es CAST </li></ul><ul><li>Note que las dos siguientes inserciones fallan : </li></ul><ul><li>INSERT INTO factura VALUES(500,SYSDATE,10,'CTV 40'); </li></ul><ul><li>INSERT INTO factura VALUES(600,SYSDATE,NULL,NULL); </li></ul>Genera la fecha actual (en Oracle) En SQL standard es CURRENT DATE
    21. 21. Implementación de Supertipos/Subtipos PERSONA #cédula *nombre ESTUDIANTE *promedio PROFESOR *registro
    22. 22. <ul><li>Repasar la clase de Conversión </li></ul><ul><li>E-R a Relacional </li></ul><ul><li>Veamos la alternativa 2 para implementar supertipos y subtipos </li></ul>SUPERTIPOS/SUBTIPOS
    23. 23. <ul><li>Se crea la tabla para el supertipo: </li></ul><ul><li>CREATE TABLE persona( </li></ul><ul><li>cedula NUMBER(8) PRIMARY KEY, </li></ul><ul><li>nombre VARCHAR(20) NOT NULL ); </li></ul>SUPERTIPOS/SUBTIPOS
    24. 24. SUPERTIPOS/SUBTIPOS <ul><li>Se crean tablas para cada uno de los subtipos: </li></ul><ul><li>CREATE TABLE estudiante( </li></ul><ul><li>cedest NUMBER(8) PRIMARY KEY REFERENCES persona, </li></ul><ul><li>promedio NUMBER(3,2) ); </li></ul><ul><li>CREATE TABLE profesor( </li></ul><ul><li>cedprof NUMBER(8) PRIMARY KEY REFERENCES persona, </li></ul><ul><li>registro NUMBER(5) ); </li></ul>3 dígitos: 1 entero, 2 decimales
    25. 25. <ul><li>En esta alternativa se debe validar por programación que la cédula de una persona no exista en ambas tablas para garantizar la exclusividad </li></ul>
    1. ¿Le ha llamado la atención una diapositiva en particular?

      Recortar diapositivas es una manera útil de recopilar información importante para consultarla más tarde.

    ×