Claves ajenas, restricciones y comandos DDL en SQL

InformáticaActualizado el 4,58 KB

Resumen

El documento explica las claves ajenas (FOREIGN KEY) y su integridad referencial, incluida la cláusula ON DELETE CASCADE, junto con otras restricciones como DEFAULT, CHECK y UNIQUE. También presenta vistas del diccionario de datos y comandos DDL como TRUNCATE, ALTER TABLE y la creación de sinónimos. Está orientado a estudiantes de bases de datos que necesitan repasar la sintaxis de Oracle SQL.

Puntos clave

  • Una clave ajena referencia una clave primaria de la misma tabla o de otra, y su valor debe ser NULL o existir en la clave referenciada.
  • La clave ajena puede definirse como restricción de columna (REFERENCES) o de tabla (FOREIGN KEY ... REFERENCES).
  • ON DELETE CASCADE elimina las filas con claves ajenas cuando se borra la fila de la clave primaria referenciada.
  • DEFAULT asigna un valor por omisión a una columna cuando no se especifica en INSERT; CHECK actúa como una cláusula WHERE sin subconsultas.
  • TRUNCATE elimina todas las filas de una tabla sin borrar su definición y no genera información de ROLLBACK, por ser un comando DDL.
  • ALTER TABLE permite añadir, modificar o eliminar columnas y activar o desactivar restricciones; CREATE SYNONYM crea un nuevo nombre para una tabla o vista.

Ponte a prueba

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;

Descargar

PDF Word HTML

Preguntas frecuentes

¿Qué es una clave ajena en SQL?

Es una o varias columnas asociadas a una clave primaria de otra tabla o de la misma tabla. Su valor debe ser NULL o coincidir con un valor de la clave referenciada, según la regla de integridad referencial.

¿Qué hace la cláusula ON DELETE CASCADE?

Cuando se borran filas con una clave primaria referenciada, también se eliminan las filas con claves ajenas que hacen referencia a ellas.

¿Por qué TRUNCATE no genera ROLLBACK?

Porque es una orden del lenguaje de definición de datos (DDL), que no genera información de retroceso según el documento.

Ponte a prueba

Tarjetas de repaso

Pulsa una tarjeta para ver la respuesta.

Test

1. ¿Qué regla garantiza que el valor de una clave ajena exista en la clave referenciada?
2. ¿Qué cláusula se usa en la definición de tabla para indicar la tabla referenciada?
3. ¿Qué hace ON DELETE CASCADE?
4. ¿Qué restricción puede referirse solo a columnas de la misma fila?
5. ¿Qué crea automáticamente la restricción UNIQUE?
6. ¿Qué diferencia a TRUNCATE de un borrado normal?

Preguntas generadas con IA a partir del documento: comprueba las respuestas con el texto.