ПЕРВИННИЙ КЛЮЧ SQL: Створення та додавання до існуючої таблиці

⚡ Розумний підсумок

Первинний ключ у SQL Server – це стовпець або набір стовпців, значення яких однозначно ідентифікують кожен рядок у таблиці. Кожна таблиця містить один первинний ключ, а її стовпці ніколи не повинні мати значення NULL.

  • 🔑 Що таке первинний ключ: Первинний ключ — це один або декілька стовпців, значення яких унікальні та ідентифікують кожен рядок у таблиці.
  • 🚫 Основні правила: Таблиця дозволяє лише один первинний ключ, кожне значення має бути унікальним, і жоден ключовий стовпець не може містити NULL.
  • 🖱️ Два способи створення: Конструктор таблиць SQL Server Management Studio та інструкція T-SQL CREATE TABLE визначають первинний ключ.
  • 🧱 Речення CONSTRAINT: Усередині CREATE TABLE, речення CONSTRAINT … PRIMARY KEY вказує назву ключа та перелічує його стовпець або стовпці.
  • Додати до існуючої таблиці: ALTER TABLE … ADD CONSTRAINT додає первинний ключ до стовпців NOT NULL існуючої таблиці.
  • 🧩 Складений ключ: Первинний ключ може об'єднувати до 16 стовпців, утворюючи складений ключ, унікальний для всього набору.

ПЕРВИННИЙ КЛЮЧ SQL Server: Як створити та додати до існуючої таблиці

Що таке первинний ключ у SQL?

Первинний ключ у SQL Server — це поле або комбінація полів, яка однозначно ідентифікує запис. Це стовпець або набір стовпців, у яких кожне значення унікальне. Іншими словами, жодні два рядки не можуть мати однакове значення первинного ключа.

Правила для первинного ключа

  • Кожна таблиця може мати лише один первинний ключ.
  • Усі значення унікальні, а значення первинного ключа може однозначно ідентифікувати кожен рядок.
  • Система не дозволить вставити рядок, значення первинного ключа якого вже існує в таблиці.
  • Первинний ключ не може бути NULL.

На діаграмі нижче підсумовано всі вищезазначені пункти щодо первинного ключа SQL.

Діаграма, що підсумовує правила первинних ключів SQL: унікальні значення, по одному на таблицю, не NULL

Як створити первинний ключ у SQL Server

Ви можете створити первинний ключ двома способами:

  • SQL Server Management Studio
  • T-SQL: створення первинного ключа під час створення нової таблиці

Давайте детально вивчимо кожен метод.

SQL Server Management Studio

Крок 1) Клацніть правою кнопкою миші на назві таблиці та виберіть Дизайн.

Клацніть правою кнопкою миші на таблиці та виберіть Конструктор у SQL Server Management Studio

Крок 2) Клацніть правою кнопкою миші на назві стовпця та виберіть Встановити первинний ключ.

Клацніть правою кнопкою миші на стовпці та виберіть «Встановити первинний ключ у конструкторі таблиць».

Результат: Course_Id тепер є первинним ключем, що відображається значком ключа поруч зі стовпцем.

Стовпець Course_Id позначено піктограмою ключа як первинний ключ

T-SQL: створення первинного ключа під час створення нової таблиці

Нижче наведено синтаксис для створити таблицю з первинним ключем з T-SQL.

Синтаксис:

CREATE TABLE <Table_Name>
(
Column1 datatype,
Column2 datatype,CONSTRAINT <Name> PRIMARY KEY (Column name)
.
);

Тут CONSTRAINT іменує ключ, PRIMARY KEY позначає стовпець, який має залишатися унікальним, і кожен стовпець також потребує тип даних.

Давайте створимо таблицю з одним стовпцем як первинним ключем SQL.

Запит:

CREATE TABLE COURSE_TSQL_PK 
(Course_ID Int not Null,
 Course_name Varchar(20)
 CONSTRAINT PK PRIMARY KEY (Course_ID)	
)

Крок 1) Запустіть запит, натиснувши Виконати.

Виконання запиту CREATE TABLE, який визначає первинний ключ Course_ID

Результат: Course_Id тепер є первинним ключем у таблиці COURSE_TSQL_PK.

Таблиця COURSE_TSQL_PK, у якій Course_ID встановлено як первинний ключ

Приклад: Давайте перевіримо, чи дозволяється вводити кілька записів з однаковим ідентифікатором курсу.

Крок 1) Вставте чотири рядки з різними значеннями Course_ID.

Insert into COURSE_TSQL_PK values (1,'SQL');
Insert into COURSE_TSQL_PK values (2,'Python');
Insert into COURSE_TSQL_PK values (3,'SQL');
Insert into COURSE_TSQL_PK values (4,'C');

Крок 2) Перевірте, чи всі дані було успішно вставлено, виконавши запит SELECT.

Результат запиту SELECT показує чотири рядки з різними значеннями Course_ID

Примітка.: Ви можете вставляти дублікати значень у стовпець, який не є первинним ключем.

Крок 3) Тепер спробуємо вставити новий запис з існуючим Course_ID, який є первинним ключем.

Insert into COURSE_TSQL_PK values (4,'JAVA');

Результат: Система не дозволяє вставити нове значення, оскільки 4 вже існує у стовпці Course_ID, який є первинним ключем.

Повідомлення про помилку, що відхиляє дублікат значення первинного ключа для Course_ID

Як додати первинний ключ до існуючої таблиці в SQL?

Тепер ми розглянемо, як додати первинний ключ до існуючої таблиці в SQL.

Ви можете використовувати оператор ALTER для створення первинного ключа. Однак первинний ключ можна створити лише для стовпців, визначених як NOT NULL. Ви не можете створити первинний ключ для стовпця, який дозволяє значення NULL; якщо стовпець наразі дозволяє значення NULL, спочатку потрібно змінити його на NOT NULL або видалити та повторно створити таблицю.

Ось синтаксис:

ALTER TABLE tableName
ADD CONSTRAINT constraintName PRIMARY KEY (column_1, column_2, ... column_n);

Наприклад:

ALTER TABLE students
ADD CONSTRAINT students_pk PRIMARY KEY (admission);

Оператор ALTER TABLE, що додає обмеження первинного ключа з назвою students_pk

Ми додали обмеження первинного ключа до вже існуючої таблиці. Обмеження додано до стовпця прийому та присвоєно назву students_pk.

Цікаві факти!

  • Первинний ключ може бути комбінацією кількох стовпців. Ця комбінація називається складеним первинним ключем.
  • Первинний ключ може мати максимум 16 стовпців.

Поширені запитання

Обидва забезпечують унікальність. Таблиця дозволяє лише один первинний ключ, а її стовпці не можуть бути NULL. Таблиця може містити кілька унікальних ключів, а унікальний стовпець може приймати одне значення NULL. Первинні ключі зазвичай визначають ідентифікатор головного рядка.

Так. SQL Server автоматично створює унікальний індекс для забезпечення первинного ключа. За замовчуванням цей індекс кластеризований, що фізично впорядковує рядки. Ви можете вказати NONCLUSTERED, якщо інший стовпець вже містить кластеризований індекс.

Складений первинний ключ поєднує два або більше стовпців, тому їхні значення є унікальними разом, навіть якщо кожен стовпець повторюється окремо. SQL Server дозволяє первинному ключу охоплювати до 16 стовпців, а загальна довжина ключа становить 900 байт.

Первинний ключ однозначно ідентифікує кожен рядок у власній таблиці та ніколи не допускає NULL. зовнішній ключ зберігає значення, які повинні відповідати первинному або унікальному ключу в іншій таблиці, створюючи зв'язок між двома таблицями.

Виконайте команду ALTER TABLE table_name DROP CONSTRAINT constraint_name. Ви повинні знати назву обмеження, яку можна знайти у sys.key_constraints. Видалитиping Первинний ключ також видаляє свій допоміжний унікальний індекс та будь-який зовнішній ключ, який на нього посилається.

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

Так. Копілот GitHub може писати оператори CREATE TABLE та обмеження PRIMARY KEY з підказок природною мовою та пропонувати відповідні стовпці ключів. Завжди перевіряйте згенеровані ключі, типи даних та можливість використання значень NULL, а потім тестуйте скрипт перед його запуском у продакшені.

Інструменти штучного інтелекту та машинного навчання аналізують вибіркові дані та шаблони запитів, щоб рекомендувати, який стовпець або стовпці мають бути первинним ключем, позначати кандидатські ключі, що містять дублікати або значення NULL, та пропонувати сурогатні ключі. Розробник підтверджує кожну рекомендацію перед її застосуванням.

Підсумуйте цей пост за допомогою: