Manuel du didac...SE CONNECTER
Manuel du didacticiel de démarrage SQL
auteur:php.cn  temps de mise à jour:2022-04-12 14:15:40

CLÉ ÉTRANGÈRE SQL



Contrainte SQL FOREIGN KEY

UNE CLÉ ÉTRANGÈRE dans une table pointe vers une CLÉ PRIMAIRE dans une autre table.

Expliquons les clés étrangères à travers un exemple. Veuillez consulter les deux tableaux suivants :

Tableau « Personnes » :

P_IdLastNameFirstNameAddressCity
1HansenOlaTimoteivn 10Sandnes
2SvendsonToveBorgvn 23Sandnes
3PettersenKariStorgt 20Stavanger

Tableau « Commandes » :

O_IdOrderNoP_Id
1778953
2446783
3224562
4245621

Notez que la colonne "P_Id" du tableau "Commandes" pointe vers la colonne "P_Id" du tableau "Personnes".

La colonne "P_Id" dans la table "Personnes" est la CLÉ PRIMAIRE dans la table "Personnes".

La colonne "P_Id" dans la table "Commandes" est la CLÉ ÉTRANGÈRE dans la table "Commandes".

Les contraintes FOREIGN KEY sont utilisées pour empêcher un comportement qui rompt les jointures entre les tables.

La contrainte FOREIGN KEY empêche également l'insertion de données illégales dans une colonne de clé étrangère car elle doit être l'une des valeurs de la table vers laquelle elle pointe.


Contrainte SQL FOREIGN KEY lors de CREATE TABLE

Le SQL suivant crée une contrainte FOREIGN KEY sur la colonne "P_Id" lors de la création de la table "Commandes" :

MySQL :

CREATE TABLE Commandes
(
O_Id int NOT NULL,
OrderNo int NOT NULL,
P_Id int,
CLÉ PRIMAIRE (O_Id),
CLÉ ÉTRANGÈRE (P_Id) RÉFÉRENCES Personnes(P_Id)
)

SQL Server/Oracle/MS Access :

CREATE TABLE Orders
(
O_Id int NOT NULL PRIMARY KEY,
OrderNo int NOT NULL,
P_Id int FOREIGN KEY REFERENCES Persons(P_Id)
)

Pour nommer une contrainte FOREIGN KEY et définir des contraintes FOREIGN KEY pour plusieurs colonnes, veuillez utiliser la syntaxe SQL suivante :

MySQL / SQL Server / Oracle / MS Access :

CREATE TABLE Commandes
(
O_Id int NOT NULL,
OrderNo int NOT NULL,
P_Id int,
PRIMARY KEY (O_Id),
CONTRAINTE fk_PerOrders FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)
)


Contrainte SQL FOREIGN KEY lorsque ALTER TABLE

quand" Commandes" table a été créée, si vous devez créer une contrainte FOREIGN KEY sur la colonne "P_Id", merci d'utiliser le SQL suivant :

MySQL / SQL Server / Oracle / MS Access :

ALTER TABLE Orders
ADD FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)

Si vous devez nommer la contrainte FOREIGN KEY et définir FOREIGN pour Contraintes CLÉS de plusieurs colonnes, veuillez utiliser la syntaxe SQL suivante :

MySQL / SQL Server / Oracle / MS Access :

ALTER TABLE Orders
ADD CONSTRAINT fk_PerOrders
FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)


Révoquer la contrainte FOREIGN KEY

Pour révoquer la contrainte FOREIGN KEY, veuillez utilisez SQL ci-dessous :

MySQL :

ALTER TABLE Orders
DROP FOREIGN KEY fk_PerOrders

SQL Serveur/Oracle/MS Access :

ALTER TABLE Orders
DROP CONSTRAINT fk_PerOrders

Site Web PHP chinois