Contrainte FOREIGN KEY SQL
- Page précédente Clé primaire SQL
- Page suivante Vérificateur SQL
Contrainte FOREIGN KEY SQL
Une clé étrangère dans une table pointe vers la clé primaire d'une autre table.
Laissez-nous expliquer la clé étrangère par un exemple. Regardez les deux tables suivantes :
Table "Persons":
Id_P | LastName | FirstName | Adresse | City |
---|---|---|---|---|
1 | Adams | John | Oxford Street | London |
2 | Bush | George | Fifth Avenue | New York |
3 | Carter | Thomas | Changan Street | Beijing |
Table "Orders":
Id_O | OrderNo | Id_P |
---|---|---|
1 | 77895 | 3 |
2 | 44678 | 3 |
3 | 22456 | 1 |
4 | 24562 | 1 |
Veuillez noter que la colonne "Id_P" dans "Orders" pointe vers la colonne "Id_P" dans la table "Persons".
La colonne "Id_P" de la table "Persons" est la clé primaire de la table "Persons".
La colonne "Id_P" de la table "Orders" est une clé étrangère de la table "Orders".
La contrainte FOREIGN KEY est utilisée pour prévenir des actions destructrices entre les tables.
La contrainte FOREIGN KEY peut également empêcher l'insertion de données illicites dans la colonne étrangère, car elle doit être l'une des valeurs de la table vers laquelle elle fait référence.
Contrainte FOREIGN KEY dans la création de la table
Le SQL suivant crée une clé étrangère FOREIGN KEY pour la colonne "Id_P" lors de la création de la table "Orders":
MySQL :
CREATE TABLE Orders ( Id_O int NOT NULL, OrderNo int NOT NULL, Id_P int, PRIMARY KEY (Id_O), Clé étrangère (Id_P) fait référence à (Id_P) dans la table Persons )
SQL Server / Oracle / MS Access :
CREATE TABLE Orders ( Id_O int NOT NULL PRIMARY KEY, OrderNo int NOT NULL, Id_P int FOREIGN KEY REFERENCES Persons(Id_P) )
Si vous devez nommer la contrainte FOREIGN KEY et définir des contraintes FOREIGN KEY pour plusieurs colonnes, utilisez la syntaxe SQL suivante :
MySQL / SQL Server / Oracle / MS Access :
CREATE TABLE Orders ( Id_O int NOT NULL, OrderNo int NOT NULL, Id_P int, PRIMARY KEY (Id_O), CONSTRAINT fk_PerOrders FOREIGN KEY (Id_P) REFERENCES Persons(Id_P) )
Contrainte FOREIGN KEY SQL sur ALTER TABLE
Si vous créez une contrainte FOREIGN KEY pour la colonne "Id_P" dans la table "Orders" déjà existante, utilisez le SQL suivant :
MySQL / SQL Server / Oracle / MS Access :
ALTER TABLE Orders ADD FOREIGN KEY (Id_P) REFERENCES Persons(Id_P)
Si vous devez nommer la contrainte FOREIGN KEY et définir des contraintes FOREIGN KEY pour plusieurs colonnes, utilisez la syntaxe SQL suivante :
MySQL / SQL Server / Oracle / MS Access :
ALTER TABLE Orders ADD CONSTRAINT fk_PerOrders FOREIGN KEY (Id_P) REFERENCES Persons(Id_P)
Annuler la contrainte FOREIGN KEY
Pour annuler la contrainte FOREIGN KEY, utilisez le SQL suivant :
MySQL :
ALTER TABLE Orders DROP FOREIGN KEY fk_PerOrders
SQL Server / Oracle / MS Access :
ALTER TABLE Orders DROP CONSTRAINT fk_PerOrders
- Page précédente Clé primaire SQL
- Page suivante Vérificateur SQL