Conceptos Esenciales de SQL: Restricciones y Comandos DDL
Clasificado en Informática
Escrito el en español con un tamaño de 4,58 KB
Clave Ajena (`FOREIGN KEY`)
Una Clave Ajena está formada por una o varias columnas que están asociadas a una clave primaria de otra o de la misma tabla. Se pueden definir tantas claves ajenas como sea preciso, y pueden estar o no en la misma tabla que la clave primaria. El valor de la columna o columnas que son claves ajenas debe ser NULL
o igual a un valor de la clave referenciada (regla de integridad referencial).
Formato de Restricción de Columna
La clave ajena se define en la descripción de la columna usando la cláusula REFERENCES
:
CREATE TABLE nombre_tabla
(
Columna1 TIPO_DE_DATO
CONSTRAINT nombre_restricción
REFERENCES nombre_tabla [(columna)] [ON DELETE CASCADE],
Columna2 TIPO_DE_DATO, ...
) [TABLESPACE espacio_de_tabla];
Formato de Restricción de Tabla
La clave ajena se define al final de todas las columnas empleando las cláusulas FOREIGN KEY
y REFERENCES
:
CREATE TABLE nombre_tabla
(
Columna1 TIPO_DE_DATO,
Columna2 TIPO_DE_DATO,
[CONSTRAINT nombre_restricción] FOREIGN KEY (columna
[, columna]) REFERENCES nombre_tabla [(columna[,
columna])] [ON DELETE CASCADE]
) [TABLESPACE espacio_de_tabla];
En la cláusula REFERENCES
indicamos la tabla a la cual remite la clave ajena. A la derecha de FOREIGN KEY
y, entre paréntesis, indicamos la columna o columnas que forman parte de la clave ajena.
Cláusula `ON DELETE CASCADE`
La cláusula ON DELETE CASCADE
se define cuando al borrar las filas asociadas con claves primarias deseamos que se eliminen las filas con claves ajenas que referencien a dichas claves.
Otras Restricciones y Especificaciones
Especificación `DEFAULT`
La especificación DEFAULT
: la cláusula DEFAULT
a una columna le proporciona un valor por omisión cuando el valor de la columna no se especifica en la cláusula INSERT
. Es posible incluir varias expresiones: constantes, funciones SQL y variables UID
y SYSDATE
. No se pueden hacer referencias a columnas o a funciones PL/SQL.
Restricción `CHECK`
La restricción CHECK
actúa como una cláusula WHERE
. Puede hacer referencia a una o a más columnas, pero no a valores de otras filas. En una cláusula CHECK
no cabe incluir subconsultas ni las pseudocolumnas SYSDATE
, UID
y USER
.
Restricción `UNIQUE`
La restricción UNIQUE
crea un índice automáticamente al igual que PRIMARY KEY
.
Vistas del Diccionario de Datos
USER_CONSTRAINTS
: Definiciones de restricciones de tablas propiedad del usuario.ALL_CONSTRAINTS
: Definiciones de restricciones sobre tablas a las que puede acceder el usuario.DBA_CONSTRAINTS
: Todas las definiciones de restricciones sobre todas las tablas.
Comandos DDL Fundamentales
Comando `TRUNCATE`
TRUNCATE
: Permite suprimir todas las filas de una tabla y liberar el espacio ocupado para otros usos sin que desaparezca la definición de la tabla de la base de datos. Es una orden del lenguaje de definición de datos (DDL) y no genera información de retroceso (ROLLBACK
).
Ejemplo:
TRUNCATE TABLE [usuario.]nombre_tabla [{DROP|REUSE} STORAGE];
Comando `ALTER TABLE`
ALTER TABLE
: La modificación de tablas nos permitirá: añadir, modificar o eliminar columnas de una tabla existente, añadir o eliminar restricciones y activar o desactivar restricciones. Ejemplos: ADD
, MODIFY
, DROP COLUMN
...
Activar/Desactivar Restricción
Activar Restricción: ALTER TABLE nombre_tabla ENABLE CONSTRAINT nombre_restricción;
Desactivar Restricción: ALTER TABLE nombre_tabla DISABLE CONSTRAINT nombre_restricción;
Creación de Sinónimo
Creación de Sinónimo: Es un nuevo nombre que se puede dar a una tabla o vista. Con los sinónimos se pueden utilizar dos nombres diferentes para referirse a un mismo objeto.
Ejemplo:
CREATE [PUBLIC] SYNONYM nombre_sinónimo FOR [usuario.]nombre_tabla;