Ограничение FOREIGN KEY в SQL
- Предыдущая страница Основной ключ SQL
- Следующая страница SQL Check
Ограничение FOREIGN KEY в SQL
Иностранный ключ одной таблицы ссылается на первичный ключ другой таблицы.
Давайте рассмотрим пример, чтобы объяснить иностранный ключ. Посмотрите на следующие две таблицы:
Таблица "Persons":
Id_P | LastName | FirstName | Адрес | Город |
---|---|---|---|---|
1 | Эдамс | Джон | Улица Оксфорд | Лондон |
2 | Буш | Джордж | Пятая Авеню | Нью-Йорк |
3 | Картер | Томас | Улица Чанан | Пекин |
Таблица "Orders":
Id_O | OrderNo | Id_P |
---|---|---|
1 | 77895 | 3 |
2 | 44678 | 3 |
3 | 22456 | 1 |
4 | 24562 | 1 |
Обратите внимание, что столбец "Id_P" в "Orders" ссылается на столбец "Id_P" в таблице "Persons".
Столбец "Id_P" в таблице "Persons" является 主键 в таблице "Persons".
Столбец "Id_P" в таблице "Orders" является иностранным ключом в таблице "Orders".
Условие иностранного ключа используется для предотвращения действий, разрушающих связь между таблицами.
Условие иностранного ключа также предотвращает ввод非法 данных в столбец иностранного ключа, так как он должен быть одним из значений в той таблице, на которую он ссылается.
Условие иностранного ключа при создании таблицы
Ниже приведен SQL, который создает FOREIGN KEY для столбца "Id_P" при создании таблицы "Orders":
MySQL:
CREATE TABLE Orders ( Id_O int NOT NULL, OrderNo int NOT NULL, Id_P int, PRIMARY KEY (Id_O), Иностранный ключ (Id_P) ссылается на Persons (Id_P) )
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) )
Если необходимо نامовать ограничение FOREIGN KEY и определить ограничение FOREIGN KEY для нескольких столбцов, пожалуйста, используйте следующий синтаксис SQL:
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) )
FOREIGN KEY Ограничение SQL на ALTER TABLE
Если необходимо создать ограничение FOREIGN KEY для столбца "Id_P" в таблице "Orders", которая уже существует, пожалуйста, используйте следующий SQL:
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Orders ADD FOREIGN KEY (Id_P) REFERENCES Persons(Id_P)
Если необходимо نامовать ограничение FOREIGN KEY и определить ограничение FOREIGN KEY для нескольких столбцов, пожалуйста, используйте следующий синтаксис SQL:
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Orders ADD CONSTRAINT fk_PerOrders FOREIGN KEY (Id_P) REFERENCES Persons(Id_P)
Аннулировать ограничение FOREIGN KEY
Если необходимо аннулировать ограничение FOREIGN KEY, пожалуйста, используйте следующий SQL:
MySQL:
ALTER TABLE Orders DROP FOREIGN KEY fk_PerOrders
SQL Server / Oracle / MS Access:
ALTER TABLE Orders DROP CONSTRAINT fk_PerOrders
- Предыдущая страница Основной ключ SQL
- Следующая страница SQL Check