sql >> Base de Datos >  >> RDS >> Sqlserver

¿Qué es la restricción de clave principal en la base de datos de SQL Server? Tutorial de SQL Server/T-SQL, parte 54

¿Qué es la restricción de clave principal:

La restricción de clave principal se crea para garantizar la exclusividad de los registros/filas. La restricción de clave principal se puede crear en una sola columna o en un conjunto de columnas siempre que la columna o las columnas no permitan valores nulos.
1) La restricción de clave principal crea un índice agrupado de forma predeterminada si aún no existe Digamos que está creando una nueva tabla y ha agregado una columna con la clave principal, creará un índice agrupado.
En el siguiente ejemplo, estamos creando la tabla dbo.Customer y hemos agregado CustomerId como restricción de clave principal. Veamos qué tipo de índice se crea.
USE YourDatabaseName
GO

CREATE TABLE dbo.Customer (
    Customerid INT PRIMARY KEY
    ,FName VARCHAR(100)
    ,LName VARCHAR(100)
    ,SSN VARCHAR(10)
    )
 
 Podemos consultar la vista del sistema sys.indexes para obtener información del índice 
SELECT *
FROM sys.indexes
WHERE object_name(object_id) = 'Customer'
 
 Como puede ver, el índice agrupado se crea porque no había ningún índice agrupado en esta tabla antes. Observó el nombre del índice agrupado, lo genera SQL Server. Siempre es una buena idea proporcionar el nombre adecuado para los índices de acuerdo con la convención de nomenclatura/estándares que utiliza su empresa. 

2) Si ya se creó un índice agrupado en Columna, Principal La clave va a Crear índice único Si el índice agrupado ya está presente en la columna/columnas de una tabla e intentamos crear la clave principal, creará un único no agrupado.
Vamos a soltar y volver a crear la tabla dbo.Customer. Como no podemos crear índices agrupados en columnas que aceptan valores nulos, tenemos que definir nuestras columnas no nulas.
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)
 
 
 
 Veamos qué tipo de índices se crean usando la vista del sistema sys.indexes. Debe haber un índice agrupado como lo creamos en SSN y debe haber un único no agrupado que debe ser creado por la restricción de clave principal.
¿Qué es la restricción de clave principal en SQL Server? Tutorial de SQL Server/TSQL

Video de demostración:¿Qué es la restricción de clave principal en SQL Server y cómo crear una clave principal?