SQL Primary Keys

В этом учебном материале вы узнаете, как создать и удалить первичный ключ в SQL, с синтаксисом и примерами.

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

В SQL первичный ключ - это отдельное поле или комбинация полей, которые однозначно определяют запись. Ни одно из полей, являющихся частью первичного ключа, не может содержать значение NULL. Таблица может иметь только один первичный ключ.
Вы можете использовать оператор CREATE TABLE или оператор ALTER TABLE для создания первичного ключа в SQL.

Создать первичный ключ (оператор CREATE TABLE)

Первичный ключ может быть создан при выполнении оператора CREATE TABLE в SQL.

Синтаксис

Синтаксис для создания первичного ключа с помощью оператора CREATE TABLE в SQL.

CREATE TABLE table_name
(
column1 datatype [ NULL | NOT NULL ],
column2 datatype [ NULL | NOT NULL ],
...

CONSTRAINT constraint_name PRIMARY KEY (pk_col1, pk_col2, ... pk_col_n)
);

Или

CREATE TABLE table_name
(
column1 datatype CONSTRAINT constraint_name PRIMARY KEY,
column2 datatype [ NULL | NOT NULL ],
...
);
table_name
Имя таблицы, которую вы хотите создать
column1, column2
Столбцы, которые вы хотите создать в таблице
constraint_name
Название первичного ключа
pk_col1, pk_col2, ... pk_col_n
Столбцы, составляющие первичный ключ

Пример

Давайте посмотрим, как создать первичный ключ с помощью оператора CREATE TABLE в SQL. Мы начнем с очень простого, где наш первичный ключ состоит всего из одного столбца.
Например:

В этом примере мы создали первичный ключ для таблицы suppliers, который называется sources_pk. Он состоит только из одного столбца - столбца supplier_id.
Мы могли бы использовать альтернативный синтаксис и создать этот же первичный ключ следующим образом.

Оба эти синтаксиса действительны при создании первичного ключа только с одним полем.
Если вы создаете первичный ключ, который состоит из 2-х или более столбцов, вы ограничены использованием только первого синтаксиса, в котором первичный ключ определен в конце оператора CREATE TABLE.
Например:

Этот пример создает первичный ключ с именем contacts_pk, который состоит из комбинации столбцов last_name и first_name. Поэтому каждая комбинация last_name и first_name должна быть уникальной в таблице contacts.

Создать первичный ключ (оператор ALTER TABLE)

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

Синтаксис

Синтаксис для создания первичного ключа с помощью оператора ALTER TABLE в SQL.

ALTER TABLE table_name
ADD CONSTRAINT constraint_name
PRIMARY KEY (column1, column2, ... column_n);
table_name
Имя таблицы для изменения. Это таблица, к которой вы хотите добавить первичный ключ
constraint_name
Название первичного ключа
column1, column2, ... column_n
Столбцы, составляющие первичный ключ

Пример

Давайте посмотрим, как создать первичный ключ с помощью оператора ALTER TABLE в SQL. Скажем так, у нас уже есть таблица suppliers, созданная в нашей базе данных. Мы могли бы добавить первичный ключ к таблице suppliers с помощью следующего оператора ALTER TABLE.

В этом примере мы создали первичный ключ для существующей таблицы suppliers, который называется sources_pk. Он состоит из столбца supplier_id.
Мы также могли бы создать первичный ключ с более чем одним полем, как показано ниже.

Этот пример создал бы первичный ключ с именем supplier_pk, который состоит из комбинации столбцов supplier_id и supplier_name.

Удалить первичный ключ

В SQL вы можете удалить первичный ключ, используя оператор ALTER TABLE.

Синтаксис

Синтаксис для удаления первичного ключа в SQL.

ALTER TABLE table_name
DROP PRIMARY KEY;
table_name
Имя таблицы для изменения. Это таблица, первичный ключ которой вы хотите удалить

Пример

Давайте посмотрим, как удалять первичный ключ с помощью оператора ALTER TABLE в SQL.

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