Ограничение первичного ключа в SQL
Ограничение первичного ключа представляет собой ключ, содержащий один или несколько столбцов, которые помогут однозначно идентифицировать каждый кортеж / запись в таблице.
Характеристики :
- Повторяющиеся значения не допускаются, т.е. столбец, назначенный в качестве первичного ключа, должен иметь только УНИКАЛЬНЫЕ значения.
- В столбце с первичным ключом НЕТ значений NULL. Следовательно, в столбце с первичным ключом есть обязательное значение.
- Для каждой таблицы существует только один первичный ключ, хотя первичный ключ может иметь несколько столбцов.
- Невозможно вставить новую строку с уже существующим первичным ключом.
- Классифицируется как: a) Простой первичный ключ с одним столбцом 2) Составной первичный ключ с несколькими столбцами.
- Определяется в операторе Create table / Alter table.
Первичный ключ может быть создан в таблице с использованием ограничения PRIMARY KEY. Его можно создать на двух уровнях.
- Столбец
- Таблица.
ПЕРВИЧНЫЙ КЛЮЧ SQL на уровне столбца:
Если первичный ключ содержит только один столбец, он должен быть определен на уровне столбца. Следующий код создает первичный ключ «ID» в таблице людей.
Синтаксис:
Создать человека в таблице ( Id int NOT NULL PRIMARY KEY, Имя varchar2 (20), Адрес varchar2 (50) );
Здесь NOT NULL добавлен, чтобы убедиться, что ID должен иметь уникальные значения. SQL автоматически установит нулевые значения для первичного ключа, если он не указан.
Пример-1:
Чтобы проверить работу первичного ключа:
Вставить в значения Person (1, 'Ajay', 'Mumbai');
Выход :
Создана 1 строка
Пример-2:
Посмотрим, вставите ли вы снова те же значения.
Вставить в значения Person (1, 'Ajay', 'Mumbai');
Выход :
Ошибка в строке 1: нарушение уникального ограничения
Поскольку мы вставляем повторяющиеся значения, будет выдана ошибка, поскольку первичный ключ «Id» может содержать только уникальные значения.
Пример-3:
Вставить в значения Person ('', 'Ajay', 'Mumbai');
Выход :
Ошибка в строке 1: невозможно вставить Null в <"user". "Person". "ID">
Первичный ключ не может содержать нулевые значения, поэтому это тоже вызовет ошибку.
ПЕРВИЧНЫЙ КЛЮЧ SQL на уровне таблицы:
Если первичный ключ содержит несколько столбцов, он должен быть указан на уровне таблицы.
Синтаксис:
Создать человека в таблице (Id int NOT NULL, Имя varchar2 (20), Адрес varchar2 (50), ПЕРВИЧНЫЙ КЛЮЧ (идентификатор, имя) );
Здесь у вас есть только один первичный ключ в таблице, но он состоит из нескольких столбцов (идентификатор, имя). Однако допустимы следующие действия.
Вставить в значения Person (1, 'Ajay', 'Mumbai'); Вставить в значения Person (2, 'Ajay', 'Mumbai');
Поскольку первичный ключ составляет несколько столбцов, обе строки считаются разными. SQL разрешает дублировать любое из двух значений, но комбинация должна быть уникальной.
ПЕРВИЧНЫЙ КЛЮЧ SQL с ALTER TABLE:
В большинстве случаев первичный ключ определяется во время создания таблицы, но иногда первичный ключ может не быть создан в уже существующей таблице. Однако мы можем добавить первичный ключ, используя оператор Alter.
Синтаксис:
Изменить таблицу Человек добавить первичный ключ (Id);
Чтобы добавить первичный ключ в несколько столбцов, используйте следующий запрос.
Изменить таблицу Человек добавить первичный ключ (идентификатор, имя);
Необходимо, чтобы столбец, добавленный в качестве первичного ключа, ДОЛЖЕН содержать уникальные значения, иначе он будет нарушен. Идентификатор нельзя сделать первичным ключом, если он содержит повторяющиеся значения. Это нарушает основное правило первичного ключа. Изменение таблицы для добавления идентификатора в качестве первичного ключа, который может содержать повторяющиеся значения, приводит к ошибке.
Выход :
Ошибка в строке 1: невозможно проверить - нарушен первичный ключ
Кроме того, столбец, добавленный в качестве первичного ключа с помощью оператора alter, не должен иметь нулевых значений. Изменение таблицы для добавления идентификатора в качестве первичного ключа, который может содержать нулевые значения, приводит к ошибке.
Выход :
Ошибка в строке 1: столбец содержит значения NULL; не может измениться на NOT NULL
УДАЛИТЬ ОГРАНИЧЕНИЕ ОСНОВНОГО КЛЮЧА:
Чтобы удалить ограничение первичного ключа для таблицы, используйте данный SQL следующим образом.
ALTER table Person DROP PRIMARY KEY;