Database
 sql >> база данни >  >> RDS >> Database

Как да създадете таблица с външен ключ в SQL

Проблем:

Искате да създадете външен ключ за таблица в база данни.

Пример:

Бихме искали да създадем таблица с име student който съдържа външен ключ, който препраща към id колона в таблицата city .

Решение 1 (нова таблица):

СЪЗДАВАНЕ НА ТАБЛИЦА ученик (id INT ПРАВИЛЕН КЛЮЧ, първо_име VARCHAR(100) NOT NULL, фамилия VARCHAR(100) NOT NULL,city_id INT ВЪНШНИ КЛЮЧИ РЕФЕРЕНЦИИ city(id));

Дискусия:

За да създадете нова таблица, съдържаща колона с външен ключ, която препраща към друга таблица, използвайте ключовата дума FOREIGN KEY REFERENCES в края на определението на тази колона. Следвайте това с името на посочената таблица и името на реферираната колона в скоби.

В нашия пример създаваме таблицата student с помощта на CREATE TABLE клауза. Изброяваме имената на колоните и поставяме съответните им типове данни в скоби. Колоната city_id е външният ключ в тази таблица и показва стойността на идентификатора, съхранен в колоната id в таблицата city . Пишем FOREIGN KEY REFERENCES в края на дефиницията на тази колона и я последвайте с посочената таблица и колона:city(id) .

Имайте предвид, че можете да създадете повече от един външен ключ за таблица.

Решение 2 (нова таблица):

СЪЗДАВАНЕ НА ТАБЛИЦА ученик (id INT ПРАВИЛЕН КЛЮЧ, първо_име VARCHAR(100) НЕ NULL, фамилия VARCHAR(100) НЕ NULL,city_id INT,ЧУЖЕН КЛЮЧ (city_id) РЕФЕРЕНЦИИ city(id));

Дискусия:

Друг начин да дефинирате външен ключ по време на създаване на таблица е да използвате FOREIGN KEY REFERENCES клауза в края на дефинициите на колоните. В този случай след FOREIGN KEY клауза, ние обозначаваме колоната за външен ключ. Следва REFERENCES клауза заедно с името на посочената таблица и колона.

Можете да създадете външни ключове в повече от една колона, както е показано по-долу:

Решение 3 (нова таблица):

CREATE TABLE студент (id INT PRIMARY KEY,first_name VARCHAR(100) NOT NULL,last_name VARCHAR(100) NOT NULL,score_id INT,subject_id INT, CONSTRAINT fk_student_score_subject_idscore_subject_ids score FOREIGN_ubject score FOREIGN_id_результат FOREIGN_ubject_id_резултат FOREIGN_ubject_id_ );

В този пример ограничението fk_student_score_subject_id е външен ключ, състоящ се от две колони:score_id и subject_id . Тези две колони с външни ключове се отнасят до две колони в таблицата score_subjectscore_id и subject_id .

Ето още един пример:

Решение 4 (нова таблица):

СЪЗДАВАНЕ НА ТАБЛИЦА ученик (id INT ПРАВИЛЕН КЛЮЧ, първо_име VARCHAR(100) НЕ NULL, фамилия VARCHAR(100) NOT NULL,city_id INT, ОГРАНИЧЕНИЕ fk_student_city_id FOREIGN KEY (city_id) REFERENCES city(id)); 

Дискусия:

В този код отново имаме CONSTRAINT клауза с името на това ограничение. Използвайте имена, които са лесни за четене и разбиране. В нашия пример използваме името fk_student_city_id , което показва съответната таблица и колона. След това пишем FOREIGN KEY и добавете (в скоби) името на колоната, която става външен ключ. Тогава имаме REFERENCES клауза, последвана от името на посочената таблица и колона (тук:id ).

Решение 5 (съществуваща таблица):

ПРОМЕНЯТ ТАБЛИЦА студент ДОБАВЯНЕ НА ВЪНШЕН КЛЮЧ (city_id) СПРАВКИ city(id);

Дискусия:

Възможно е също да добавите нов външен ключ към съществуваща таблица. Тук таблицата се променя с помощта на ALTER TABLE клауза. Името на таблицата (в нашия пример student ) се поставя след ALTER TABLE ключова дума. След това ADD FOREIGN KEY клаузата е последвана от името на колоната, която ще се използва като външен ключ. Тогава имаме REFERENCES clause с името на посочената таблица и името на колоната с първичен ключ в скоби.

Имайте предвид, че таблицата, която променяте, трябва да съществува, преди тази команда да бъде изпълнена.

Решение 6 (съществуваща таблица, ограничение на външния ключ):

ПРОМЕНЯ ТАБЛИЦА ученик ДОБАВЯНЕ НА ОГРАНИЧЕНИЕ fk_student_city_id ВЪНШЕН КЛЮЧ (city_id) РЕФЕРЕНЦИИ city(id)

Дискусия:

Използвайте заявка като тази, ако искате да наименувате колона с външен ключ като ограничение за съществуваща таблица. Тук ограничението на външния ключ се нарича fk_student_city_id . Ако не посочите името на ограничението, базата данни генерира име на ограничение по подразбиране (което ще варира според базата данни).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да създадете обект на ResultSet с възможност за превъртане и актуализация в JDBC

  2. Какво представляват SQL операторите и как работят?

  3. Интегриран модел на транспортни данни

  4. Проектиране на база данни за многоезични приложения

  5. Брой на SQL