кодесурса
«SQL

SQL FOREIGN KEY

script1adsense2code
script1adsense3code

ИНОСТРАННЫЙ КЛЮЧ

SQL FOREIGN KEY CONSTRAINT используется для обеспечения ссылочной целостности данных в одной таблице для соответствия значениям в другой таблице.

FOREIGN KEY CONSTRAINT - это столбец или список столбцов, который указывает на PRIMARY KEY другой таблицы.

Основное назначение FOREIGN KEY состоит в том, что будут отображаться только те значения, которые присутствуют в таблице первичного ключа.

«SQL

Для каждой строки в ссылочной таблице (таблица содержит FOREIGN KEY) внешний ключ должен соответствовать существующему первичному ключу в ссылочной таблице (таблица содержит PRIMARY KEY). Это исполнение FOREIGN KEY называется ссылочной целостностью.

Структура и тип данных PRIMARY KEY и FOREIGN KEY должны быть одинаковыми.

Значения столбцов FOREIGN KEY в каждой строке ссылочной таблицы должны совпадать со значениями соответствующих столбцов первичного ключа строки в ссылочной таблице.

Синтаксис:

 CREATE TABLE <table_name> ( 
column1 data_type [(size)], 
column2 data_type [(size)],
ограничение (имя_ограничения) 
ИНОСТРАННЫЙ КЛЮЧ [column1, column2 ...]
ССЫЛКИ [primary_key_table] (column_list_of_primary_key_table) ...);

Параметры:

название Описание
table_name Имя таблицы, в которой хранятся данные.
column1, column2 Наименование столбцов таблицы.
тип данных Это char, varchar, целое число, десятичное число, дата и многое другое.
размер Максимальная длина столбца таблицы.
ограничение Это ключевое слово. Это ключевое слово не является обязательным.
constraint_name Имя ограничения, определяемое пользователем.
primary_key_table Таблица, где находится первичный ключ.
column_list_of_primary_key_table Список столбцов, который составляет первичный ключ для таблицы.

Пример:

Предположим, у нас есть таблица «агенты», которая включает в себя все данные агентов, и мы собираемся создать еще одну таблицу с именем «customer1», которая включает все записи клиентов. Столбцы и типы данных для обеих таблиц показаны ниже.

Здесь ограничение заключается в том, что все клиенты должны быть связаны с агентом, который уже находится в таблице «агенты». В этом случае необходимо создать SQL FOREIGN KEY CONSTRAINT с таблицей customer1, которая связана с SQL PRIMARY KEY CONSTRAINT таблицы agent.

Теперь мы можем гарантировать, что все клиенты в таблице «customer1» связаны с агентом в таблице «agent». Другими словами, таблица «customer1» не может содержать информацию о каком-либо агенте, которого нет в таблице «agent».

агенты

Имя поля Тип данных Размер Десятичные знаки НОЛЬ скованность
agent_code голец 6 нет ОСНОВНОЙ КЛЮЧ
имя агента голец 40 нет
рабочая область голец 35 да
комиссия десятичный 10 2 да
номер телефона голец 17 да

customer1

Имя поля Тип данных Размер Десятичные знаки НОЛЬ скованность
cust_code голец 6 нет ОСНОВНОЙ КЛЮЧ
CUST_NAME голец 25 да
cust_city голец 25 да
agent_code голец 6 да ИНОСТРАННЫЙ КЛЮЧ

можно использовать следующий оператор SQL:

Код SQL:

CREATE TABLE customer1(
cust_code char(6) NOT NULL PRIMARY KEY,
cust_name char(25),
cust_city char(25),
agent_code char(6),
FOREIGN KEY(agent_code)
REFERENCES agents (agent_code)
) ;

Наглядное представление

«Sql

SQL CREATE TABLE с FOREIGN KEY в ограничении столбца

В следующем разделе мы обсудим использование FOREIGN KEY CONSTRAINT без использования ключевого слова 'external key'.

Пример:

Создать таблицу, которая содержит следующие имена полей и типы данных.

Имя поля Тип данных Размер Десятичные знаки НОЛЬ скованность
cust_code голец 6 нет ОСНОВНОЙ КЛЮЧ
CUST_NAME голец 25 да
cust_city голец 25 да
agent_code десятичный 6 да

Таблица содержит PRIMARY KEY CONSTRAINT для 'cust_code' и FOREIGN KEY для 'agent_code' без использования ключевого слова FOREIGN KEY.

Код агента в таблице «агенты» уникален.

В таблице «mytest» будут отображаться только те «код_агента», которые присутствуют в таблице «агенты», поскольку ссылочный столбец - это «код_агента» таблицы «агенты».

можно использовать следующий оператор SQL:

Код SQL:

CREATE TABLE mytest(
cust_code char(6) NOT NULL PRIMARY KEY,
cust_name char(25),
cust_city char(25),
agent_code char(6) 
REFERENCES agents(agent_code));

Чтобы увидеть структуру созданной таблицы:

Код SQL:

DESCRIBE mytest;

Выход:

«Sql

SQL CREATE TABLE с использованием FOREIGN KEY CONSTRAINT без указания столбцов PRIMARY KEY

В следующем разделе мы обсудим, как использовать FOREIGN KEY CONSTRAINT без указания столбцов первичного ключа.

Пример:

Создать таблицу, содержащую следующие имена полей и типы данных:

Имя поля Тип данных Размер Десятичные знаки НОЛЬ скованность
cust_code голец 6 нет ОСНОВНОЙ КЛЮЧ
CUST_NAME голец 25 да
cust_city голец 25 да
agent_code десятичный 6 да

В таблице содержится PRIMARY KEY CONSTRAINT для 'cust_code' и FOREIGN KEY для 'agent_code' без указания столбца PRIMARY KEY -

Код агента в таблице «агенты» уникален.

В таблице «mytest» будут отображаться только те «код_агента», которые присутствуют в таблице «агенты», поскольку ссылочный столбец - это «код_агента» таблицы «агенты».

можно использовать следующий оператор SQL:

Код SQL:

CREATE TABLE mytest(
cust_code char(6) NOT NULL PRIMARY KEY,
cust_name char(25),
cust_city char(25),
agent_code char(6)
REFERENCES agents); 

Чтобы увидеть структуру созданной таблицы:

Код SQL:

DESCRIBE mytest;

Выход:

«Создание

SQL CREATE TABLE с использованием ограничения FOREIGN KEY со списком столбцов PRIMARY KEY

В следующем разделе будет обсуждаться то, как SQL FOREIGN KEY CONSTRAINT используется со списком столбцов первичного ключа в инструкции CREATE TABLE.

Пример:

Чтобы создать таблицу, которая содержит следующие имена полей и типы данных -

Имя поля Тип данных Размер Десятичные знаки НОЛЬ скованность
cust_code голец 6 нет ОСНОВНОЙ КЛЮЧ
CUST_NAME голец 40 нет
cust_city голец 35 да
рабочая область голец 35 да
cust_country голец 20 да
класс десятичный 4 0 да
opening_amt десятичный 12 2 да
receive_amt десятичный 12 2 да
payment_amt десятичный 12 2 да
outstanding_amt десятичный 12 2 да
номер телефона голец 17 да
agent_code голец 7 да ИНОСТРАННЫЙ КЛЮЧ

В таблице содержится PRIMARY KEY CONSTRAINT для 'cust_code' и FOREIGN KEY для 'agent_code'.

'Agent_code' в таблице 'agent1' уникален,

Только те 'agent_code', которые присутствуют в таблице 'agnet1', будут отображаться в таблице 'mytest', поскольку ссылочный столбец является 'agent_code' таблицы 'agnet1',

можно использовать следующий оператор SQL:

Код SQL:

CREATE TABLE mytest(
cust_code char(6) NOT NULL PRIMARY KEY,
cust_name char(40) NOT NULL,
cust_city char(35),
working_area char(35),
cust_country char(20),
grade decimal(4,0),
opening_amt decimal(12,2),
receive_amt decimal(12,2),
payment_amt decimal(12,2),
outstanding_amt decimal(12,2),
phone_no char(17),
agent_code char(6),
FOREIGN KEY(agent_code) 
REFERENCES agent1(agent_code),
UNIQUE(cust_code,agent_code));

Чтобы увидеть структуру созданной таблицы:

Код SQL:

DESCRIBE mytest;

Выход:

«Создание

SQL CREATE TABLE с использованием FOREIGN KEY для нескольких столбцов со списком столбцов PRIMARY KEY

В следующем разделе мы обсудим, как SQL FOREIGN KEY CONSTRAINT можно использовать для нескольких столбцов со списком столбцов первичного ключа в операторе CREATE TABLE.

Пример:

Чтобы создать таблицу, которая содержит следующие имена полей и типы данных -

Имя поля Тип данных Размер Десятичные знаки НОЛЬ скованность
ord_num десятичный 6 нет ОСНОВНОЙ КЛЮЧ
ord_amount десятичный 12 2 да
advance_amount десятичный 12 2 нет
ord_date Дата нет
cust_code голец 6 нет ИНОСТРАННЫЙ КЛЮЧ
agent_code голец 6 нет ИНОСТРАННЫЙ КЛЮЧ
ord_description голец 60 нет

В таблице содержится PRIMARY KEY CONSTRAINT для 'ord_num' и FOREIGN KEY в комбинации столбцов 'cust_code' и 'agent_code'.

Комбинация 'cust_code' и 'agent_code' в таблице 'customer1' является уникальной.

Только те комбинации «cust_code» и «agent_code», которые присутствуют в таблице «customer1», появятся в таблице «mytest», поскольку ссылочные столбцы представляют собой комбинацию «cust_code» и «agent_code» таблицы «customer1».

можно использовать следующий оператор SQL:

Код SQL:

CREATE TABLE mytest(
ord_num decimal(6) NOT NULL PRIMARY KEY,
ord_amount decimal(12,2),
advance_amount decimal(12,2) NOT NULL,
ord_date date NOT NULL,
cust_code char(6) NOT NULL,
agent_code char(6) NOT NULL,
ord_description char(60) NOT NULL,
FOREIGN KEY(cust_code,agent_code)
REFERENCES customer1 (cust_code,agent_code));

Чтобы увидеть структуру созданной таблицы:

Код SQL:

DESCRIBE mytest;

Выход:

«Sql

SQL CREATE TABLE путем ссылки FOREIGN KEY на собственную таблицу

В следующем разделе мы обсудим, как можно использовать SQL FOREIGN KEY CONSTRAINT для ссылки на свою собственную таблицу в операторе CREATE TABLE.

Пример:

Чтобы создать таблицу, которая содержит следующие поля и типы данных -

Имя поля Тип данных Размер Десятичные знаки НОЛЬ скованность
cust_code голец 6 нет ОСНОВНОЙ КЛЮЧ
cliant_name голец 40 нет УНИКАЛЬНАЯ
cliant_city голец 35 нет
supp_code Дата 6 нет

Таблица содержит ПЕРВИЧНЫЙ КЛЮЧ для 'cust_code' и FOREIGN KEY для 'supp_code', где и 'cust_code', и 'supp_code' принадлежат таблице 'mytest'. Для достижения вышеизложенного можно использовать следующий оператор SQL:

Код SQL:

CREATE TABLE mytest(
cust_code char(6) NOT NULL PRIMARY KEY,
cliant_name char(40) NOT NULL UNIQUE,
cliant_city char(35),
supp_code char(6) REFERENCES mytest);

Чтобы увидеть структуру созданной таблицы:

Код SQL:

DESCRIBE mytest;

Выход:

«Sql

Упражнения по SQL

Хотите улучшить вышеуказанную статью? Вносите свои заметки / комментарии / примеры через Disqus.

Предыдущая: Первичный ключ
Далее: Ограничения

Новый контент: Composer: менеджер зависимостей для PHP , R программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code