SQL PRIMARY KEY: Создание и добавление в существующую таблицу

⚡ Умное резюме

Первичный ключ в SQL Server — это столбец или набор столбцов, значения которых однозначно идентифицируют каждую строку в таблице. Каждая таблица содержит один первичный ключ, и значения в её столбцах никогда не должны быть равны NULL.

  • 🔑 Что такое первичный ключ: Первичный ключ — это один или несколько столбцов, значения которых уникальны и идентифицируют каждую строку в таблице.
  • ???? Основные правила: В таблице допускается только один первичный ключ, каждое значение должно быть уникальным, и ни один столбец ключа не может содержать значение NULL.
  • 🇧🇷 Два способа создания: В конструкторе таблиц SQL Server Management Studio и в операторе T-SQL CREATE TABLE определяется первичный ключ.
  • 🧱 Пункт об ограничении: Внутри команды CREATE TABLE предложение CONSTRAINT … PRIMARY KEY задает имя ключа и перечисляет его столбец или столбцы.
  • ➕ Добавить в существующую таблицу: Команда ALTER TABLE … ADD CONSTRAINT добавляет первичный ключ к столбцам, для которых не заданы значения NULL, в существующей таблице.
  • 🧩 Составной ключ: Первичный ключ может объединять до 16 столбцов, образуя составной ключ, уникальный для всего набора данных.

Первичный ключ в SQL Server: как создать и добавить элемент в существующую таблицу.

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

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

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

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

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

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

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

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

Давайте подробно рассмотрим каждый метод.

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

Шаг 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');

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

Сообщение об ошибке: отклонено повторяющееся значение первичного ключа для 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.

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

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

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

Часто задаваемые вопросы (FAQ)

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

Подведем итог этой публикации следующим образом: