Está en la página 1de 15

SQL: DDL

Francisco Moreno & Carlos Mario Zapata

SQL:DDL
DDL: Lenguaje de Definicin de Datos Permite crear objetos en la Base de Datos Tipos de Objetos: -Tablas -Indices -Vistas - Otros

Se pueden crear tablas con la instruccin CREATE TABLE ( atributos cada uno con tipo y restricciones ) Se pueden crear ndices as: CREATE INDEX nombreindice ON tabla(columna(s)) Las vistas no son ms que consultas con nombres Ejemplo: CREATE VIEW nombre_vista AS consulta

Restricciones de Integridad en una BD Relacional. Aseguran que los cambios realizados a una B. de D. no provoquen inconsistencia en la informacin. 1.1. Restricciones de dominio: Conjunto de valores y de operaciones permitidas sobre ellos. Dominios base para SQL: CHAR(p) : Cadena de carcteres de longitud fija p de mxima longitud p VARCHAR(p) : Cadena de carcteres de longitud variable. Mxima longitud p. NUMBER(p,s) : Valor numrico de precisin p y escala s. DATE : Fechas vlidas. La tendencia es permitir al programador definir sus propios tipos de datos.

Restricciones de Integridad en una B. de D. Relacional. (cont.) 1.2. Valores nulos : Un atributo puede o no admitir valores nulos. En SQL se define mediante la clusula NOT NULL. 1.3. Integridad Referencial: Garantiza la existencia de las claves forneas. Para ello se utiliza la clusula REFERENCES y FOREIGN KEY 1.4. Clave primaria: Garantiza la unicidad y obligatoriedad del o los atributos definidos como clave primaria. Para ello se utiliza la clusula PRIMARY KEY.

Restricciones de Integridad en una B. de D. Relacional. (cont.) 1.5. Clave candidata : Garantiza la unicidad de los atributos declarados como tal. Se utiliza la clusula UNIQUE. Si se desea hacer obligatoria debe especificarse adicionalmente NOT NULL. 1.6 Las reglas CHECK para atributos: Involucra condiciones de chequeo para uno o varios atributos. Sintaxis : CHECK ( condicion) Se valida si el atributo cambia. (Insert o Update).

Sea el modelo:
DEPARTAMENTO # codigo * Nombre Ciudad el lugar de trabajo de

adscrito a EMPLEADO #cdula *nombre *salario comisin *cargo

el subordinado de

el jefe de

Restricciones de Integridad en una B. de D. Relacional.(cont.)


CREATE ( codigo nombre ciudad ) CREATE TABLE empleado ( cdula NUMBER(10) nombre VARCHAR(30) jefe NUMBER(10) salario NUMBER(10,2) comisin NUMBER(2) , cargo VARCHAR(20) depto NUMBER(6) ) TABLE departamento NUMBER(6) PRIMARY KEY, VARCHAR(6) NOT NULL UNIQUE, VARCHAR(12) CHECK (ciudad IN (Medelln,Bogot,Cali)) NOT NULL

PRIMARY KEY, NOT NULL, REFERENCES empleado, NOT NULL, NOT NULL, NOT NULL REFERENCES departamento

Restricciones de Integridad en una B. de D. Relacional.(cont.) Se pueden especificar las acciones de integridad referencias ante borrado y actualizacn as:
CREATE TABLE empleado ( cdula NUMBER(10) nombre VARCHAR2(30) jefe NUMBER(10) salario NUMBER(10,2) comisin NUMBER(2) , cargo VARCHAR2(20) depto NUMBER(6)

PRIMARY KEY, NOT NULL, REFERENCES empleado, NOT NULL, NOT NULL, REFERENCES departamento ON UPDATE SET NULL, ON DELETE CASCADE

Restricciones de Integridad en una B. de D. Relacional.(cont.)


CREATE TABLE empleado ( cdula NUMBER(10) nombre VARCHAR2(30) jefe NUMBER(10), salario NUMBER(10,2) comisin NUMBER(3) cargo VARCHAR2(20) depto NUMBER(6)

PRIMARY KEY, NOT NULL,

NOT NULL CHECK (salario > 0 ) , CHECK ( comision between 0 and 100), NOT NULL, NOT NULL REFERENCES departamento, FOREIGN KEY jefe REFERENCES empleado(cdula) );

Cuando la clave fornea a la que se referencia es compuesta se debe utilizar esta forma, ver siguiente ejemplo

Restricciones de Integridad en una B. de D. Relacional.(cont.)

CREATE TABLE envio( snro NUMBER(6), pnro NUMBER(6), cantidad NUMBER(6) NOT NULL, PRIMARY KEY(snro, pnro) ) Es incorrecto colocar PRIMARY KEY al frente de snro y de pnro.

Referencia a una clave primaria compuesta: CREATE TABLE revision( codrevision NUMBER(5) PRIMARY KEY, otrosnro NUMBER(6) NOT NULL, otropnro NUMBER(6) NOT NULL, revisor VARCHAR(20)NOT NULL, FOREIGN KEY(otrosnro,otropnro) REFERENCES envio )

Se puede modificar la estructura de una tabla con la instruccin ALTER TABLE Ej: ALTER TABLE mitabla ADD nuevocampo NUMBER(3); Para destruir una tabla (estructura y datos) DROP TABLA nombre_tabla

Para ingresar valores a una tabla: INSERT INTO envio VALUES ( 10, 20, 100) INSERT INTO departamento VALUES( 100, Aseo, Cali)

Sea la tabla: 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); 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 condicin puede incluir subconsultas Para actualizar filas de una tabla: UPDATE tabla SET campo = nuevo_valor [WHERE condicion]

Se pueden actualizar varios campos al mismo tiempo separando por comas, la condicin y nuevo_valor pueden incluir subconsultas

También podría gustarte