sql >> Databáze >  >> RDS >> Sqlserver

Co je omezení primárního klíče v databázi SQL Server - SQL Server / Výukový program T-SQL, část 54

Co je omezení primárního klíče:

Omezení primárního klíče je vytvořeno pro zajištění jedinečnosti záznamů/řádků. Omezení primárního klíče lze vytvořit pro jeden nebo sadu sloupců, pokud sloupec/sloupce neumožňují hodnoty Null.
1) Omezení primárního klíče vytváří ve výchozím nastavení seskupený index, pokud ještě neexistuje Řekněme, že vytváříte novou tabulku a přidali jste sloupec s primárním klíčem, vytvoří se shlukovaný index.
V níže uvedeném příkladu vytváříme tabulku dbo.Customer a jako omezení primárního klíče jsme přidali CustomerId. Podívejme se, jaký typ indexu je vytvořen.
USE YourDatabaseName
GO

CREATE TABLE dbo.Customer (
    Customerid INT PRIMARY KEY
    ,FName VARCHAR(100)
    ,LName VARCHAR(100)
    ,SSN VARCHAR(10)
    )
 
 Můžeme se dotazovat na systémový pohled sys.indexes a získat informace o indexu 
SELECT *
FROM sys.indexes
WHERE object_name(object_id) = 'Customer'
 
 Jak můžete vidět, že Clustered index je vytvořen, protože v této tabulce předtím nebyl žádný index clusteru. Všimli jsme si názvu pro Clustered Index, je generován SQL Serverem. Vždy je dobré uvést správný název pro indexy podle konvence pojmenování/standardů, které vaše společnost používá. 

2) Pokud je klastrovaný index již vytvořen ve sloupci, primární Klíč se chystá vytvořit jedinečný index Pokud je klastrovaný index již ve sloupci/sloupcích v tabulce přítomen a my se pokusíme vytvořit primární klíč, vytvoří se Unique Non-clustered.
Pojďme vypustit a znovu vytvořit tabulku dbo.Customer. Protože nemůžeme vytvořit seskupený index pro sloupce, které přijímají hodnoty Null, musíme definovat naše 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)
 
 
 
 Podívejme se, jaký typ indexů se vytváří pomocí systémového zobrazení sys.indexes. Měl by existovat jeden seskupený index, jak jsme vytvořili na SSN, a měl by existovat jeden jedinečný neshlukovaný, který by měl být vytvořen omezením primárního klíče.
Co je omezení primárního klíče v SQL Server – SQL Server / Výukový program TSQL

Video ukázka:Co je omezení primárního klíče v SQL Server a jak vytvořit primární klíč

  1. Pole data a času v MySQL a letní čas – jak mohu odkazovat na hodinu navíc?

  2. PostgreSQL POPISUJTE TABULKU

  3. Jak počítat slova v MySQL / náhradě regulárních výrazů?

  4. Reporty Rails nemohou najít sloupec, který tam je