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

⚡ Умно обобщение

Първичният ключ в SQL Server е колона или набор от колони, чиито стойности уникално идентифицират всеки ред в таблица. Всяка таблица съдържа един първичен ключ и нейните колони никога не трябва да са NULL.

  • 🔑 Какво е първичен ключ: Първичният ключ е една или повече колони, чиито стойности са уникални и идентифицират всеки ред в таблица.
  • 🚫 Основни правила: Таблицата позволява само един първичен ключ, всяка стойност трябва да е уникална и никоя ключова колона не може да съдържа NULL.
  • 🖱️ Два метода за създаване: SQL Server Management Studio Table Designer и T-SQL CREATE TABLE операторът дефинират първичен ключ.
  • 🧱 Клауза за ОГРАНИЧЕНИЕ: Вътре в CREATE TABLE, клаузата CONSTRAINT … PRIMARY KEY назовава ключа и изброява неговата колона или колони.
  • Добавяне към съществуваща таблица: ALTER TABLE … ADD CONSTRAINT добавя първичен ключ към колоните NOT NULL на съществуваща таблица.
  • 🧩 Композитен ключ: Първичният ключ може да комбинира до 16 колони, образувайки съставен ключ, който е уникален в целия набор.

SQL Server PRIMARY KEY: Как да създадете и добавите към съществуваща таблица

Какво е първичен ключ в 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');

Резултат: Системата не позволява вмъкването на новата стойност, защото 4 вече съществува в колоната Course_ID, която е първичен ключ.

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

Добавихме ограничение за първичен ключ към вече съществуваща таблица. Ограничението е добавено в колоната за прием и е присвоено името students_pk.

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

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

Въпроси и Отговори

И двете налагат уникалност. Таблицата позволява само един първичен ключ и нейните колони не могат да бъдат NULL. Таблицата може да съдържа няколко уникални ключа, а една уникална колона може да приема една NULL стойност. Първичните ключове обикновено определят главния идентификатор на реда.

Да. SQL Server автоматично изгражда уникален индекс, за да наложи първичния ключ. По подразбиране този индекс е клъстериран, което физически подрежда редовете. Можете да укажете NONCLUSTERED вместо това, когато друга колона вече съдържа клъстерирания индекс.

Съставният първичен ключ комбинира две или повече колони, така че стойностите им са уникални заедно, дори когато всяка колона се повтаря поотделно. SQL Server позволява първичният ключ да обхваща до 16 колони и обща дължина на ключа от 900 байта.

Първичният ключ уникално идентифицира всеки ред в собствената му таблица и никога не допуска NULL стойности. външен ключ съхранява стойности, които трябва да съответстват на първичен или уникален ключ в друга таблица, създавайки връзка между двете таблици.

Изпълнете ALTER TABLE table_name DROP CONSTRAINT constraint_name. Трябва да знаете името на ограничението, което можете да намерите в sys.key_constraints. Dropping Първичният ключ също така премахва поддържащия го уникален индекс и всеки външен ключ, който го препраща.

Колона IDENTITY, която автоматично генерира числа, е популярен заместващ първичен ключ, защото остава тясна, стабилна и никога не е NULL. Изберете естествен ключ само когато съществуваща колона, като например код на продукт, вече е гарантирано уникална.

Да. Копилот на GitHub Може да пише CREATE TABLE оператори и PRIMARY KEY ограничения от подкани на естествен език и да предлага подходящи ключови колони. Винаги преглеждайте генерираните ключове, типове данни и null-възможности, след което тествайте скрипта, преди да го стартирате в продукция.

Инструментите за изкуствен интелект и машинно обучение анализират примерни данни и модели на заявки, за да препоръчат коя колона или колони да бъдат първичният ключ, да маркират кандидат-ключове, които съдържат дубликати или NULL стойности, и да предлагат сурогатни ключове. Разработчикът потвърждава всяка препоръка, преди да я приложи.

Обобщете тази публикация с: