Команда FOREIGN KEY

Команда FOREIGN KEY используется для задания связи между таблицами. Внешний ключ указывает, что значения столбца в дочерней таблице должны существовать в столбце с PRIMARY KEY или UNIQUE родительской таблицы.

Синтаксис

sqlCREATE TABLE table_name (
  column_name data_type,
  FOREIGN KEY (column_name)
  REFERENCES parent_table(parent_column)
)

Таблицы для примеров

users
id email name
1 ivan@example.com Ivan
2 olga@example.com Olga
3 sergey@example.com Sergey

Пример

Давайте создадим таблицу orders со связью с таблицей users по внешнему ключу user_id:

sqlCREATE TABLE orders (
  id INT PRIMARY KEY,
  user_id INT,
  amount INT,
  FOREIGN KEY (user_id)
  REFERENCES users(id)
)

Результат выполнения кода:

id user_id amount
1 1 1500
2 2 2300
3 1 800

Пример

Давайте добавим внешний ключ в уже существующую таблицу orders с помощью ALTER TABLE:

sqlALTER TABLE orders
ADD FOREIGN KEY (user_id)
REFERENCES users(id)

Пример

Давайте создадим таблицу profiles со связью по уникальному полю email:

sqlCREATE TABLE profiles (
  id INT PRIMARY KEY,
  email VARCHAR(255),
  city VARCHAR(100),
  FOREIGN KEY (email)
  REFERENCES users(email)
)

Результат выполнения кода:

id email city
1 ivan@example.com Moscow
2 olga@example.com Saint Petersburg
3 sergey@example.com Kazan

Смотрите также

  • команду PRIMARY KEY,
    которая задаёт ключ родительской таблицы
  • команду UNIQUE,
    которая обеспечивает уникальность значений
  • команду CREATE TABLE,
    которая создаёт таблицу со связями
  • команду ALTER TABLE,
    которая добавляет ограничение связи
  • команду JOIN,
    которая соединяет таблицы по связанным полям