Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Qu'est-ce que la contrainte de clé primaire dans la base de données SQL Server - Tutoriel SQL Server / T-SQL, partie 54

Qu'est-ce que la contrainte de clé primaire :

La contrainte de clé primaire est créée pour garantir l'unicité des enregistrements/lignes. La contrainte de clé primaire peut être créée sur une ou plusieurs colonnes tant que la ou les colonnes n'autorisent pas les valeurs nulles.
1) La contrainte de clé primaire crée un index clusterisé par défaut s'il n'existe pas déjà Supposons que vous créez une nouvelle table et que vous avez ajouté une colonne avec la clé primaire, cela va créer un index clusterisé.
Dans l'exemple ci-dessous, nous créons la table dbo.Customer et nous avons ajouté CustomerId comme contrainte de clé primaire. Vérifions quel type d'index est créé.
USE YourDatabaseNameGOCREATE TABLE dbo.Customer ( Customerid INT PRIMARY KEY ,FName VARCHAR(100) ,LName VARCHAR(100) ,SSN VARCHAR(10 ) )
 
 Nous pouvons interroger la vue système sys.indexes pour obtenir des informations d'index 
SELECT *FROM sys.indexesWHERE object_name(object_id) ='Customer'
 
 Comme vous pouvez le voir, l'index clusterisé est créé car il n'y avait pas d'index cluster sur cette table auparavant. Remarquez le nom de l'index clusterisé, il est généré par SQL Server. C'est toujours une bonne idée de fournir un nom propre aux index selon la convention de dénomination/les normes utilisées par votre entreprise. 

2) Si l'index clusterisé est déjà créé sur la colonne, primaire La clé va créer un index unique Si l'index clusterisé est déjà présent sur la ou les colonnes d'une table et que nous essayons de créer une clé primaire, il créera un fichier unique non clusterisé.
Laissons tomber et recréons la table dbo.Customer. Comme nous ne pouvons pas créer d'index clusterisé sur des colonnes qui acceptent des valeurs nulles, nous devons définir nos colonnes non nulles.
USE YourDatabaseNameGODrop table dbo.CustomerGOCREATE TABLE dbo.Customer ( Customerid INT Not Null ,FName VARCHAR(100 ) ,LName VARCHAR(100) ,SSN VARCHAR(10) Not Null )--Create Clustered Index on SSN ColumnCREATE CLUSTERED INDEX IX_Customer_SSN ON dbo.Customer (SSN); --Create Primary Key on CustomerIDAlter Table dbo.CustomerAdd Constraint Pk_Customer_CustomerId Primary Key(CustomerId)
 
 
 
 Vérifions quel type d'index sont créés en utilisant la vue système sys.indexes. Il devrait y avoir un index clusterisé comme nous l'avons créé sur SSN et il devrait y avoir un index unique non clusterisé qui devrait être créé par la contrainte de clé primaire.
Qu'est-ce que la contrainte de clé primaire dans SQL Server - Tutoriel SQL Server / TSQL

Démo vidéo :Qu'est-ce que la contrainte de clé primaire dans SQL Server et comment créer une clé primaire