SQL Primary Keys
В этом учебном материале вы узнаете, как создать и удалить первичный ключ в SQL, с синтаксисом и примерами.
Что такое первичный ключ в SQL?
В SQL первичный ключ — это отдельное поле или комбинация полей, которые однозначно определяют запись. Ни одно из полей, являющихся частью первичного ключа, не может содержать значение NULL. Таблица может иметь только один первичный ключ.
Вы можете использовать оператор CREATE TABLE или оператор ALTER TABLE для создания первичного ключа в SQL.
Создать первичный ключ (оператор CREATE TABLE)
Первичный ключ может быть создан при выполнении оператора CREATE TABLE в SQL.
Синтаксис
Синтаксис для создания первичного ключа с помощью оператора CREATE TABLE в SQL.
CONSTRAINT constraint_name PRIMARY KEY (pk_col1, pk_col2, . pk_col_n)
);
Пример
Давайте посмотрим, как создать первичный ключ с помощью оператора CREATE TABLE в SQL. Мы начнем с очень простого, где наш первичный ключ состоит всего из одного столбца.
Например:
Как удалить первичный ключ в базе данных
Если таблица уже была ранее создана, и ее необходимо изменить, то для этого применяется команда ALTER TABLE . Ее сокращенный формальный синтаксис:
Вообще данная команда поддерживает гораздо больше опций и возможностей. Все их можно посмотреть в документации. Рассмотрим лишь основные сценарии, с которыми мы можем столкнуться.
Добавление нового столбца
Добавим в таблицу Customers новый столбец Address:
В данном случае столбец Address имеет тип VARCHAR и для него определен атрибут NULL.
Удаление столбца
Удалим столбец Address из таблицы Customers:
Изменение значения по умолчанию
Установим в таблице Customers для столбца Age значение по умолчанию 22:
Изменение типа столбца
Изменим в таблице Customers тип данных у столбца FirstName на CHAR(100) и установим для него атрибут NULL :
Добавление и удаление внешнего ключа
Пусть изначально в базе данных будут добавлены две таблицы, никак не связанные:
Добавим ограничение внешнего ключа к столбцу CustomerId таблицы Orders:
При добавлении ограничений мы можем указать для них имя, используя оператор CONSTRAINT , после которого указывается имя ограничения:
В данном случае ограничение внешнего ключа называется orders_customers_fk. Затем по этому имени мы можем удалить ограничение:
Remove Primary Key in MySQL
I have the following table schema which maps user_customers to permissions on a live MySQL database:
I would like to remove the primary keys for user_customer_id and permission_id and retain the primary key for id.
When I run the command:
I get the following error:
How can I drop a column’s primary key?
12 Answers 12
Without an index, maintaining an autoincrement column becomes too expensive, that’s why MySQL requires an autoincrement column to be a leftmost part of an index.
You should remove the autoincrement property before dropping the key:
Note that you have a composite PRIMARY KEY which covers all three columns and id is not guaranteed to be unique.
If it happens to be unique, you can make it to be a PRIMARY KEY and AUTO_INCREMENT again:
You will also not lose the auto-increment and have to re-add it which could have side-effects.
I believe @Quassnoi has answered your direct question.
Just a side note, maybe this is just some awkward wording on your part, but you seem to be under the impression that you have three primary keys, one on each field.
This is not the case. By definition, you can only have one primary key. What you have here is a primary key that is a composite of three fields.
Thus, you cannot "drop the primary key on a column", you can drop the primary key, or not drop the primary key.
If you want a primary key that only includes one column, you can drop the existing primary key on 3 columns and create a new primary key on 1 column.
Первичный ключ (PRIMARY KEY) в SQL
В SQL ограничение PRIMARY KEY используется для уникальной идентификации строк.
Ограничение PRIMARY KEY — это просто комбинация ограничений NOT NULL и UNIQUE. Это означает, что столбец не может содержать повторяющиеся значения, а также значения NULL .
Синтаксис создания первичного ключа:
Здесь столбец college_id имеет первичный ключ. Это означает, что значения этого столбца должны быть уникальными, а также не содержать значения NULL .
Примечание: Синтаксис создания первичного ключа может отличаться в некоторых СУБД.
Ошибка первичного ключа
Если мы попытаемся вставить нулевые или повторяющиеся значения в столбец с первичным ключом, мы получим ошибку. Например: