¿Cómo crear una clave primaria en SQL Server?

Ejemplos de código T-SQL para agregar una restricción de clave primaria a una columna para evitar insertar varias veces la misma clave.

¿Cómo crear una tabla con una clave primaria en SQL Server? Una clave primaria de una base de datos está diseñada para permitir un valor único que identifique una fila en una tabla. Primero, ¿cuál es el propósito de una clave primaria? Y además, ¿cuál es la definición de una clave primaria? Echa un vistazo a los siguientes ejemplos para crear una clave primaria y gestionar duplicados en proyectos de bases de datos.

¿Qué es una clave primaria en SQL Server?

En SQL Server, una clave primaria es una restricción que identifica de forma única cada registro dentro de una tabla de base de datos. Asegura que no haya dos filas con valores duplicados en la(s) columna(s) clave primaria y garantiza la integridad del conjunto de datos. Una clave primaria puede consistir en una sola columna o en una combinación de múltiples columnas (clave primaria compuesta). Además, la clave primaria crea automáticamente un índice único en las columnas especificadas para acelerar las consultas y garantizar la unicidad. En resumen, una clave primaria asegura que solo haya una línea única con un ID específico.

Para crear una tabla y agregar una clave primaria a ella, sigue estos cuatro pasos:

  1. En primer lugar, diseña la tabla de clientes utilizando código SQL.
  2. En segundo lugar, agrega una restricción a la columna seleccionada para que sea la clave.
  3. Inserta dos filas con la misma ID de cliente.
  4. Comprueba los datos resultantes en la tabla.

Paso 1: Diseñar la tabla de clientes con una columna ID Cliente

Diseña y crea una tabla de clientes con una columna de ID para almacenar el número de cliente.

-- Crear la tabla de clientes con la columna CustomerID declarada como NOT NULL
CREATE TABLE dbo.Customers (
   [CustomerID]   INT NOT NULL,
   [FirstName]    NVARCHAR(20),
   [LastName]     NVARCHAR(20),
   [City]         NVARCHAR(20),
   [Country]      NVARCHAR(50)
)
GO

Paso 2: Agregar la clave primaria de SQL Server a la columna

Aquí la clave primaria es la columna Customer ID. Utiliza el comando T-SQL ADD CONSTRAINT PRIMARY KEY para crear la restricción.

2.1 Utilizar una instrucción ALTER TABLE de T-SQL para crear la clave

ALTER TABLE dbo.Customers 
   ADD CONSTRAINT [CustomersPrimaryKeyCustomerID] 
      PRIMARY KEY CLUSTERED ([CustomerID] ASC);
GO 
Agregar una clave primaria de SQL Server a una tabla con un script de T-SQL
Creación de una clave primaria de SQL Server en una tabla T-SQL

2.2 Crear la clave primaria directamente en la sentencia CREATE TABLE

Por supuesto, otra forma es agregar la clave primaria directamente en la instrucción CREATE TABLE, como se muestra en el siguiente código, por ejemplo.

-- Eliminar la tabla de clientes si existe
DROP TABLE IF EXISTS dbo.Customers;
GO

-- Crear la tabla de clientes con la columna CustomerID declarada como NOT NULL y establecida como clave primaria
CREATE TABLE dbo.Customers (
   [CustomerID]   INT NOT NULL PRIMARY KEY CLUSTERED,
   [FirstName]    NVARCHAR(20),
   [LastName]     NVARCHAR(20),
   [City]         NVARCHAR(20),
   [Country]      NVARCHAR(50)
)
GO

Paso 3: Insertar dos líneas con la misma ID para probar la clave primaria

Efectivamente, la única forma de verificar la restricción es utilizarla. Inserta dos líneas con la misma ID de cliente para comprobar si la clave primaria funciona como se espera.

-- Insertar dos líneas diferentes con el mismo número de cliente
INSERT INTO dbo.Customers (CustomerID, FirstName, LastName, City, Country) 
VALUES ( 1, 'Ali','Ahmed','Cairo','Egypt');

INSERT INTO dbo.Customers (CustomerID, FirstName, LastName, City, Country) 
VALUES ( 1, 'Johnny','John','Toronto','Canada');

Observa el error de violación de restricción de clave primaria:

Msg 2627, Nivel 14, Estado 1, Línea 22
Violación de la restricción de clave primaria ‘CustomersPrimaryKeyCustomerID’. No se puede insertar una clave duplicada en el objeto ‘dbo.clientes’. El valor de clave duplicada es (1).
La instrucción se ha finalizado.

Paso 4: Comprobar los datos y el comportamiento de la clave primaria

Después de eso, solo está disponible una línea única en la tabla con el ID uno. Ahora solo es posible asignar un valor a un ID de cliente, lo que lo hace único en la tabla. Para profundizar, ten en cuenta algunas cosas sobre las claves primarias de SQL Server. Sin embargo, estas limitaciones y comportamientos específicos de las claves primarias son completamente parte de cómo funcionan las claves:

  1. En primer lugar, solo una clave primaria por tabla.
  2. Una clave primaria puede ser una clave compuesta utilizando múltiples columnas. Por ejemplo, una concatenación de estas columnas: ID + Nombre + Apellido.
  3. Además, una columna utilizada como clave primaria no puede ser NULL, por lo que se define como NOT NULL.
  4. Además, una clave primaria tiene por defecto su correspondiente índice agrupado creado automáticamente.
  5. Si se especifica en el script, el índice también puede ser no agrupado.

Conclusión sobre la clave primaria de SQL Server

En conclusión, crear una tabla de SQL Server con una restricción de clave primaria es un paso crucial para mantener la integridad de una base de datos. La clave primaria asegura que solo un valor único identifique una fila en una tabla y no puede ser NULL. Siguiendo los cuatro pasos descritos en este tutorial, los usuarios pueden agregar fácilmente una restricción de clave primaria a sus tablas de SQL Server. Recuerda que una tabla solo puede tener una clave primaria, pero puede ser una clave compuesta utilizando múltiples columnas.

Además, las restricciones de clave primaria tienen su correspondiente índice agrupado creado automáticamente. Comprender las limitaciones y comportamientos de las claves primarias es esencial para diseñar estructuras de bases de datos efectivas. Para obtener más información sobre los objetos SQL, aquí tienes una guía paso a paso para crear un índice agrupado de SQL Server.

Be the first to comment

Leave a Reply

Tu dirección de correo no será publicada.


*