Tutorial SQL

INICIO SQL Introducción a SQL Sintaxis SQL Seleccionar SQL SQL Seleccionar Distinto SQL donde SQL y, o no Orden SQL por Insertar SQL en Valores nulos de SQL Actualización SQL Eliminar SQL SQL Seleccionar parte superior SQL mínimo y máximo Recuento de SQL, Promedio, Suma SQL como Comodines de SQL SQL en SQL entre Alias ​​SQL Uniones SQL Combinación interna de SQL Unión izquierda de SQL Unión derecha de SQL Unión completa de SQL Unión automática de SQL Unión SQL Grupo SQL por SQL teniendo SQL existe SQL Cualquiera, Todo SQL Seleccionar en Insertar SQL en Seleccionar Caso SQL Funciones nulas de SQL Procedimientos almacenados de SQL Comentarios SQL Operadores SQL

Base de datos SQL

SQL Crear base de datos Base de datos de caída de SQL Base de datos de copia de seguridad de SQL Crear tabla SQL Tabla desplegable de SQL Tabla de modificación de SQL Restricciones SQL SQL no nulo SQL único Clave principal de SQL Clave foránea de SQL Comprobación SQL Valor predeterminado de SQL Índice SQL Incremento automático de SQL Fechas SQL Vistas SQL Inyección SQL Alojamiento SQL Tipos de datos SQL

Referencias SQL

Palabras clave de SQL Funciones MySQL Funciones del servidor SQL Funciones de MS Access Referencia rápida de SQL

Ejemplos SQL

Ejemplos SQL Cuestionario de SQL Ejercicios SQL Certificado SQL

Restricción de CLAVE EXTERNA SQL


Restricción de CLAVE EXTERNA SQL

La FOREIGN KEYrestricción se utiliza para evitar acciones que destruirían enlaces entre tablas.

A FOREIGN KEYes un campo (o colección de campos) en una tabla, que se refiere a PRIMARY KEYen otra tabla.

La tabla con la clave externa se denomina tabla secundaria, y la tabla con la clave principal se denomina tabla principal o de referencia.

Mira las dos tablas siguientes:

Tabla de personas

PersonID LastName FirstName Age
1 Hansen Ola 30
2 Svendson Tove 23
3 Pettersen Kari 20

Tabla de pedidos

OrderID OrderNumber PersonID
1 77895 3
2 44678 3
3 22456 2
4 24562 1

Observe que la columna "PersonID" en la tabla "Pedidos" apunta a la columna "PersonID" en la tabla "Personas".

La columna "PersonID" en la tabla "Personas" es la PRIMARY KEYde la tabla "Personas".

La columna "PersonID" en la tabla "Pedidos" es una FOREIGN KEYen la tabla "Pedidos".

La FOREIGN KEYrestricción evita que se inserten datos no válidos en la columna de clave externa, porque tiene que ser uno de los valores contenidos en la tabla principal.



CLAVE EXTERNA SQL en CREAR TABLA

El siguiente SQL crea un FOREIGN KEYen la columna "PersonID" cuando se crea la tabla "Pedidos":

mysql:

CREATE TABLE Orders (
    OrderID int NOT NULL,
    OrderNumber int NOT NULL,
    PersonID int,
    PRIMARY KEY (OrderID),
    FOREIGN KEY (PersonID) REFERENCES Persons(PersonID)
);

Servidor SQL/Oracle/MS Access:

CREATE TABLE Orders (
    OrderID int NOT NULL PRIMARY KEY,
    OrderNumber int NOT NULL,
    PersonID int FOREIGN KEY REFERENCES Persons(PersonID)
);

Para permitir nombrar una FOREIGN KEYrestricción y definir una FOREIGN KEYrestricción en varias columnas, use la siguiente sintaxis SQL:

MySQL/SQL Server/Oracle/MS Access:

CREATE TABLE Orders (
    OrderID int NOT NULL,
    OrderNumber int NOT NULL,
    PersonID int,
    PRIMARY KEY (OrderID),
    CONSTRAINT FK_PersonOrder FOREIGN KEY (PersonID)
    REFERENCES Persons(PersonID)
);

CLAVE EXTERNA SQL en ALTER TABLE

Para crear una FOREIGN KEYrestricción en la columna "PersonID" cuando la tabla "Pedidos" ya está creada, use el siguiente SQL:

MySQL/SQL Server/Oracle/MS Access:

ALTER TABLE Orders
ADD FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);

Para permitir nombrar una FOREIGN KEYrestricción y definir una FOREIGN KEYrestricción en varias columnas, use la siguiente sintaxis SQL:

MySQL/SQL Server/Oracle/MS Access:

ALTER TABLE Orders
ADD CONSTRAINT FK_PersonOrder
FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);

DROP una restricción FOREIGN KEY

Para descartar una FOREIGN KEYrestricción, use el siguiente SQL:

mysql:

ALTER TABLE Orders
DROP FOREIGN KEY FK_PersonOrder;

Servidor SQL/Oracle/MS Access:

ALTER TABLE Orders
DROP CONSTRAINT FK_PersonOrder;