basics mysql foreign key constraint with examples
Цей посібник пояснює основи обмеження зовнішнього ключа MySQL, наприклад, його синтаксис, як додати, оголосити, скинути та змінити його на прикладах:
Якщо говорити дуже просто, ІНОЗЕМНИЙ КЛЮЧ використовується для зв’язування двох або більше таблиць у MySQL.
Таблиці MySQL потрібно підключати для того, щоб запитувати та оновлювати різні типи даних у різні моменти часу. Отже, обов’язково потрібно мати точку зв’язку між 2 таблицями.
У цьому підручнику ми обговоримо різні способи використання іноземних ключів, а також те, як їх можна оголосити та змінити, а також які обмеження він має у загальній структурі таблиці.
Що ви дізнаєтесь:
ІНОЗЕМНИЙ КЛЮЧ MySQL
Синтаксис:
CONSTRAINT {constraintName} FOREIGN KEY (referringColumnName) REFERENCES {referredTable}({referredColumn}) ON UPDATE {reference-option} ON DELETE {reference-option}
Вище наведено синтаксис, який використовується при зазначенні ЗОВНІШНЬОГО КЛЮЧУ щодо таблиці під час створення таблиці або за допомогою Оператор ALTER TABLE.
Давайте розберемося в різних компонентах синтаксису:
як запустити файл .swf
- constrantName: Це символічна назва, яку ми хочемо визначити для вказаного обмеження FK. Якщо це пропущено, тоді движок MySQL автоматично призначає ім’я обмеженню FK.
- referringColumnName: Це стовпець, який би посилався на значення в іншій таблиці, як зазначено в стовпці у згаданій таблиці.
- Рекомендована таблиця / батьківська таблиця: Це стосується назви таблиці, з якої будуть посилатися значення.
- Рекомендована колонка: Назва стовпця у згаданій таблиці.
- Довідковий варіант: Це дії, які з’являються у зображенні, коли в таблиці, яка містить обмеження зовнішнього ключа, виконується дія оновлення або видалення. І ОНОВЛЕННЯ, і ВИДАЛЕННЯ можуть мати однакові або різні параметри посилання.
Далі в цьому посібнику ми дізнаємося про різні дії щодо цілісності посилань.
Давайте подивимось приклад посилання на ІНОЗЕМНИЙ КЛЮЧ на прикладі працівника / підрозділу. Створимо таблицю Department з стовпцями - departmentId (int & PRIMARY KEY) і departmentName (varchar).
CREATE TABLE department(departmentId INT PRIMARY KEY NOT NULL, departmentName VARCHAR(100));
Створіть таблицю Співробітник зі стовпцями, як показано нижче:
Стовпець | Тип |
---|---|
ідентифікатор | INT (первинний ключ) |
ім'я | ВАРЧАР |
dept_id | INT (Зовнішній ключ) з посиланням на таблицю відділів |
адресу | ВАРЧАР |
вік | INT |
доб | ДАТА |
CREATE TABLE employee(id INT PRIMARY KEY NOT NULL, name VARCHAR(100), address VARCHAR(100), age INT, dob DATE, deptId INT, CONSTRAINT depIdFk FOREIGN KEY (deptId) REFERENCES department(departmentId) ON UPDATE CASCADE ON DELETE CASCADE);
Як бачите, у наведеній вище таблиці Employee ми оголосили стовпець deptId типу Int та визначили ІНОЗЕМНИЙ КЛЮЧ із таблиці Department у стовпці departmentId.
Це по суті означає, що стовпець deptId у таблиці Employee може містити лише значення, що знаходяться в таблиці Department.
Спробуємо вставити дані в ці таблиці і подивимось, як працює ФОРМАТ КОНТРОЛЮ.
- Спочатку створіть запис у таблиці відділу та додайте запис у таблиці службовця з посиланням на ідентифікатор запису, який був доданий до таблиці відділу.
INSERT INTO department VALUES (1, 'ENGINEERING') --------- INSERT INTO EMPLOYEE VALUES (1, 'AMIT KUMAR', 'MUMBAI', 32, '1988-02-12',1);
Ви побачите, що обидва оператори будуть виконані без помилок.
- Тепер вкажіть значення для departmentId, яке не існує.
Наприклад, у наведеній нижче заявці на запит ми створюємо працівника з неіснуючим departmentId -10
INSERT INTO EMPLOYEE VALUES (1, 'DARREN JOHNSON', 'CHICAGO', 32, '1988-02-12',10);
- У цьому випадку ми отримаємо помилку, як показано нижче:
Error Code: 1452. Cannot add or update a child row: a foreign key constraint fails (`my_sql_foreign_key`.`employee`, CONSTRAINT `depIdFk` FOREIGN KEY (`deptId`) REFERENCES `department` (`departmentId`) ON DELETE CASCADE ON UPDATE CASCADE)
Отже, в цілому, коли визначаються посилання на ІНОЗЕМНІ КЛЮЧИ, важливо переконатися, що таблиця, на яку посилаються, повинна мати дані перед тим, як на неї посилатись.
Референційні дії щодо доброчесності
Спершу спробуємо зрозуміти, що саме таке референтна цілісність.
Цілісність посилань допомагає підтримувати дані в чистому та послідовному стані, де є таблиці, пов’язані між собою із взаємозв’язком ІНОЗЕМНИЙ КЛЮЧ.
Простіше кажучи, посилальна цілісність відноситься до дії, яку ми очікуємо від механізму баз даних, коли в таблиці, на яку посилається, що містить ІНОЗЕМНИЙ КЛЮЧ, відбувається ОНОВЛЕННЯ або ВИДАЛЕННЯ.
Наприклад, у нашому прикладі Працівник / Відділ, припустимо, ми змінили ідентифікатор Відділу для певного рядка в БД. Тоді це вплине на всі посилальні рядки в таблиці Employee. Ми можемо визначити різні типи сценаріїв референтної цілісності, які можуть застосовуватися в таких випадках.
Примітка: Цілісність посилань визначається під час налаштування / декларування ЗОВНІШНЬОГО КЛЮЧУ як частина команд / розділів ON DELETE та ON UPDATE.
Зверніться до зразка запиту тут (для прикладу Працівник / Відділ):
CREATE TABLE department(departmentId INT PRIMARY KEY NOT NULL, departmentName VARCHAR(100)); CREATE TABLE employee(id INT PRIMARY KEY NOT NULL, name VARCHAR(100), address VARCHAR(100), age INT, dob DATE, deptId INT, CONSTRAINT depIdFk FOREIGN KEY (deptId) REFERENCES department(departmentId) ON UPDATE {ref-integrity-action} ON DELETE {ref integrity action});
Вставте деякі дані до цих таблиць, як показано нижче:
INSERT INTO department VALUES (1, 'ENGINEERING'), (2,'ACCOUNTING'), (3, 'MARKETING'), (4, 'HR'), (5, 'LEGAL'); INSERT INTO EMPLOYEE VALUES (1, 'AMIT KUMAR', 'MUMBAI', 32,'1988-02-12',1), (2, 'RYAN HILMAN', 'SEATTLE',43, '1977-03-15',1), (3, 'KAVITA SINGH', 'DELHI', 42, '1978-02-18',4), (4, 'DAVID BECKHAM', 'LONDON', 40, '1980-07-13',3), (5, 'PRITI KUMARI', 'DELHI', 35, '1985-12-11',2), (6, 'FRANK BALDING', 'NEW YORK', 35, '1985-08-25',5)
Існує 4 довідкові дії, які підтримуються MySQL. Спробуємо зрозуміти кожного з них.
# 1) КАСКАД
Це одна з найбільш часто використовуваних референційних дій цілісності. Встановлення DELETE і UPDATE в CASCADE застосовуватиме зміни, внесені до таблиці посилань у таблиці посилань, тобто в прикладі Працівник / Відділ. Припустимо, хтось видаляє рядок у таблиці Департаменту, маючи вимовити назву_відділу = ОБЛІК, тоді всі рядки таблиці Співробітника, що мають ідентифікатор_відділу, як і таблиці Бухгалтерського обліку, також будуть видалені.
Давайте розберемося в цьому на прикладі:
SELECT * FROM employee;
ідентифікатор | ім'я | адресу | вік | доб | deptId |
---|---|---|---|---|---|
один | АМІТ КУМАР | МУМБАЙ | 32 | 1988-02-12 | один |
два | РАЙАН ХІЛМАН | Сіетл | 43 | 1977-03-15 | один |
3 | КАВІТА СІНГ | ДЕЛІ | 42 | 1978-02-18 | 4 |
4 | ДЕВІД БЕКХЕМ | ЛОНДОН | 40 | 1980-07-13 | 3 |
5 | ПРІТІ КУМАРІ | ДЕЛІ | 35 | 1985-12-11 | два |
6 | ФРАНКОВИЙ БАЛИНД | НЬЮ-ЙОРК | 35 | 1985-08-25 | 5 |
Видалити запис із таблиці відділу, де departmentName = 'ОБЛІК'
DELETE from DEPARTMENT WHERE departmentName='ACCOUNTING';
Тепер, оскільки це КАСКАДНА довідкова дія, ми очікуємо, що також слід видалити всі рядки, які мають departmentID = 2 (що стосується відділу «ОБЛІК»). Давайте знову зробимо запит SELECT у таблиці Employee.
SELECT * FROM employee;
ідентифікатор | ім'я | адресу | вік | доб | deptId |
---|---|---|---|---|---|
один | АМІТ КУМАР | МУМБАЙ | 32 | 1988-02-12 | один |
два | РАЙАН ХІЛМАН | Сіетл | 43 | 1977-03-15 | один |
3 | КАВІТА СІНГ | ДЕЛІ | 42 | 1978-02-18 | 4 |
4 | ДЕВІД БЕКХЕМ | ЛОНДОН | 40 | 1980-07-13 | 3 |
6 | ФРАНКОВИЙ БАЛИНД | НЬЮ-ЙОРК | 35 | 1985-08-25 | 5 |
Як ви можете бачити вище, через посилальну цілісність CASCADE рядки таблиці Employee, які посилалися на видалений стовпець як ЗОВНІШНИЙ КЛЮЧ, будуть видаляти ці рядки.
# 2) ОБМЕЖЕННЯ / НІЯКИХ ДІЙ
Режим ОБМЕЖЕННЯ або ЗАПРОЩЕННЯ ДІЙ не дозволить будь-які операції ОНОВЛЕННЯ або ВИДАЛЕННЯ таблиці, що має стовпці, на які в якійсь таблиці вказано ЗОВНІШНІЙ КЛЮЧ.
Режим NO ACTION можна застосувати, просто пропустивши пропозиції ON UPDATE і ON DELETE з декларації таблиці.
Давайте спробуємо той самий приклад, і в цьому випадку просто пропустимо дію ON UPDATE та ON DELETE Referential integritet.
Тепер, коли ми намагаємось видалити будь-який запис у вказаній таблиці, ми отримаємо помилку, оскільки ми встановили посилальну дію на RESTRICT
DELETE FROM department WHERE departmentName='ACCOUNTING';
Якщо ви спробуєте виконати наведену вище команду DELETE, ви побачите помилку приблизно так, як показано нижче.
Error Code: 1451. Cannot delete or update a parent row: a foreign key constraint fails (`my_sql_foreign_key`.`employee`, CONSTRAINT `depIdFk` FOREIGN KEY (`deptId`) REFERENCES `department` (`departmentId`))
# 3) ВСТАНОВИТИ НУЛЬ
За допомогою SET NULL будь-яке ОНОВЛЕННЯ або ВИДАЛЕННЯ в таблиці, на яку посилаються, призведе до оновлення значення NULL до значення стовпця, позначеного як ЗОВНІШНИЙ КЛЮЧ у таблиці посилань.
За допомогою цієї дії щодо цілісності посилань визначення таблиці Employee стане таким, як показано нижче:
CREATE TABLE employee(id INT PRIMARY KEY NOT NULL, name VARCHAR(100), address VARCHAR(100), age INT, dob DATE, deptId INT, CONSTRAINT depIdFk FOREIGN KEY (deptId) REFERENCES department(departmentId) ON DELETE SET NULL);
Видаліть рядок у вказаній таблиці, як показано нижче:
DELETE FROM department WHERE departmentName='ACCOUNTING';
Тепер у цьому випадку значення посилання в таблиці Employee буде встановлено як NULL. Виконайте запит SELECT у таблиці Employee, щоб побачити результати.
SELECT * FROM employee;
ідентифікатор | ім'я | адресу | вік | доб | deptId |
---|---|---|---|---|---|
один | АМІТ КУМАР | МУМБАЙ | 32 | 1988-02-12 | один |
два | РАЙАН ХІЛМАН | Сіетл | 43 | 1977-03-15 | один |
3 | КАВІТА СІНГ | ДЕЛІ | 42 | 1978-02-18 | 4 |
4 | ДЕВІД БЕКХЕМ | ЛОНДОН | 40 | 1980-07-13 | 3 |
5 | ПРІТІ КУМАРІ | ДЕЛІ | 35 | 1985-12-11 | НУЛЬ |
6 | ФРАНКОВИЙ БАЛИНД | НЬЮ-ЙОРК | 35 | 1985-08-25 | 5 |
# 4) Встановити за замовчуванням
Встановити режим за замовчуванням, якщо вказано, призведе до заміни значення за замовчуванням для стовпця (як зазначено під час оголошення стовпця), у випадку будь-якого ВИДАЛЕННЯ в таблиці, на яку посилаються.
Примітка - Згідно Документація MySQL , параметр SET DEFAULT підтримується MySQL Parser, але не механізмами БД, як InnoDB. Це може бути підтримано в майбутньому.
Однак, щоб підтримати таку поведінку, ви можете розглянути можливість використання SET NULL та визначити тригер у таблиці, який може встановити значення за замовчуванням.
Додайте обмеження FOREIGN KEY, використовуючи оператор ALTER TABLE
Багато разів може траплятися, що ми можемо захотіти додати обмеження FOREIGN KEY до існуючої таблиці, яка його не має.
Припустимо, у прикладі Employee and Department ми створили таблицю співробітників без будь-якого обмеження FOREIGN KEY, а пізніше ми хочемо ввести це обмеження. Цього можна досягти за допомогою команди ALTER TABLE.
Спробуємо це зрозуміти на прикладі.
Припустимо, у нас є таблиця Employee із наведеним нижче визначенням для команди CREATE.
CREATE TABLE employee(id INT PRIMARY KEY NOT NULL, name VARCHAR(100), address VARCHAR(100), age INT, dob DATE, deptId INT);
Тут ми маємо стовпець deptId, але не маємо обмеження FOREIGN KEY. У цьому випадку, навіть не маючи таблиці відділу, ми можемо вказати будь-які значення під час вставки записів.
Тепер, припустимо, пізніше у нас є окрема таблиця Департаменту, і ми хочемо пов’язати departmentId там як ІНОЗЕМНИЙ КЛЮЧ із таблицею Employee.
c ++ порівняно з java
ALTER TABLE employee ADD CONSTRAINT depIdFk FOREIGN KEY (deptId) REFERENCES department(departmentId) ON UPDATE CASCADE ON DELETE CASCADE;
Що робити, якщо ця таблиця має наявні дані? Чи можемо ми ALTER таблицю і додати обмеження FOREIGN KEY?
Відповідь так - ми можемо за умови, що існуючі значення в стовпці, на які буде посилатися з іншої таблиці, повинні мати ці значення, що існують у самій батьківській таблиці.
Створіть таблицю Employee без обмеження FOREIGN KEY, додайте деякі дані та спробуйте додати обмеження FOREIGN KEY за допомогою команди ALTER.
CREATE TABLE employee(id INT PRIMARY KEY NOT NULL, name VARCHAR(100), address VARCHAR(100), age INT, dob DATE, deptId INT);
INSERT INTO EMPLOYEE VALUES (1, 'DARREN JOHNSON', 'CHICAGO', 32, '1988-02-12',1); INSERT INTO EMPLOYEE VALUES (2, 'ANITA SHERWIN', 'COLUMBIA', 32, '1988-02-12',10);
Створіть таблицю відділу та додайте ІНОЗЕМНИЙ КЛЮЧ до поля ‘deptId’ таблиці Employee, як показано нижче:
CREATE TABLE department(departmentId INT PRIMARY KEY NOT NULL DEFAULT 1000, departmentName VARCHAR(100));
На даний момент, якщо ми спробуємо додати обмеження FOREIGN KEY,
ALTER TABLE employee ADD CONSTRAINT depIdFk FOREIGN KEY (deptId) REFERENCES department(departmentId) ON UPDATE CASCADE ON DELETE CASCADE;
Тоді ми отримаємо помилку, оскільки таблиця Employee містить деякі дані, але обмеження цілісності посилань не може бути виконане, оскільки таблиця Department ще не має даних.
Error Code: 1452. Cannot add or update a child row: a foreign key constraint fails (`my_sql_foreign_key`.`#sql-63_87`, CONSTRAINT `depIdFk` FOREIGN KEY (`deptId`) REFERENCES `department` (`departmentId`) ON DELETE CASCADE ON UPDATE CASCADE)
Для того, щоб мати обмеження FOREIGN KEY, нам спочатку потрібно буде додати дані до таблиці Департаменту. Давайте вставимо необхідні записи до таблиці кафедри.
INSERT INTO department VALUES (1, 'ENGINEERING'),(10,'ACCOUNTING');
Додайте обмеження FOREIGN KEY ще раз, виконавши той самий оператор ALTER TABLE. Ви помітите, що цього разу команда успішно виконана, і таблиця Employee успішно оновлена, щоб у таблиці Departments було вказано як ІНОЗЕМНИЙ КЛЮЧ.
Відмова від ІНОЗЕМНОГО КЛЮЧОВОГО обмеження
Подібно до додавання обмеження FOREIGN KEY, також можна скинути / видалити існуюче обмеження FOREIGN KEY із таблиці.
Цього можна досягти за допомогою команди ALTER TABLE.
Синтаксис:
ALTER TABLE {childTable} DROP FOREIGN KEY {foreign key constraint name};
Тут ‘childTable’ - це назва таблиці, у якій визначено обмеження FOREIGN KEY, тоді як ‘ім’я обмеження зовнішнього ключа’ - це ім’я / символ, який був використаний для визначення FOREIGN KEY.
Давайте подивимось приклад, використовуючи таблицю Співробітник / Відділ. Щоб скинути обмеження з назвою „depIdFk” із таблиці Employee, скористайтеся наведеною нижче командою:
ALTER TABLE employee DROP FOREIGN KEY depIdFk;
Часті запитання
Q # 1) Як я можу змінити зовнішні ключі в MySQL?
Відповідь: FOREGIN KEY можна додати / видалити за допомогою команди ALTER TABLE.
Для того, щоб змінити або додати новий FOREIGN KEY, ви можете скористатися командою ALTER і визначити FOREIGN KEY та стовпець таблиці посилань, на який буде посилатися з дочірньої таблиці.
Q # 2) Як встановити кілька зовнішніх ключів у MySQL?
Відповідь: Таблиця в MySQL може мати кілька ІНОЗЕМНИХ КЛЮЧІВ, які можуть залежати від однієї і тієї ж батьківської таблиці або різних батьківських таблиць.
Давайте скористаємося таблицею Співробітник / Відділ та додамо ІНОЗЕМНИЙ КЛЮЧ для назви відділу, а також Ідентифікатор відділу в таблиці Співробітник.
Зверніться до операторів CREATE обох таблиць, як показано нижче
CREATE TABLE department(departmentId INT PRIMARY KEY NOT NULL DEFAULT 1000, departmentName VARCHAR(100) UNIQUE NOT NULL); ----xxxxx------xxxxx------xxxxx-------xxxxx------xxxxx CREATE TABLE employee(id INT PRIMARY KEY NOT NULL, name VARCHAR(100), address VARCHAR(100), age INT, dob DATE, deptId INT, depName VARCHAR(100), CONSTRAINT depIdFk FOREIGN KEY (deptId) REFERENCES department(departmentId) ON UPDATE CASCADE ON DELETE CASCADE, CONSTRAINT depNameFk FOREIGN KEY (depName) REFERENCES department(departmentName) ON UPDATE CASCADE ON DELETE CASCADE);
Запитання №3) Як вимкнути обмеження зовнішнього ключа в MySQL?
Відповідь: Обмеження FOREIGN KEY, як правило, потрібні, коли хтось намагається скоротити існуючу таблицю, на яку посилаються. Для цього ви можете скористатися наведеною нижче командою:
SET FOREIGN_KEY_CHECKS=0;
Це встановить змінну сеансу та тимчасово вимкне FOREIGN_KEY_CHECKS. Після цього налаштування ви можете продовжувати виконувати видалення / обрізання, що в іншому випадку було б неможливим.
для чого використовується c ++
Але будь ласка, переконайтеся, що це привілей адміністратора і повинен використовуватися розумно.
Q # 4) Як знайти посилання на зовнішній ключ для таблиці в MySQL?
Відповідь: Для того, щоб перерахувати всі наявні обмеження FOREIGN KEY, ви можете скористатися таблицею «INNODB_FOREIGN_COLS» у розділі «INFORMATION_SCHEMA».
Просто запустіть команду нижче, щоб отримати всі декларації FOREIGN KEY, що існують для даного екземпляра сервера MySQL.
Посвідчення особи | FOR_COL_NAME | REF_COL_NAME | POS |
---|---|---|---|
my_sql_foreign_key / depIdFk | deptId | відділ | один |
Q # 5) Чи має посилання на стовпець як ІНОЗЕМНИЙ КЛЮЧ бути первинним ключем у таблиці, на яку посилаються?
Відповідь: За визначенням ІНОЗЕМНОГО КЛЮЧА, потрібно було б, щоб стовпець, на який позначається ЗОВНІШНІЙ КЛЮЧ, повинен бути ПЕРВИННИМ КЛЮЧОМ у таблиці, де він посилається.
Однак у новіших версіях MySQL та в двигуні баз даних InnoDB ви також можете посилатися на стовпець із ІНОЗЕМНИМ КЛЮЧОМ, який має УНІКАЛЬНЕ обмеження і, можливо, не обов'язково ОСНОВНИЙ КЛЮЧ.
Q # 6) Чи створює ІНОЗЕМНИЙ КЛЮЧ ІНДЕКС у MySQL?
Відповідь: Як для первинного ключа, так і для унікального обмеження, MySQL автоматично створює INDEX для таких стовпців.
Оскільки ми вже знаємо, що посилання FOREIGN KEY можна застосовувати лише до будь-якого стовпця, що є Первинними ключами, або стовпців, які мають Унікальні значення, отже, усі стовпці, які називаються FOREIGN KEY, дійсно мають створений для них індекс.
Для того, щоб переглянути індекс у таблиці, скористайтеся наведеною нижче командою:
SHOW INDEX from {dbName.tableName};
Отже, для нашого прикладу «Співробітник / Департамент» ми додали відділ «Співробітник» як ІНОЗЕМНИЙ КЛЮЧ із таблиці Департаменту.
Давайте подивимося створені індекси в таблицях Співробітник та Відділ.
USE my_sql_foreign_key; SHOW INDEX from employee;
Таблиця | Non_unique | Ім'я ключа | Seq_in_index | Ім'я стовпця | Колація | Кардинальність | Підчастина | Упакований | Нуль | Тип_індексу |
---|---|---|---|---|---|---|---|---|---|---|
працівник | 0 | ПЕРВИННИЙ | один | ідентифікатор | ДО | 0 | НУЛЬ | НУЛЬ | BTREE | |
працівник | один | depIdFk | один | deptId | ДО | 0 | НУЛЬ | НУЛЬ | ТАК | BTREE |
Ви можете побачити 2 індекси - один є основним ключем для таблиці Employee, а інший - для ІНОЗЕМНОГО КЛЮЧА, на який посилається таблиця Департаменту.
SHOW INDEX from department;
Таблиця | Non_unique | Ім'я ключа | Seq_in_index | Ім'я стовпця | Колація | Кардинальність | Підчастина | Упакований | Нуль | Тип_індексу |
---|---|---|---|---|---|---|---|---|---|---|
кафедра | 0 | ПЕРВИННИЙ | один | відділ | ДО | 0 | НУЛЬ | НУЛЬ | BTREE |
Тут ви можете бачити, що для таблиці відділу ми маємо лише 1 індекс для первинного ключа (який у таблиці службовців згадується як ЗОВНІШНИЙ КЛЮЧ).
Q # 7) Чи може ІНОЗЕМНИЙ КЛЮЧ бути НУЛЬНИМ у MySQL?
Відповідь: Так, цілком нормально мати NULL для стовпця, який має ЗОВНІШНІЙ КЛЮЧ від іншої таблиці. Це також натякає на те, що NULL не є реальним значенням, отже, воно не відповідає / порівнюється зі значеннями в батьківській таблиці.
Висновок
У цьому підручнику ми дізналися про різні концепції, пов’язані з використанням ІНОЗЕМНИХ КЛЮЧІВ у базах даних MySQL.
FOREIGN KEY виправляє оновлення та видаляє з відповідними обмеженнями, але іноді наявність багатьох таких зв’язків може зробити весь процес вставки та / або видалення досить громіздким.
Ми дізналися, як створити ІНОЗЕМНІ КЛЮЧІ та як ми можемо оновити та видалити існуючий ІНОЗЕМНИЙ КЛЮЧ із дочірньої таблиці. Ми також дізналися про різні дії посилальної цілісності та про те, як ми можемо досягти різної поведінки, використовуючи різні доступні варіанти, такі як КАСКАД, НІЯКИХ ДІЙ, ВСТАНОВИТИ НУЛЬ тощо.
Рекомендована література
- MySQL Створення таблиці Підручник з прикладами
- MySQL Insert Into Table - Вставте синтаксис заяви та приклади
- Підручник із створення перегляду MySQL із прикладами коду
- Функції MySQL CONCAT та GROUP_CONCAT із прикладами
- Підручник з транзакцій MySQL із прикладами програмування
- MySQL UNION - Всебічний посібник із прикладами Union
- Як завантажити MySQL для Windows та Mac
- Різниця між SQL Vs MySQL Vs SQL Server (з прикладами)