ПЕРВИЧНЫЙ КЛЮЧ SQL: как создать и добавить в существующую таблицу

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

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

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

  • Каждая таблица может иметь только один первичный ключ SQL.
  • Все значения уникальны, и значение первичного ключа SQL может однозначно идентифицировать каждую строку.
  • Система не позволит вставить строку с первичным ключом SQL Server, которая уже существует в таблице.
  • Первичный ключ не может иметь значение NULL.

На диаграмме ниже суммированы все вышеперечисленные пункты для первичного ключа SQL.

Правила для первичного ключа в SQL
Как работает SQL с первичным ключом

Как создать первичный ключ в SQL Server

Мы можем создать первичный ключ в 2 способов:

1. Студия управления SQL Server

2. T-SQL: создание первичной таблицы при создании новой таблицы

Студия управления SQL Server

Шаг 1) Щелкните правой кнопкой мыши имя таблицы. Нажмите на Дизайн.

Создать первичный ключ в SQL Server

Шаг 2) Щелкните правой кнопкой мыши имя столбца. Нажмите на 'Установить первичный ключ'

Создать первичный ключ в SQL Server

Результат: Course_Id теперь является Основной ключ.

Создать первичный ключ в SQL Server

T-SQL: создайте первичный ключ при создании новой таблицы.

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

Синтаксис:

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

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

Запрос:

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

Шаг 1) Запустите запрос, нажав на 'Выполнять.'

Создайте первичный ключ при создании новой таблицы.

Результат: Course_Id теперь является Основной ключ.

Создайте первичный ключ при создании новой таблицы.

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

Шаг 1) Вставьте 4 строк с другой 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.

Создайте первичный ключ при создании новой таблицы.

Внимание: Мы можем вставлять повторяющиеся значения в непервичный ключ.

Шаг 3) Теперь давайте попробуем вставить новые записи с существующим Course_ID, который является первичным ключом.

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

Результат: Система не позволяет вставлять новое значение, так как 4 — это столбец Course_ID, который является первичным ключом.

Создайте первичный ключ при создании новой таблицы.

Как добавить первичный ключ к существующей таблице в SQL?

Теперь мы увидим, как добавить первичный ключ в существующую таблицу в SQL:

Вы можете использовать оператор ALTER для создания первичного ключа. Однако первичный ключ можно создать только для столбцов, которые определены как NOT NULL. Вы не можете создать первичный ключ для столбца, который допускает значения 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);

Добавить первичный ключ в существующую таблицу в SQL

Мы добавили ограничение первичного ключа в уже существующую таблицу. Ограничение было добавлено в столбец поступления, и ему присвоено имя Student_pk.

Интересные факты!

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

Итоги

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