PRIMARY KEY en SQL: qué es, cómo funciona y ejemplos prácticos

La restricción PRIMARY KEY en SQL se utiliza para identificar de forma única cada fila de una tabla.
Es uno de los conceptos más importantes en diseño de bases de datos porque garantiza que no existan duplicados ni valores nulos en la columna (o conjunto de columnas) que actúa como clave primaria.

👉 Una tabla puede tener solo una clave primaria.
👉 Puede estar formada por una o varias columnas (clave primaria compuesta).

Sintaxis básica de PRIMARY KEY

Existen dos formas principales de definir una clave primaria:

1) En la creación de la tabla (columna única)

CREATE TABLE clientes (
  id INT PRIMARY KEY,
  nombre VARCHAR(100),
  email VARCHAR(100)
);

👉 Aquí id es la clave primaria de la tabla (ver más sobre CREATE TABLE)

2) En la creación de la tabla (clave compuesta)

CREATE TABLE pedidos (
  pedido_id INT,
  producto_id INT,
  cantidad INT,
  PRIMARY KEY (pedido_id, producto_id)
);

👉 En este caso, la clave primaria está formada por dos columnas.

Características de PRIMARY KEY

  • Unicidad → no puede haber dos filas con el mismo valor en la clave primaria.
  • No admite NULL → todas las filas deben tener un valor válido.
  • Índice automático → la mayoría de los SGBD crean un índice automáticamente sobre la clave primaria.
  • Una por tabla → cada tabla solo puede tener una clave primaria, aunque puede estar compuesta por varias columnas.

Ejemplo básico de PRIMARY KEY

CREATE TABLE empleados (
  id INT PRIMARY KEY,
  nombre VARCHAR(50) NOT NULL,
  puesto VARCHAR(50),
  salario DECIMAL(10,2)
);

👉 Aquí id identifica de forma única a cada empleado.

Ejemplo de PRIMARY KEY compuesta

En una tabla de inscripciones a cursos, un estudiante puede inscribirse a varios cursos, y cada curso tiene varios estudiantes.

CREATE TABLE inscripciones (
  estudiante_id INT,
  curso_id INT,
  fecha DATE,
  PRIMARY KEY (estudiante_id, curso_id)
);

👉 No puede haber dos filas con el mismo estudiante en el mismo curso.

ALTER TABLE para agregar PRIMARY KEY

Podemos añadir una clave primaria a una tabla ya existente:

ALTER TABLE clientes
ADD CONSTRAINT pk_clientes PRIMARY KEY (id);

👉 Para más detalles, mirá el uso de ALTER TABLE y restricciones.

Para eliminarla:

ALTER TABLE clientes
DROP CONSTRAINT pk_clientes;

(la sintaxis exacta varía según el motor de base de datos).

Ejemplo práctico: pedidos únicos

CREATE TABLE pedidos (
  id INT PRIMARY KEY,
  cliente_id INT NOT NULL,
  fecha DATE NOT NULL,
  total DECIMAL(10,2) NOT NULL
);
  • id identifica cada pedido.
  • No puede haber dos pedidos con el mismo id.
  • Todos los pedidos deben tener un id válido.

Diferencias entre PRIMARY KEY y otras restricciones

  • PRIMARY KEY vs UNIQUE
    • Ambos evitan duplicados.
    • La clave primaria no admite NULL y solo puede haber una por tabla.
    • Puede haber múltiples restricciones UNIQUE en una tabla.
  • PRIMARY KEY vs FOREIGN KEY
    • PRIMARY KEY: identifica de manera única cada fila en una tabla.
    • FOREIGN KEY: crea una relación con la clave primaria de otra tabla.
  • PRIMARY KEY vs NOT NULL
    • NOT NULL solo asegura que no falte valor.
    • PRIMARY KEY asegura unicidad + no nulos.

PRIMARY KEY y AUTO_INCREMENT

En motores como MySQL, es común usar AUTO_INCREMENT junto a la clave primaria (ver CREATE TABLE).

CREATE TABLE usuarios (
  id INT AUTO_INCREMENT PRIMARY KEY,
  nombre VARCHAR(100)
);

👉 Cada nuevo usuario recibe un id único automáticamente.

En PostgreSQL se usa SERIAL o GENERATED AS IDENTITY:

CREATE TABLE usuarios (
  id SERIAL PRIMARY KEY,
  nombre VARCHAR(100)
);

Errores comunes con PRIMARY KEY

  1. Definir múltiples claves primarias en la misma tabla
    👉 Solo puede existir una.
  2. Permitir nulos en la clave primaria
    👉 No está permitido.
  3. Confundir clave primaria con clave candidata
    👉 Una tabla puede tener varias columnas candidatas a ser clave, pero solo una se elige como PRIMARY KEY.
  4. No definir clave primaria en absoluto
    👉 Puede llevar a problemas de integridad y dificultad para relacionar tablas.

Buenas prácticas con PRIMARY KEY

  • Usar claves primarias simples (de preferencia un número entero).
  • Evitar claves compuestas demasiado grandes, porque complican las relaciones.
  • Preferir claves primarias sin significado de negocio (ej. un ID numérico).
  • Si se necesita una clave natural (ej. DNI), se puede usar como UNIQUE y mantener una clave primaria artificial.
  • Nombrar las restricciones para mayor claridad (ej. pk_clientes).
  • Entender cómo interactúan con los índices en SQL para mejorar el rendimiento.

Casos de uso de PRIMARY KEY

  1. Identificación de registros
    Ejemplo: id_cliente en una tabla de clientes.
  2. Relaciones entre tablas
    Una FOREIGN KEY apunta a la PRIMARY KEY de otra tabla.
  3. Evitar duplicados
    Ejemplo: en una tabla de inscripciones, cada par (estudiante_id, curso_id) solo puede aparecer una vez.

PRIMARY KEY en distintos motores de base de datos

  • MySQL / MariaDB: soporta PRIMARY KEY y AUTO_INCREMENT.
  • PostgreSQL: soporta PRIMARY KEY, SERIAL y IDENTITY.
  • SQL Server: soporta PRIMARY KEY con índices clusterizados por defecto.
  • Oracle: soporta claves primarias y compuestas sin problemas.

👉 Es parte del estándar SQL, pero con detalles propios en cada motor.

Preguntas frecuentes (FAQ)

1. ¿Una tabla puede tener más de una clave primaria?
No. Solo una clave primaria, aunque puede estar compuesta por varias columnas.

2. ¿Una PRIMARY KEY puede ser NULL?
No. Todos sus valores deben ser distintos y no nulos.

3. ¿Qué pasa si intento insertar un valor duplicado en la PRIMARY KEY?
La base de datos rechaza la inserción con un error.

4. ¿Qué diferencia hay entre PRIMARY KEY y UNIQUE?
Ambos evitan duplicados, pero PRIMARY KEY no permite NULL y solo puede haber uno por tabla.

5. ¿Es mejor usar un ID artificial o un campo natural como PRIMARY KEY?
Depende. Generalmente es mejor un ID artificial (ej. número entero autoincremental) para mantener simplicidad y flexibilidad.

Conclusión

La PRIMARY KEY en SQL es esencial para garantizar la integridad de los datos:

  • Asegura unicidad y evita valores nulos.
  • Es fundamental en relaciones entre tablas.
  • Se recomienda usar claves simples y sin significado de negocio.

Dominar su uso es básico para cualquier persona que diseñe bases de datos profesionales.

Revisa claves primarias y buenas prácticas en Claves y restricciones y consulta el Glosario SQL completo.

Scroll al inicio