CLAVE PRIMARIA SQL: Crear y agregar a una tabla existente

⚡ Resumen inteligente

En SQL Server, una clave primaria es una columna o un conjunto de columnas cuyos valores identifican de forma única cada fila de una tabla. Cada tabla contiene una clave primaria, y sus columnas nunca deben ser nulas.

  • 🔑 ¿Qué es una clave primaria? Una clave primaria es una o más columnas cuyos valores son únicos e identifican cada fila de una tabla.
  • 🚫 Reglas básicas: Una tabla solo permite una clave primaria, cada valor debe ser único y ninguna columna clave puede contener valores NULL.
  • 🖱️ Dos métodos de creación: Tanto el Diseñador de tablas de SQL Server Management Studio como la instrucción CREATE TABLE de T-SQL definen una clave principal.
  • 🧱 cláusula CONSTRAINT: Dentro de CREATE TABLE, la cláusula CONSTRAINT … PRIMARY KEY nombra la clave y enumera su columna o columnas.
  • ➕ Agregar a una tabla existente: ALTER TABLE … ADD CONSTRAINT agrega una clave primaria a las columnas NOT NULL de una tabla existente.
  • 🧩 Clave compuesta: Una clave primaria puede combinar hasta 16 columnas, formando una clave compuesta que es única en todo el conjunto de datos.

Clave primaria de SQL Server: Cómo crear y agregar a una tabla existente

¿Qué es la clave principal en SQL?

Una clave primaria en SQL Server Es un campo, o una combinación de campos, que identifica un registro de forma única. Se trata de una columna o un conjunto de columnas en las que cada valor es único. En otras palabras, no hay dos filas que compartan el mismo valor de clave primaria.

Reglas para la clave primaria

  • Cada tabla solo puede tener una clave primaria.
  • Todos los valores son únicos, y el valor de la clave primaria puede identificar de forma unívoca cada fila.
  • El sistema no permitirá insertar una fila cuyo valor de clave primaria ya exista en la tabla.
  • Una clave primaria no puede ser NULA.

El siguiente diagrama resume todos los puntos anteriores sobre la clave primaria SQL.

Diagrama que resume las reglas de clave primaria de SQL: valores únicos, uno por tabla y no nulo.

Cómo crear una clave primaria en SQL Server

Puedes crear una clave primaria de dos maneras:

Estudiemos cada método en detalle.

SQL Server Management Studio

Paso 1) Haga clic con el botón derecho en el nombre de la tabla y haga clic Diseño.

Haga clic con el botón derecho en la tabla y seleccione Diseño en SQL Server Management Studio.

Paso 2) Haga clic con el botón derecho en el nombre de la columna y haga clic Establecer clave principal.

Haga clic con el botón derecho en la columna y seleccione Establecer clave principal en el Diseñador de tablas.

Resultado: Course_Id ahora es una clave primaria, indicada por un icono de llave junto a la columna.

La columna Course_Id está marcada con un icono de llave como clave principal.

T-SQL: Crear una clave primaria al crear una nueva tabla

A continuación se muestra la sintaxis para crear una mesa con una clave primaria de T-SQL.

Sintaxis:

CREATE TABLE <Table_Name>
(
Column1 datatype,
Column2 datatype,CONSTRAINT <Name> PRIMARY KEY (Column name)
.
);

Aquí, CONSTRAINT nombra la clave, PRIMARY KEY marca la columna que debe permanecer única, y cada columna también necesita una tipo de datos.

Vamos a crear una tabla con una columna como clave primaria SQL.

consulta:

CREATE TABLE COURSE_TSQL_PK 
(Course_ID Int not Null,
 Course_name Varchar(20)
 CONSTRAINT PK PRIMARY KEY (Course_ID)	
)

Paso 1) Ejecute la consulta haciendo clic Implementación.

Ejecutar la consulta CREATE TABLE que define la clave primaria Course_ID.

Resultado: Course_Id ahora es una clave primaria en la tabla COURSE_TSQL_PK.

Tabla COURSE_TSQL_PK que muestra Course_ID establecida como clave primaria.

Ejemplo: Veamos si permite introducir varios registros con el mismo ID de curso.

Paso 1) Inserte cuatro filas con diferentes valores de Course_ID.

Insert into COURSE_TSQL_PK values (1,'SQL');
Insert into COURSE_TSQL_PK values (2,'Python');
Insert into COURSE_TSQL_PK values (3,'SQL');
Insert into COURSE_TSQL_PK values (4,'C');

Paso 2) Verifique que todos los datos se hayan insertado correctamente ejecutando la consulta SELECT.

Resultado de la consulta SELECT que muestra cuatro filas con valores Course_ID distintos.

Nota: Puede insertar valores duplicados en una columna que no sea clave primaria.

Paso 3) Ahora intentemos insertar un nuevo registro con un Course_ID existente, que es la clave primaria.

Insert into COURSE_TSQL_PK values (4,'JAVA');

Resultado: El sistema no permite insertar el nuevo valor porque ya existe el valor 4 en la columna Course_ID, que es una clave primaria.

Mensaje de error que rechaza un valor de clave primaria duplicado para Course_ID.

¿Cómo agregar una clave principal a una tabla existente en SQL?

Ahora veremos cómo agregar una clave primaria a una tabla existente en SQL.

Puedes usar la instrucción ALTER para crear una clave primaria. Sin embargo, solo se puede crear una clave primaria en columnas definidas como NOT NULL. No puedes crear una clave primaria en una columna que admita valores NULL; si una columna actualmente admite valores NULL, primero debes modificarla a NOT NULL o eliminar y volver a crear la tabla.

Aquí está la sintaxis:

ALTER TABLE tableName
ADD CONSTRAINT constraintName PRIMARY KEY (column_1, column_2, ... column_n);

Por ejemplo:

ALTER TABLE students
ADD CONSTRAINT students_pk PRIMARY KEY (admission);

Sentencia ALTER TABLE que agrega una restricción de clave primaria llamada students_pk

Hemos agregado una restricción de clave principal a una tabla ya existente. La restricción se agregó en la columna de admisión y se le asignó el nombre Students_pk.

¡Datos interesantes!

  • Una clave primaria puede ser una combinación de varias columnas. Esta combinación se conoce como clave primaria compuesta.
  • Una clave primaria puede tener un máximo de 16 columnas.

Preguntas Frecuentes

Ambos métodos garantizan la unicidad. Una tabla solo permite una clave primaria y sus columnas no pueden contener valores nulos. Una tabla puede contener varias claves únicas, y una columna única puede aceptar un valor nulo. Las claves primarias suelen definir el identificador principal de la fila.

Sí. SQL Server crea automáticamente un índice único para garantizar la clave principal. Por defecto, este índice es agrupado, lo que ordena físicamente las filas. Si otra columna ya contiene el índice agrupado, puede especificar NONCLUSTERED.

Una clave primaria compuesta combina dos o más columnas, de modo que sus valores son únicos en conjunto, incluso cuando cada columna se repite individualmente. SQL Server permite que una clave primaria abarque hasta 16 columnas y una longitud total de clave de 900 bytes.

Una clave primaria identifica de forma única cada fila dentro de su propia tabla y nunca permite valores NULL. clave extranjera Almacena valores que deben coincidir con una clave primaria o única en otra tabla, creando una relación entre las dos tablas.

Ejecute ALTER TABLE table_name DROP CONSTRAINT constraint_name. Debe conocer el nombre de la restricción, que puede encontrar en sys.key_constraints. Eliminarping La clave primaria también elimina su índice único de soporte y cualquier clave externa que haga referencia a ella.

Una columna IDENTITY que genera números automáticamente es una clave primaria sustituta popular porque se mantiene estrecha, estable y nunca nula. Elija una clave natural solo cuando una columna existente, como un código de producto, ya tenga garantizada la unicidad.

Sí. Copiloto de GitHub Puede escribir sentencias CREATE TABLE y restricciones PRIMARY KEY a partir de indicaciones en lenguaje natural y sugerir columnas clave adecuadas. Siempre revise las claves generadas, los tipos de datos y la posibilidad de valores nulos, y luego pruebe el script antes de ejecutarlo en producción.

Las herramientas de IA y aprendizaje automático analizan datos de muestra y patrones de consulta para recomendar qué columna o columnas deben ser la clave principal, identificar claves candidatas que contengan duplicados o valores nulos y sugerir claves sustitutas. El desarrollador confirma cada recomendación antes de aplicarla.

Resumir este post con: