CLAVE EXTRANJERA DE SQL: Cómo crear en SQL Server con ejemplo

¿Qué es una LLAVE EXTRANJERA?

A Clave externa proporciona una forma de hacer cumplir la integridad referencial dentro de SQL Server. En palabras simples, la clave externa garantiza que los valores de una tabla deben estar presentes en otra tabla.

Reglas para LLAVE EXTRANJERA

  • Se permite NULL en clave externa SQL.
  • La tabla a la que se hace referencia se llama tabla principal.
  • La tabla con la clave externa en SQL se llama tabla secundaria.
  • La clave externa SQL en la tabla secundaria hace referencia a la clave principal en la tabla principal.
  • Esta relación entre padres e hijos hace cumplir la regla que se conoce como "Integridad referencial".

El siguiente ejemplo de clave externa en SQL con diagrama resume todos los puntos anteriores para CLAVE EXTRANJERA

Reglas para CLAVE EXTRANJERA en SQL
Cómo funciona la clave externa

Cómo crear una CLAVE EXTRANJERA en SQL

Podemos crear un Clave externa en el servidor SQL en 2 maneras:

  1. SQL Server Management Studio
  2. T-SQL

SQL Server Management Studio

Tabla de padres: Digamos que tenemos una tabla principal existente como "Curso". Course_ID y Course_name son dos columnas con Course_Id como clave principal.

Crear CLAVE EXTRANJERA en SQL

Mesa infantil: Necesitamos crear la segunda tabla como tabla secundaria. 'Course_ID' y 'Course_Strength' como dos columnas. Sin embargo, "Course_ID" será una clave externa.

Paso 1) Haga clic derecho en Tablas>Nuevo> Tabla…

Crear CLAVE EXTRANJERA en SQL

Paso 2) Ingrese el nombre de dos columnas como "Course_ID" y "Course_Strength". Haga clic derecho en la columna "Course_Id". Ahora haga clic en Relación.

Crear CLAVE EXTRANJERA en SQL

Paso 3) In 'Relación clave exterior, 'Haga clic 'Añadir'

Crear CLAVE EXTRANJERA en SQL

Paso 4) En 'Especificación de tabla y columna', haga clic en Icono '...'

Crear CLAVE EXTRANJERA en SQL

Paso 5) Seleccione 'Tabla de clave principal' como 'CURSO' y la nueva tabla que ahora se está creando como 'Tabla de clave externa' en el menú desplegable.

Crear CLAVE EXTRANJERA en SQL

Paso 6) 'Tabla de clave principal': seleccione la columna 'Course_Id' como columna 'Tabla de clave principal'.

"Tabla de claves externas": seleccione la columna "Course_Id" como columna "Tabla de claves externas". Haga clic en Aceptar.

Crear CLAVE EXTRANJERA en SQL

Paso 7) Haga clic en Agregar.

Crear CLAVE EXTRANJERA en SQL

Paso 8) Asigne el nombre de la tabla como 'Course_Strength' y haga clic en DE ACUERDO.

Crear CLAVE EXTRANJERA en SQL

Resultado: Hemos establecido una relación padre-hijo entre 'Curso' y 'Fuerza_del_curso'.

Crear CLAVE EXTRANJERA en SQL

T-SQL: cree una tabla padre-hijo usando T-SQL

Tabla de padres: Reconsidere que tenemos una tabla principal existente con el nombre de tabla "Curso".

Course_ID y Course_name son dos columnas con Course_Id como clave principal.

Crear una tabla padre-hijo usando T-SQL

Mesa infantil: Necesitamos crear la segunda tabla como tabla secundaria con el nombre "Course_Strength_TSQL".

'Course_ID' y 'Course_Strength' como dos columnas para la tabla secundaria Course_Strength_TSQL. Sin embargo, 'Course_ID' será una clave externa.

A continuación se muestra la sintaxis para crear una tabla con CLAVE EXTRANJERA

Sintaxis:

CREATE TABLE childTable
(
  column_1 datatype [ NULL |NOT NULL ],
  column_2 datatype [ NULL |NOT NULL ],
  ...

  CONSTRAINT fkey_name
    FOREIGN KEY (child_column1, child_column2, ... child_column_n)
    REFERENCES parentTable (parent_column1, parent_column2, ... parent_column_n)
    [ ON DELETE { NO ACTION |CASCADE |SET NULL |SET DEFAULT } ]
    [ ON UPDATE { NO ACTION |CASCADE |SET NULL |SET DEFAULT } ] 
);

Aquí hay una descripción de los parámetros anteriores:

  • childTable es el nombre de la tabla que se va a crear.
  • columna_1, columna_2: las columnas que se agregarán a la tabla.
  • fkey_name: el nombre de la restricción de clave externa que se creará.
  • child_column1, child_column2…child_column_n: el nombre de las columnas de chidTable para hacer referencia a la clave principal en parentTable.
  • parentTable: el nombre de la tabla principal a cuya clave se hará referencia en la tabla secundaria.
  • parent_column1, parent_column2,… parent_column3: las columnas que forman la clave principal de la tabla principal.
  • AL BORRAR. Un parámetro opcional. Especifica qué sucede con los datos secundarios después de eliminar los datos principales. Algunos de los valores de este parámetro incluyen NO ACTION, SET NULL, CASCADE o SET DEFAULT.
  • EN ACTUALIZACIÓN: un parámetro opcional. Especifica qué sucede con los datos secundarios después de la actualización de los datos principales. Algunos de los valores de este parámetro incluyen NO ACTION, SET NULL, CASCADE o SET DEFAULT.
  • SIN ACCIÓN: se usa junto con AL BORRAR y AL ACTUALIZAR. Significa que no pasará nada con los datos secundarios después de la actualización o eliminación de los datos principales.
  • CASCADA- se utiliza junto con AL BORRAR y AL ACTUALIZAR. Los datos del niño se eliminarán o actualizarán después de que los datos de los padres se hayan eliminado o actualizado.
  • SET NULL- se utiliza junto con ON DELETE y ON UPDATE. El hijo se establecerá como nulo después de que los datos de los padres se hayan actualizado o eliminado.
  • ESTABLECER DEFAULT: se utiliza junto con ON DELETE y ON UPDATE. Los datos secundarios se establecerán en los valores predeterminados después de una actualización o eliminación de los datos principales.

Veamos un ejemplo de clave externa en SQL para crear una tabla con una columna como CLAVE EXTRANJERA:

Ejemplo de clave externa en SQL

consulta:

CREATE TABLE Course_Strength_TSQL
(
Course_ID Int,
Course_Strength Varchar(20) 
CONSTRAINT FK FOREIGN KEY (Course_ID)
REFERENCES COURSE (Course_ID)	
)

Paso 1) Ejecute la consulta haciendo clic en ejecutar.

Clave externa en SQL

Resultado: Hemos establecido una relación padre-hijo entre 'Curso' y 'Curso_fuerza_TSQL.'

Clave externa en SQL

Usando ALTER TABLA

Ahora aprenderemos cómo usar una clave externa en SQL y agregar una clave externa en el servidor SQL usando la instrucción ALTER TABLE, usaremos la sintaxis que se proporciona a continuación:

ALTER TABLE childTable
ADD CONSTRAINT fkey_name
    FOREIGN KEY (child_column1, child_column2, ... child_column_n)
    REFERENCES parentTable (parent_column1, parent_column2, ... parent_column_n);

Aquí hay una descripción de los parámetros utilizados anteriormente:

  • childTable es el nombre de la tabla que se va a crear.
  • columna_1, columna_2: las columnas que se agregarán a la tabla.
  • fkey_name: el nombre de la restricción de clave externa que se creará.
  • child_column1, child_column2…child_column_n: el nombre de las columnas de chidTable para hacer referencia a la clave principal en parentTable.
  • parentTable: el nombre de la tabla principal a cuya clave se hará referencia en la tabla secundaria.
  • parent_column1, parent_column2,… parent_column3: las columnas que forman la clave principal de la tabla principal.

Modificar tabla y agregar ejemplo de clave externa:

ALTER TABLE department
ADD CONSTRAINT fkey_student_admission
    FOREIGN KEY (admission)
    REFERENCES students (admission);

Hemos creado una clave externa llamada fkey_student_admission en la tabla de departamentos. Esta clave externa hace referencia a la columna de admisión de la tabla de estudiantes.

Ejemplo de consulta CLAVE EXTRANJERA

Primero, veamos los datos de nuestra tabla principal, CURSO.

consulta:

SELECT * from COURSE;

Ejemplo de consulta CLAVE EXTRANJERA

Ahora insertemos alguna fila en la tabla secundaria: 'Curso_fuerza_TSQL.'

Intentaremos insertar dos tipos de filas.

  1. El primer tipo, para el cual Course_Id en la tabla secundaria existirá en Course_Id de la tabla principal. es decir, Course_Id = 1 y 2
  2. El segundo tipo, para el cual Course_Id en la tabla secundaria no existe en Course_Id de la tabla principal. es decir, Course_Id = 5

consulta:

Insert into COURSE_STRENGTH values (1,'SQL');
Insert into COURSE_STRENGTH values (2,'Python');
Insert into COURSE_STRENGTH values (5,'PERL');

Ejemplo de consulta CLAVE EXTRANJERA

Resultado: Ejecutemos la consulta juntos para ver nuestra tabla de padres e hijos.

La fila con Course_ID 1 y 2 existe en la tabla Course_strength. Mientras que Course_ID 5 es una excepción.

Ejemplo de consulta CLAVE EXTRANJERA

Resumen

  • Cada valor de clave externa debe ser parte de Clave primaria de otras mesas.
  • La clave externa de MySQL puede hacer referencia a otra columna de la misma tabla. Esta referencia se conoce como autorreferencia.
  • Restricción de clave externa de SQL: se utiliza para proteger los vínculos entre tablas y datos no válidos que se insertarán en la columna de clave externa.
  • Puede crear una clave externa usando Crear tabla, Modificar tabla o SQL Server Management Studio.
  • Aquí está la diferencia entre clave primaria y clave externa: Haga clic aquí