You are on page 1of 7

Sentencias DDL,

creación de
objetos

Base de Datos I

1
Sentencias DDL, creación de
objetos. Tablas y sus columnas,
constraints e índices.
Sentencias SQL

Las sentencias del lenguaje SQL se dividen en sub lenguajes para agrupar las
sentencias por su acción. El primer sub lenguaje que veremos es el Lenguaje
de Definiciones de Datos, o DDL (por sus siglas en ingles de Data Definition
Language).

En este sub lenguaje tenemos las sentencias CREATE, DROP, ALTER, RENAME
y TRUNCATE (recientemente incorporada al estándar SQL:2008), en la
presente lectura revisaremos a cada una de ellas con un ejemplo en que
empezaremos a crear una tabla de Estudiantes.

Sentencias DDL - CREATE

Usada para crear objetos en general, desde una base de datos propiamente
dicha hasta crear una tabla, pasando por usuarios, programas almacenados
y vistas.

Para crea una tabla en MySQL la sintaxis sería:

2
Un ejemplo de la creación de las tablas que usamos de ejemplo…

CREATE TABLE ’empleados’ (

‘EMPNO’ double,

‘ENAME’ varchar(10),

‘JOB’ varchar(9),

‘MGR’ double,

‘HIREDATE’ date,

‘SAL’ double,

‘COMM’ double,

‘DEPTNO’ int(2)) ;

Sentencia ALTER

Una vez creados los objetos en general, podemos cambiar y agregar


componentes para responder a las necesidades del modelo. Nos
focalizaremos en ejemplos de modificaciones de tablas para ver las distintas

3
posibilidades de esta sentencia. Para agregar restricciones veremos
ejemplos en los próximos puntos

Para agregar una o varias columna

ALTER TABLE mitabla

ADD nueva columna NUMBER NOT NULL;

Para modificar una columna extendiendo su cantidad de caracteres

ALTER TABLE mitabla

MODIFY columna_char VARCHAR2(90);

Para eliminar una columna (soportado por algunos motores como Oracle y
DB2).

ALTER TABLE mitabla

DROP micolumna;

Para eliminar un constraint.

ALTER TABLE mitabla

DROP CONSTRAINT mitabla_pk;

Para desactivar un constraint, sin necesidad de borrarlo

ALTER TABLE mitabla

DISABLE CONSTRAINT mitabla_pk;

Para activar un constraint, sin necesidad de borrarlo, tiene diversas opciones


de activación que no veremos en este manual

4
ALTER TABLE mitabla

ENABLE CONSTRAINT mitabla_pk (diversas opciones);

Restricciones o Constraints

Una vez creadas las tablas, para implementar las relaciones detectadas en el
análisis se deben crear las constraints, para que el motor pueda controlar,
que una columna clave primaria, por ejemplo, no contenga nulos o repita
valores, esto es, hacer cumplir la Regla de Integridad de las Entidades y que
una clave foránea no tenga un valor que no esté en la tabla referenciada,
esto es, hacer cumplir la Regla de Integridad Referencial.

La sintaxis para crear una clave primaria en una tabla (llamada mitabla) ya
creada es la siguiente:

ALTER TABLE mitabla

ADD CONSTRAINT mitabla_cp PRIMARY KEY (Identificacion);

La sintaxis para crear una clave foránea en una tabla (llamada otratabla) ya
creada es la siguiente:

ALTER TABLE mitabla

ADD CONSTRAINT mitabla_cf FOREIGN KEY (id_otratabla)

REFERENCES otratabla(identificacion);

Es una buena práctica definir un nombre de restricción o constraint y


ponerles nombres significativos, que permitan identificar a que tabla
pertenecen y de que tipo de constraint se trata, ya que permite cuando el
motor detecta algún intento de sobrepasar estas restricciones, informa su
nombre y si este tiene significado es una ayuda para entender cual es el
problema.

5
Otras restricciones

Not Null
Para garantizar que una columna no acepte valores nulos, es decir, que sea
obligatoria de cargar al insertarse la fila, o al modificarse la columna, se
aplica la declaración de restricción NOT NULL a continuación de la
declaración del tipo de dato de la columna en la creación o modificación.

ALTER TABLE mitabla

MODIFY sal NOT NULL;

Unique
Las columnas que durante el análisis han sido determinadas como claves
candidatas, pueden utilizar la restricción UNIQUE que impide insertar una
fila con un valor repetido en esta columna. Las bases de datos implementan
un índice sobre esta columna permitiendo detectar rápidamente si es que
existe alguna fila previa con el valor a ingresar en esta columna y advertido
el motor, rechazará el cambio.

ALTER TABLE mitabla

ADD CONSTRAINT mitabla_email_u UNIQUE (email);

Check
Si una columna tiene determinado conjunto de valores posible, con más
detalle que el tipo de datos, por ejemplo, los tipos de documentos podrían
limitarse a un dominio especial, conformado por los valores ‘DNI’, ‘CI’, ‘PAS’.
Entonces podría asociarse a la columna esta validación para que no permita
valores en esta columna que no estén en esta lista.

ALTER TABLE mitabla

ADD CONSTRAINT mitabla_tipodoc_ck CHECK (tipodoc IN (‘DNI’, ‘CI’,


‘PAS’);

6
Sentencia DROP

La sentencia que permite eliminar los objetos, incluyendo las filas contenidas
y las restricciones, índices y demás contenidos relacionados es:

DROP TABLE mi tabla [opción de cascada]

Si esta mi tabla tuviera otras tablas que hacen referencia con claves
foráneas, la opción de cascada elimina estas restricciones, asociadas.

Sentencia TRUNCATE

Es una sentencia que borra las filas en bloque y deja la estructura de


columnas, índices y constraints sin modificaciones.

TRUNCATE TABLE mitabla;

Un borrado de filas similar al DELETE mitabla, genera una recarga de tiempo


importante si la tabla tuviera muchas filas, porque activaría una transacción,
que permitiría hacer rollback, de acuerdo al volumen borrado. Por eso esta
opción DDL, sin posibilidad de revertirla, es mucho más rápida.

You might also like