La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

SQL: DDL.

Presentaciones similares


Presentación del tema: "SQL: DDL."— Transcripción de la presentación:

1 SQL: DDL

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

3 SQL:DDL 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. 1

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. 2

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 3

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

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: INSERT INTO t(c,a) VALUES(‘bye’,20);
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 snro=34; 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 codigo NUMBER(6) PRIMARY KEY, fecha DATE NOT NULL,
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 Note que las dos siguientes inserciones fallan:
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);


Descargar ppt "SQL: DDL."

Presentaciones similares


Anuncios Google