SQL: DDL - PowerPoint PPT Presentation

1 / 25
About This Presentation
Title:

SQL: DDL

Description:

CREATE INDEX nombreindice ON tabla(columna(s) ... Nulos: Un atributo puede o no admitir nulos. En SQL se especifica mediante la cl usula NOT NULL. ... – PowerPoint PPT presentation

Number of Views:231
Avg rating:3.0/5.0
Slides: 26
Provided by: Francisc147
Category:
Tags: ddl | sql | admitir

less

Transcript and Presenter's Notes

Title: SQL: DDL


1
SQL DDL
2
SQLDDL
  • DDL Lenguaje de Definición de Datos
  • Permite crear objetos en la Base de Datos
  • Tipos de Objetos
  • - Tablas
  • - Índices
  • - Vistas
  • - Otros

3
SQLDDL
  • 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

4
  • 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.

5
Restricciones de Integridad
  • 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.

6
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)

7
  • Sea el modelo

DEPARTAMENTO código nombre ciudad
el lugar de trabajo de
adscrito a
EMPLEADO cédula nombre
salario comisión cargo
el subordinado de
el jefe de
8
  • 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
    departamento
  • )

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 sobre la misma tabla
Clave foránea
9
Restricciones de Integridad
  • 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 gt 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
10
Restricciones de Integridad
Especificación de una clave primaria compuesta
  • 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.

11
Restricciones de Integridad
  • 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.
12
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

13
Ingresando valores
  • 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
Qué pasa con el atributo b en este caso?
14
Eliminando valores
  • Para eliminar filas de una tabla
  • DELETE
  • FROM tabla
  • WHERE condicion
  • Ej DELETE
  • FROM envio
  • WHERE snro34
  • La condición puede incluir subconsultas

15
Actualizando 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

16
Actualizando valores
  • Ejemplo
  • UPDATE envio
  • SET cantidad cantidad - 5
  • WHERE snro 10 AND pnro 20

17
  • Implementación de un Arco


EMPLEADO cédula nombre carné

FACTURA código fecha

AUTO placa marca
18
  • 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
19
  • 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
20
Genera la fecha actual (en Oracle) En SQL
standard es CURRENT DATE
  • 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)

21
Implementación de Supertipos/Subtipos
PERSONA cédula nombre
ESTUDIANTE promedio
PROFESOR registro
22
SUPERTIPOS/SUBTIPOS
  • Repasar la clase de Conversión
  • E-R a Relacional
  • Veamos la alternativa 2 para implementar
    supertipos y subtipos

23
SUPERTIPOS/SUBTIPOS
  • Se crea la tabla para el supertipo
  • CREATE TABLE persona(
  • cedula NUMBER(8) PRIMARY KEY,
  • nombre VARCHAR(20) NOT NULL )

24
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
25
  • 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
Write a Comment
User Comments (0)
About PowerShow.com