Как задать внешний ключ в sql
Перейти к содержимому

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

  • автор:

Внешний ключ в MySQL

Внешний ключ в MySQL, по идее, добавляет строчку с одной таблицы в другую, если во второй совпадает внешний ключ?

Отслеживать
25.9k 1 1 золотой знак 38 38 серебряных знаков 71 71 бронзовый знак
задан 14 ноя 2011 в 12:50
2,468 22 22 золотых знака 50 50 серебряных знаков 97 97 бронзовых знаков

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

Все ж таки вопросы надо формулировать так, чтобы они были понятны тебе самому. А восклицания типа:»Когда огонь горит, она в бухте»,- истолковываются читателями — каждым по-своему. Я уловил лишь то, что вопрос звучит о внешних ключах. Отвечаю как могу.

Внешний ключ — есть ссылка на родителя: каждый из жильцов дома указывает на тот дом, где он живет; а дом не только ничего не знает о своих жильцах, он даже не подозревает об их существовании. Внешний ключ — это дубликат первичного ключа — уникального набора значений полей (поля) родительской таблицы. Поддерживает целостность данных и отношения между сущностями (таблицами)

Отслеживать
ответ дан 14 ноя 2011 в 13:42
2,850 16 16 серебряных знаков 16 16 бронзовых знаков

внешние ключи используются не для объединения таблиц, а главным образом для проверки целостности ссылочных данных (ограничения внешних ключей). Т.е. например при удалении родительского элемента можно удалить все дочерние и т.д.или же при апдейте родителя — обновится все в дочерних.

Отслеживать
ответ дан 14 ноя 2011 в 13:38
3,886 19 19 серебряных знаков 26 26 бронзовых знаков
но при обновлении потомков, с родителем ничего не происходит
14 ноя 2011 в 13:38

  • mysql
  • sql
Похожие

Подписаться на ленту

Лента вопроса

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.6.4.10328

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

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

Общий синтаксис установки внешнего ключа на уровне таблицы:

[CONSTRAINT имя_ограничения] FOREIGN KEY (столбец1, столбец2, . столбецN) REFERENCES главная_таблица (столбец_главной_таблицы1, столбец_главной_таблицы2, . столбец_главной_таблицыN) [ON DELETE действие] [ON UPDATE действие]

Для создания ограничения внешнего ключа после FOREIGN KEY указывается столбец таблицы, который будет представляет внешний ключ. А после ключевого слова REFERENCES указывается имя связанной таблицы, а затем в скобках имя связанного столбца, на который будет указывать внешний ключ. После выражения REFERENCES идут выражения ON DELETE и ON UPDATE , которые задают действие при удалении и обновлении строки из главной таблицы соответственно.

Например, определим две таблицы и свяжем их посредством внешнего ключа:

CREATE TABLE companies ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL ); CREATE TABLE users ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, age INTEGER, company_id INTEGER, FOREIGN KEY (company_id) REFERENCES companies (id) );

В данном случае определены таблицы companies и users. companies является главной и представляет компании, где может работать пользователь. users является зависимой и представляет пользователей. Таблица users через столбец company_id связана с таблицей companies и ее столбцом id. То есть столбец company_id является внешним ключом , который указывает на столбец id из таблицы companies.

С помощью оператора CONSTRAINT можно задать имя для ограничения внешнего ключа:

CREATE TABLE users ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, age INTEGER, company_id INTEGER, CONSTRAINT users_companies_fk FOREIGN KEY (company_id) REFERENCES companies (id) );

ON DELETE и ON UPDATE

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

  • CASCADE : автоматически удаляет или изменяет строки из зависимой таблицы при удалении или изменении связанных строк в главной таблице.
  • SET NULL : при удалении или обновлении связанной строки из главной таблицы устанавливает для столбца внешнего ключа значение NULL . (В этом случае столбец внешнего ключа должен поддерживать установку NULL)
  • RESTRICT : отклоняет удаление или изменение строк в главной таблице при наличии связанных строк в зависимой таблице.
  • NO ACTION : то же самое, что и RESTRICT .
  • SET DEFAULT : при удалении связанной строки из главной таблицы устанавливает для столбца внешнего ключа значение по умолчанию, которое задается с помощью атрибуты DEFAULT.

Каскадное удаление

Каскадное удаление позволяет при удалении строки из главной таблицы автоматически удалить все связанные строки из зависимой таблицы. Для этого применяется опция CASCADE :

CREATE TABLE users ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, age INTEGER, company_id INTEGER, FOREIGN KEY (company_id) REFERENCES companies (id) ON DELETE CASCADE );

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

Установка NULL

При установки для внешнего ключа опции SET NULL необходимо, чтобы столбец внешнего ключа допускал значение NULL:

CREATE TABLE users ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, age INTEGER, company_id INTEGER, FOREIGN KEY (company_id) REFERENCES companies (id) ON DELETE SET NULL );

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

Ключевое поле в SQL можно задать, используя специальную конструкцию при создании таблицы. Для задания ключевого поля следует использовать ключевое слово PRIMARY KEY после определения имени поля и его типа данных. Например, вот как можно задать ключевое поле «id» типа целое число (integer):

 CREATE TABLE table_name ( id INTEGER PRIMARY KEY, column1 datatype1, column2 datatype2, . ); 

В этом примере, поле «id» будет являться ключевым полем таблицы «table_name».

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

Привет! Сегодня мы поговорим о том, как задать ключевое поле в SQL. Ключевое поле в базе данных играет важную роль, так как оно позволяет уникально идентифицировать каждую запись в таблице. Использование ключевых полей помогает обеспечить целостность данных и улучшить производительность запросов. Существуют различные типы ключевых полей в SQL, такие как PRIMARY KEY, UNIQUE KEY, FOREIGN KEY и другие. Давайте рассмотрим каждый из них подробнее.

PRIMARY KEY

PRIMARY KEY — это ключевое поле, которое уникально идентифицирует каждую запись в таблице. Оно гарантирует, что в столбце не будет повторяющихся значений и что каждая запись будет иметь уникальный идентификатор. Для того чтобы задать PRIMARY KEY в SQL, следует использовать ключевое слово PRIMARY KEY после описания столбца при создании таблицы.

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

В приведенном примере мы создаем таблицу «employees» с полем «id» в качестве PRIMARY KEY. Это означает, что каждая запись в таблице будет иметь уникальное значение «id».

UNIQUE KEY

UNIQUE KEY — это ключевое поле, которое также уникально идентифицирует каждую запись в таблице, но в отличие от PRIMARY KEY, в таблице может быть несколько полей с UNIQUE KEY. UNIQUE KEY позволяет иметь поле, в котором все значения должны быть уникальными, но могут быть пустыми. Для того чтобы задать UNIQUE KEY в SQL, следует использовать ключевое слово UNIQUE после описания столбца при создании таблицы.

 CREATE TABLE students ( id INT PRIMARY KEY, name VARCHAR(50), email VARCHAR(50) UNIQUE, age INT ); 

В приведенном примере мы создаем таблицу «students» с полем «email» в качестве UNIQUE KEY. Это означает, что каждое значение в столбце «email» должно быть уникальным.

FOREIGN KEY

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

 CREATE TABLE orders ( id INT PRIMARY KEY, product_id INT, customer_id INT, FOREIGN KEY (product_id) REFERENCES products(id), FOREIGN KEY (customer_id) REFERENCES customers(id) ); 

В приведенном примере мы создаем таблицу «orders» с двумя FOREIGN KEY полями «product_id» и «customer_id». Каждое из этих полей ссылается на PRIMARY KEY поля в таблицах «products» и «customers» соответственно.

Заключение

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

Внешний ключ (FOREIGN KEY) в SQL

Внешний ключ (FOREIGN KEY) нужен для того, чтобы связать две разные таблицы между собой. Внешний ключ может ссылаться на любой столбец в родительской таблице. Однако общепринятой практикой является ссылка внешнего ключа на первичный ключ (primary key) родительской таблицы. Например:

Здесь поле customer_id в таблице Orders является FOREIGN KEY , который ссылается на поле id в таблице Customers. Это означает, что значением customer_id (таблицы Orders) должно быть значение из столбца id (таблицы Customers).

Создание внешнего ключа

Теперь давайте посмотрим, как мы можем добавить ограничение FOREIGN KEY :

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *