SQL-DDL
Upcoming SlideShare
Loading in...5
×
 

SQL-DDL

on

  • 6,265 views

Sintaxis y detalles del DDL de SQL

Sintaxis y detalles del DDL de SQL

Statistics

Views

Total Views
6,265
Views on SlideShare
5,302
Embed Views
963

Actions

Likes
1
Downloads
141
Comments
1

8 Embeds 963

http://bdatos.wordpress.com 873
http://basesdedatospjb2013.webnode.es 78
http://boozbd.webnode.es 5
http://lasalleurubamba.edu.pe 3
http://webcache.googleusercontent.com 1
http://cms.basesdedatospjb2013.webnode.es 1
http://preview.basesdedatospjb2013.webnode.es 1
http://m.boozbd.webnode.es 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • 1
  • 2
  • 3
  • 3

SQL-DDL SQL-DDL Presentation Transcript

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