Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Какво представлява ограничението на първичния ключ в базата данни на SQL Server - SQL Server / T-SQL урок, част 54

Какво е ограничение на първичния ключ:

Ограничението за първичен ключ е създадено, за да гарантира уникалност на записите/редовете. Ограничението за първичен ключ може да бъде създадено върху единична или набор от колони, стига колоната/колоните да не позволяват нулеви стойности.
1) Ограничението на първичния ключ създава клъстериран индекс по подразбиране, ако вече не съществува Да приемем, че създавате нова таблица и сте добавили колона с първичен ключ, тя ще създаде клъстериран индекс.
В примера по-долу създаваме таблица dbo.Customer и сме добавили CustomerId като ограничение на първичен ключ. Нека проверим какъв тип индекс е създаден.
USE YourDatabaseName
GO

CREATE TABLE dbo.Customer (
    Customerid INT PRIMARY KEY
    ,FName VARCHAR(100)
    ,LName VARCHAR(100)
    ,SSN VARCHAR(10)
    )
 
 Можем да потърсим системния изглед sys.indexes, за да получим информация за индекса 
SELECT *
FROM sys.indexes
WHERE object_name(object_id) = 'Customer'
 
 Както можете да видите, че клъстерният индекс е създаден, тъй като не е имало клъстерен индекс в тази таблица преди. Забелязах името на клъстерния индекс, генерира се от SQL Server. Винаги е добра идея да предоставите правилното име за индекси според конвенцията за именуване/стандартите, които вашата компания използва. 

2) Ако групираният индекс вече е създаден в колона, първичен Ключът ще бъде Създаване на уникален индекс Ако клъстериран индекс вече присъства в колона/колони в таблица и се опитваме да създадем първичен ключ, той ще създаде уникален неклъстериран.
Нека пуснем и създадем отново таблицата dbo.Customer. Тъй като не можем да създадем клъстериран индекс за колони, които приемат стойности Null, трябва да дефинираме нашите Columns Not Null.
USE YourDatabaseName
GO
Drop table dbo.Customer
GO

CREATE TABLE dbo.Customer (
    Customerid INT Not Null
    ,FName VARCHAR(100)
    ,LName VARCHAR(100)
    ,SSN VARCHAR(10) Not Null
    )

--Create Clustered Index on SSN Column
CREATE CLUSTERED INDEX IX_Customer_SSN 
    ON dbo.Customer (SSN); 


--Create Primary Key on CustomerID
Alter Table dbo.Customer
Add Constraint Pk_Customer_CustomerId Primary Key(CustomerId)
 
 
 
 Нека проверим какъв тип индекси се създават с помощта на системния изглед sys.indexes. Трябва да има един клъстериран индекс, както създадохме на SSN, и трябва да има един уникален неклъстерен индекс, който трябва да бъде създаден от ограничението на първичния ключ.
Какво е ограничението на първичния ключ в SQL Server - SQL Server / TSQL урок

Видео демонстрация:Какво е ограничение на първичния ключ в SQL Server и как да създадете първичен ключ

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Списък на операторите за сравнение на SQL Server

  2. Предоставяне на потребителски достъп на msdb до пощенски профил на база данни в SQL Server (T-SQL)

  3. Правилно използване на транзакциите в SQL Server

  4. Защо типът DATETIME на SQL Server спестява време в тикове от 1/300 от секундата?

  5. Намерете стойност навсякъде в база данни