Как задать внешний ключ в SQL: инструкция для начинающих

В SQL для создания внешнего ключа можно использовать оператор FOREIGN KEY.

ALTER TABLE child_table
ADD CONSTRAINT fk_name
FOREIGN KEY (child_column)
REFERENCES parent_table(parent_column);

В приведенном примере:

  • child_table - таблица, в которой нужно создать внешний ключ
  • fk_name - имя для внешнего ключа
  • child_column - столбец в child_table, который будет ссылаться на столбец в родительской таблице
  • parent_table - родительская таблица, к которой будет ссылаться внешний ключ parent_column - столбец в родительской таблице, на который будет ссылаться внешний ключ

Детальный ответ

Как задать внешний ключ в SQL

В SQL, внешние ключи используются для связи двух таблиц между собой. Они обеспечивают целостность данных и позволяют выполнить операции на стыке двух таблиц.

Для того чтобы задать внешний ключ, сначала необходимо создать отношение между двумя таблицами. Давайте рассмотрим пример двух таблиц - таблицы "Студенты" и таблицы "Курсы". Таблица "Студенты" содержит информацию о студентах, а таблица "Курсы" содержит информацию о предлагаемых курсах. Каждый студент может быть связан с одним или несколькими курсами.

Для того чтобы задать внешний ключ, необходимо добавить столбец в таблицу "Студенты", который будет ссылаться на столбец в таблице "Курсы". В этом столбце будут храниться значения, связанные с курсами, которые берут студенты.

Давайте посмотрим на пример SQL кода, который создает таблицы "Студенты" и "Курсы" и задает внешний ключ:


CREATE TABLE Students (
    id INT PRIMARY KEY,
    name VARCHAR(50),
    course_id INT,
    FOREIGN KEY (course_id) REFERENCES Courses(id)
);

CREATE TABLE Courses (
    id INT PRIMARY KEY,
    name VARCHAR(50)
);

В приведенном выше примере кода мы создаем таблицу "Студенты" с использованием ключевого слова FOREIGN KEY, чтобы задать внешний ключ. Мы указываем столбец "course_id" в таблице "Студенты" как внешний ключ, который ссылается на столбец "id" в таблице "Курсы". Таким образом, каждый студент будет связан с конкретным курсом.

При создании таблицы, которая содержит внешний ключ, следует учитывать следующие правила:

  • Столбец с внешним ключом должен иметь тот же тип данных, что и столбец ссылающийся на него.
  • Значения в столбце с внешним ключом должны существовать в столбце, на который он ссылается.
  • Если запись в столбце, на который ссылается внешний ключ, удаляется или изменяется, нужно определить действие, которое следует предпринять со связанными записями. Это можно сделать с помощью опции ON DELETE или ON UPDATE.

Вот некоторые из действий, которые можно задать при удалении или обновлении записи:

  • CASCADE: Если запись в таблице-родителе удаляется или изменяется, все связанные записи в таблице-потомке также удаляются или изменяются соответственно.
  • SET NULL: Если запись в таблице-родителе удаляется или изменяется, значения в столбце с внешним ключом в таблице-потомке устанавливаются в NULL.
  • SET DEFAULT: Если запись в таблице-родителе удаляется или изменяется, значения в столбце с внешним ключом в таблице-потомке устанавливаются в значение по умолчанию.

Для задания таких действий, можно использовать следующий синтаксис:


CREATE TABLE Students (
    id INT PRIMARY KEY,
    name VARCHAR(50),
    course_id INT,
    FOREIGN KEY (course_id) REFERENCES Courses(id) ON DELETE CASCADE,
    ...
);

Таким образом, мы можем гибко настраивать поведение при удалении или изменении связанных записей.

В конце концов, задание внешнего ключа в SQL позволяет нам создавать сложные связи между таблицами и обеспечивать целостность данных. Используя внешние ключи, мы можем легко получать информацию из нескольких таблиц, связанных между собой.

Видео по теме

Первичный ключ, внешний ключ, суррогатный ключ / Илья Хохлов

Создание Foreign key - внешний ключ - для PostgreSQL (2021)

Первичный и внешний ключ

Похожие статьи:

Как называются данные в реляционной модели не имеющие внутренней структуры в SQL?

🔑 Как написать функцию в SQL 📝

Как задать внешний ключ в SQL: инструкция для начинающих

Как записать результат запроса в переменную SQL: лучшие способы и советы

Как подключить базу данных SQL к Python: руководство для начинающих

Как написать SQL запрос в Python: детальное руководство с простыми шагами и примерами кода