Ir al contenido principal

Clave principal SQL: Tutorial técnico completo

Comprende qué es una clave primaria SQL y su función en las relaciones entre bases de datos y el rendimiento de las consultas en este tutorial técnico.
Actualizado 8 ago 2025  · 10 min leer

En las bases de datos relacionales, la clave principal desempeña un papel crucial para garantizar la unicidad y la integridad de los datos dentro de una tabla. Una clave principal es una restricción que identifica de forma única cada registro de una tabla, actuando como elemento fundamental para la indexación, la aplicación de la integridad de la entidad y el establecimiento de relaciones entre tablas.

En este tutorial, te guiaré a través de una exploración en profundidad de las claves primarias SQL, cubriendo los principios básicos, los métodos de implementación y las técnicas de optimización. También abordaré algunos errores comunes y mejores prácticas, así como situaciones reales. Si aún estás aprendiendo SQL, te recomiendo que consultes nuestra completa hoja de ruta de SQL y realices nuestro programa de habilidades Fundamentos de SQL

¿Qué es una clave principal SQL?

Una clave principal SQL es una columna o un conjunto de columnas que identifican de forma única cada fila de una tabla. Esto significa que no puede haber dos filas con el mismo valor de clave principal. Una tabla solo puede tener una clave principal, que puede estar formada por una o varias columnas.

Las claves primarias son fundamentales para garantizar la integridad de los datos y permitir consultas eficientes. Veamos algunos aspectos fundamentales.

Las claves primarias son esenciales para la normalización de bases de datos y la integridad relacional.

Propiedades clave de las claves primarias

  1. : Asegura que todos los valores de la columna o columnas de la clave principal sean únicos.
  2. No anulabilidad: Las columnas de clave primaria no pueden contener valores NULL.
  3. Inmutabilidad: Lo ideal es que los valores de las claves primarias permanezcan inalterados durante toda su vida útil para evitar inconsistencias en las referencias a las tablas.

Restricciones e indexación

Cuando se define una clave principal, la base de datos crea automáticamente un índice único para aplicar la restricción. Este índice acelera el rendimiento de las consultas, especialmente en operaciones de búsqueda.

A través de este sistema de índices, las claves primarias ayudan al motor de la base de datos a optimizar el plan de ejecución. Esto hará que tus consultas se ejecuten más rápido.

Tipos de datos comunes para claves primarias

Las claves primarias pueden ser de varios tipos de datos. Aquí hay algunos tipos que se utilizan:

  • INTEGER o SERIAL: Eficaz y más utilizado.
  • BIGINT: Útil para tablas que se espera que almacenen miles de millones de filas.
  • UUID: Ideal para sistemas distribuidos y para evitar la previsibilidad secuencial.
  • CHAR/VARCHAR: Úsese con precaución, normalmente en tonalidades naturales cuando sea necesario.

Tipos y arquitectura de claves primarias SQL

Las claves primarias se pueden clasificar en varios tipos según su estructura y origen. Algunos ejemplos son:

  • Claves naturales: Se derivan de datos existentes (por ejemplo, número de la Seguridad Social, correo electrónico) y son fáciles de entender y, a menudo, significativos para los usuarios empresariales. Sin embargo, esto conlleva el riesgo de actualizaciones, duplicaciones y posibles problemas de privacidad.
  • Claves sustitutas: Claves artificiales, como los ID generados por el sistema, que suelen implementarse con SERIAL, BIGSERIAL o UUID. El uso de estas claves ofrece estabilidad, privacidad y un mantenimiento más sencillo.

Comparándolos en función de sus características, podemos revelar sus diferencias en la siguiente tabla resumen:

Característica

Clave natural

Clave sustituta

Significado comercial

No

Estabilidad

A menudo inestable

Muy estable

Rendimiento

Puede requerir campos grandes.

Generalmente compacto

Preocupaciones sobre la privacidad

Más alto

Más bajo

Arquitectura de clave primaria compuesta

Una clave principal compuesta es una forma habitual de generar una clave única en las tablas. La clave se deriva normalmente de los datos que se encuentran en dos o más columnas.

Estas claves son comunes en tablas de unión o asociativas, donde la relación en sí misma requiere unicidad.

  • Ejemplo: Una tabla course_enrollments podría utilizar una clave compuesta de student_id y course_id.

Consideraciones:

  • Minimalismo: Evita columnas innecesarias en la clave compuesta.
  • Complejidad: Las uniones y las referencias de claves externas se vuelven más complejas.
  • Tamaño del índice: Los índices pueden llegar a ser muy grandes y afectar al rendimiento.

Claves adicionales utilizadas en bases de datos

Además de la clave principal, hay otras claves que se pueden utilizar, como por ejemplo:

  • Clave del candidato: Conjunto de atributos que pueden identificar de forma única una fila.
  • Super clave: Cualquier superconjunto de una clave candidata (incluye columnas adicionales).
  • Tecla alternativa: Una clave candidata que no se elige como clave principal.

Si estás decidiendo qué campo de datos utilizar como clave principal, puedes tener en cuenta los siguientes factores:

  • Frecuencia de cambio de datos: ¿Con qué frecuencia cambian los datos?
  • Tipo y tamaño de los datos de la columna: ¿El tipo de datos es adecuado para la indexación?
  • Patrones de consulta esperados: ¿Este campo será adecuado para realizar consultas?

Definición y modificación de claves primarias en SQL

A continuación, veamos cómo se pueden declarar y gestionar las claves primarias en PostgreSQL utilizando comandos SQL. 

Recorreremos varios escenarios, incluyendo la creación de tablas, la modificación de tablas existentes y la gestión del comportamiento de las restricciones.

Declaración y modificación Sintaxis

Durante la creación de la tabla

En la fase de creación de la tabla, debes crear campos que sea probable que se encuentren. En este caso, generaremos un ID de empleado que consta de números enteros únicos.

CREATE TABLE employees (
    employee_id SERIAL PRIMARY KEY,  -- Automatically generates unique integers
    name TEXT NOT NULL,              -- Basic text field, required
    email TEXT UNIQUE                -- Unique constraint to prevent duplicate emails
);

Más información sobre los comandos SQL en nuestra hoja de referencia rápida sobre conceptos básicos de SQL.

Hoja de referencia rápida sobre conceptos básicos de SQL

Este ejemplo muestra cómo definir una clave principal en línea utilizando el pseudotipo SERIAL. PostgreSQL trata SERIAL como una columna entera con autoincremento, ideal para claves sustitutivas. A la columna de correo electrónico también se le asigna una restricción UNIQUE, lo que le permite servir como clave alternativa.

Uso de ALTER TABLE

Ahora, establezcamos el campo « employee_id » como clave principal.

ALTER TABLE employees ADD PRIMARY KEY (employee_id);

Este comando se utiliza cuando ya se ha creado una tabla sin una clave principal y deseas añadir una posteriormente. Asegúrate de que la columna a la que estás añadiendo la clave principal no contiene valores NULL ni duplicados, ya que, de lo contrario, el comando fallará.

Eliminar clave principal

Ahora que ya has establecido la clave principal, también puedes eliminar la restricción de clave principal.

ALTER TABLE employees DROP CONSTRAINT employees_pkey;

Utiliza esta instrucción para eliminar una restricción de clave principal existente. El nombre de la restricción employees_pkey sigue la convención de nomenclatura predeterminada de PostgreSQL (

En PostgreSQL, el nombre predeterminado de la restricción para las claves primarias es table_name_pkey.

Obtén más información sobre PostgreSQL en nuestra hoja de referencia.

hoja de referencia rápida de postgresql

Gestión de valores nulos y gestión de colisiones

No se permiten valores NULL en columnas de clave primaria. Los valores duplicados también provocarán errores de violación de restricciones.

Algunas estrategias para gestionar esto incluyen:

  • Usando INSERT ... ON CONFLICT para evitar duplicados.
  • Uso de transacciones para comprobar la disponibilidad de claves antes de las inserciones.

Estrategias de autoincremento e identificador global

Los tipos de PostgreSQL « SERIAL », « BIGSERIAL » y « IDENTITY » simplifican la generación de ID.

Además, los UUID proporcionan identificadores globales seguros. Su naturaleza no secuencial e impredecible también mejora la seguridad, especialmente en la prevención de ataques de enumeración. 

A continuación se muestra una implementación de cómo se puede crear un UUID y utilizarlo como clave principal.

CREATE EXTENSION IF NOT EXISTS "pgcrypto";
CREATE TABLE users (
    user_id UUID DEFAULT gen_random_uuid() PRIMARY KEY,
    username TEXT NOT NULL
);

Claves primarias en relaciones y mejora del rendimiento

Las claves primarias son esenciales para garantizar la coherencia entre las tablas relacionales y mejorar el rendimiento.

Aplicación de la integridad de entidades

La integridad de las entidades se garantiza mediante claves primarias, que no admiten valores NULL ni duplicados. Contar con un identificador único ayuda a evitar anomalías en los datos durante las operaciones de inserción/actualización.

Claves externas e integridad referencial

Las claves externas deben coincidir con los valores de clave primaria existentes en la tabla a la que se hace referencia. La integridad referencial garantiza que todas las referencias entre tablas sigan siendo válidas y evita los «registros huérfanos», en los que los registros hacen referencia a datos inexistentes.

Las acciones en cascada mantienen la coherencia cuando cambian las claves primarias a las que se hace referencia. 

Esto puede incluir funciones en cascada comunes como:

  • ON DELETE CASCADE
  • ON UPDATE CASCADE
  • SET NULL y SET DEFAULT

Optimización de indexación y consultas

Los índices únicos en las claves primarias aceleran las consultas SELECT y JOIN. Sin embargo, un diseño deficiente de las claves puede provocar índices inflados y un rendimiento degradado.

Si tus consultas son lentas y sospechas que se debe a una indexación incorrecta, utiliza EXPLAIN ANALYZE para inspeccionar los planes de consulta y evaluar el uso de los índices.

Mejores prácticas de diseño y posibles dificultades

Un buen diseño de claves favorece el mantenimiento, el rendimiento y la escalabilidad. Veamos algunas prácticas recomendadas y errores comunes.

Directrices clave para la selección

  • Elige tipos de datos cortos y de longitud fija (por ejemplo, INT, UUID).
  • Evita las claves que puedan cambiar.
  • Asegúrate de que la clave no tenga ningún significado comercial implícito para evitar confusiones lógicas.
  • Utiliza claves sustitutivas para simplificar y normalizar.

Errores comunes en la implementación

  • Uso de varias claves primarias (solo se permite una por tabla).
  • Etiquetar erróneamente restricciones únicas como claves primarias.
  • No definir claves primarias, lo que da lugar a registros huérfanos.

Las correcciones incluyen:

  • Añadir claves que faltan a través de ALTER TABLE.
  • Normalización del diseño del esquema.
  • Utilizar convenciones de nomenclatura coherentes.

Consideraciones sobre la escalabilidad

Al crear una solución de base de datos escalable, intenta utilizar claves sustitutivas para mantener la uniformidad en conjuntos de datos de gran tamaño. Evita las claves compuestas en sistemas distribuidos a menos que sea necesario. También es imprescindible supervisar periódicamente el tamaño de tus tablas/índices.

Escenarios de implementación avanzada

El manejo de claves primarias en sistemas complejos, como bases de datos distribuidas o sistemas heredados, requiere estrategias avanzadas.

Sistemas de bases de datos distribuidas

Las bases de datos distribuidas son más complicadas. Deberás asegurarte de que la generación de claves no presente conflictos entre los nodos. Para ello, puedes probar a utilizar UUID y servicios de gestión de claves centralizados.

Consideraciones sobre la partición:

  • Asegúrate de que las teclas no creen puntos calientes.
  • Utiliza claves hash o aleatorias cuando fragmentes.

Migración de sistemas heredados

Cuando realices una migración del sistema desde una base de datos heredada, identifica primero los identificadores únicos existentes. A continuación, introduce gradualmente claves sustitutivas junto con las claves naturales.

Adopta un enfoque prudente y prueba la compatibilidad con doble clave antes de realizar la transición completa.

Proceso de migración:

  1. Añade una columna de clave sustituta.
  2. Rellena las claves de los registros existentes.
  3. Modificar consultas de aplicaciones.
  4. Eliminar claves naturales antiguas tras la verificación.

Demostración de claves primarias utilizando PostgreSQL

Antes de crear tablas e insertar datos, necesitas un entorno PostgreSQL operativo. Esta sección comienza con una breve guía para configurar PostgreSQL, seguida de instrucciones para definir y utilizar un conjunto de datos de ejemplo para practicar los conceptos básicos de las claves primarias.

Paso 1: Configuración inicial para PostgreSQL

Si aún no has instalado PostgreSQL, sigue estos pasos para empezar:

  1. Install PostgreSQL
    • Visita el sitio web oficial: https://www.postgresql.org/download/
    • Elige tu sistema operativo (Windows, macOS o Linux).
    • Descarga y ejecuta el instalador, asegurándote de instalar pgAdmin (una interfaz gráfica) junto con el servidor PostgreSQL.
  2. Inicia el servicio PostgreSQL.
    • Después de la instalación, el servicio PostgreSQL suele iniciarse automáticamente.
    • También puedes iniciarlo manualmente a través del administrador de servicios de tu sistema operativo (por ejemplo, Servicios en Windows o systemctl en Linux).
  3. Inicia pgAdmin o conéctate a través de la CLI.
    • Utiliza pgAdmin para gestionar y consultar bases de datos de forma visual.
    • Como alternativa, abre un terminal y conéctate utilizando:psql -U postgres
    • Reemplaza postgres por tu nombre de usuario real de PostgreSQL si es diferente.
  4. Crear una nueva base de datos
    • En pgAdmin, haz clic con el botón derecho en «Bases de datos» y selecciona «Crear > Base de datos».

  • O bien, utiliza el siguiente comando SQL:```sql

CREAR BASE DE DATOS pk_tutorial;

Connect to the new database in psql with:```bash
\c pk_tutorial

Una vez que tu entorno esté listo, puedes continuar con el resto de la configuración del conjunto de datos tal y como se ha descrito en el tutorial.

A continuación, veamos una guía paso a paso para crear un conjunto de datos de muestra utilizando PostgreSQL. El conjunto de datos consta de dos tablas relacionadas: customers y orders.

La tabla « customers » utiliza una clave sustituta para simplificar, mientras que la tabla « orders » utiliza una clave primaria basada en UUID para ilustrar la unicidad global.

Paso 2: Creación de tablas

El primer paso es definir el esquema y establecer restricciones de clave primaria para ambas tablas. También definimos una relación de clave externa entre orders.customer_id y customers.customer_id para demostrar la integridad relacional.

Para la tabla « customers », la clave principal es « customer_id ».

Para la tabla « orders », la clave principal es « order_id ».

CREATE TABLE customers (
    customer_id SERIAL PRIMARY KEY, -- Auto-incremented surrogate key
    name TEXT NOT NULL,
    email TEXT UNIQUE -- Ensures no duplicate email addresses
);

CREATE TABLE orders (
    order_id UUID DEFAULT gen_random_uuid() PRIMARY KEY, -- Globally unique identifier
    order_date DATE NOT NULL,
    customer_id INT REFERENCES customers(customer_id) ON DELETE CASCADE -- Enforces referential integrity
);

Explicación:

  • customer_id utiliza la palabra clave « SERIAL » para generar identificadores únicos automáticamente.
  • email tiene una restricción « UNIQUE » para evitar duplicados.
  • order_id es un archivo « UUID » generado automáticamente a través de gen_random_uuid().
  • La cláusula « ON DELETE CASCADE » garantiza que al eliminar un cliente también se eliminan los pedidos asociados a él.

Así es como debería verse en la interfaz de pgAdmin:

crear tablas

Paso 3: Insertar datos de muestra

A continuación, rellenamos las tablas con registros de muestra para observar cómo se comportan las claves primarias y externas durante las operaciones de inserción típicas. Estos datos simulan un escenario básico de comercio electrónico.

INSERT INTO customers (name, email) VALUES
('Alice Tan', 'alice@example.com'),
('Ben Koh', 'ben@example.com'),
('Clara Lim', 'clara@example.com');

INSERT INTO orders (order_date, customer_id) VALUES
('2025-07-01', 1),
('2025-07-02', 2),
('2025-07-03', 3);

Así es como debería verse en la interfaz de pgAdmin:

insertar datos en tablas

Paso 4: Consulta de datos

Por último, realizamos una consulta SQL « JOIN » para recuperar información de ambas tablas, lo que demuestra cómo la clave externa permite uniones relacionales perfectas entre pedidos y clientes.

Este es el código que vamos a ejecutar:

SELECT o.order_id, o.order_date, c.name, c.email
FROM orders o
JOIN customers c ON o.customer_id = c.customer_id;

Aquí tienes un ejemplo del resultado:

creación de consultas y uniones

Como puedes ver en la imagen anterior, la tabla de salida muestra datos de ambas tablas. Por ejemplo, la tabla unida incluye el campo « order_date » de la tabla « orders » y el campo « name » de la tabla « customers ».

Conclusión

Las claves primarias SQL son fundamentales para las bases de datos relacionales, ya que garantizan la unicidad, permiten realizar consultas eficientes y respaldan la integridad de los datos. 

Hemos cubierto los principios, clasificaciones, sintaxis, mejores prácticas y estrategias avanzadas para las claves primarias SQL. Para obtener más recursos de aprendizaje, consulta nuestro curso Introducción a las bases de datos relacionales en SQL o el curso Unión de datos en SQL.

Si prefieres leer tutoriales, la guía Restricciones de integridad en SQL o la hoja de referencia rápida sobre uniones SQL también te serán de gran ayuda.

_pkey). Esto resulta útil cuando se rediseña el esquema de la tabla o se cambia a una columna de clave principal diferente.

Preguntas frecuentes sobre claves primarias SQL

¿Cuáles son las diferencias entre claves naturales y claves sustitutas?

Las claves naturales se derivan de datos reales que ya existen (por ejemplo, correo electrónico o documento nacional de identidad), mientras que las claves sustitutivas son valores generados por el sistema (por ejemplo, identificadores autoincrementales) que se utilizan exclusivamente para identificar filas de forma única.

¿Cómo mejoran las claves primarias compuestas el diseño de las bases de datos?

Las claves primarias compuestas utilizan varias columnas para garantizar la unicidad, lo que permite modelar mejor las relaciones en tablas de unión y aplicar la unicidad de múltiples atributos en relaciones muchos a muchos.

¿Cuáles son las mejores prácticas para elegir una clave principal?

Una buena clave principal debe ser única, estable (no cambiar con el tiempo), de tamaño mínimo y, a ser posible, numérica para garantizar el rendimiento y la eficiencia de la indexación.

¿Cómo contribuyen las claves primarias a la integridad de los datos?

Las claves primarias garantizan que cada fila de una tabla sea identificable de forma única, lo que evita registros duplicados y permite referencias precisas a través de claves externas.

¿Puedes explicar la función de las claves primarias en el establecimiento de relaciones entre tablas?

Las claves primarias sirven como puntos de referencia para las claves externas en otras tablas, lo que permite la integridad relacional y admite relaciones uno a muchos o muchos a muchos en un esquema normalizado.


Austin Chia's photo
Author
Austin Chia
LinkedIn

Soy Austin, bloguero y escritor técnico con años de experiencia como científico de datos y analista de datos en el sector sanitario. Empecé mi andadura tecnológica con una formación en biología, y ahora ayudo a otros a hacer la misma transición a través de mi blog tecnológico. Mi pasión por la tecnología me ha llevado a escribir para decenas de empresas de SaaS, inspirando a otros y compartiendo mis experiencias.

Temas

Los mejores cursos de SQL

programa

Fundamentos de SQL

26 h
Domina los fundamentos de SQL necesarios para los negocios, aprende a escribir consultas SQL y empieza a analizar tus datos utilizando este potente lenguaje.
Ver detallesRight Arrow
Iniciar curso
Ver másRight Arrow
Relacionado

blog

SQL Server, PostgreSQL, MySQL... ¿cuál es la diferencia? ¿Por dónde empiezo?

En este tutorial, aprenderás algunas de las diferencias básicas entre los dialectos SQL y por dónde deberías empezar.
Mona Khalil's photo

Mona Khalil

5 min

Tutorial

Ejemplos y tutoriales de consultas SQL

Si quiere iniciarse en SQL, nosotros le ayudamos. En este tutorial de SQL, le presentaremos las consultas SQL, una potente herramienta que nos permite trabajar con los datos almacenados en una base de datos. Verá cómo escribir consultas SQL, aprenderá sobre
Sejal Jaiswal's photo

Sejal Jaiswal

Tutorial

Cómo utilizar un alias SQL para simplificar tus consultas

Explora cómo el uso de un alias SQL simplifica tanto los nombres de las columnas como los de las tablas. Aprende por qué utilizar un alias SQL es clave para mejorar la legibilidad y gestionar uniones complejas.
Allan Ouko's photo

Allan Ouko

Tutorial

Seleccionar varias columnas en SQL

Aprende a seleccionar fácilmente varias columnas de una tabla de base de datos en SQL, o a seleccionar todas las columnas de una tabla en una simple consulta.
DataCamp Team's photo

DataCamp Team

Tutorial

Tutorial de Power BI DAX para principiantes

Aprende qué es DAX y descubre la sintaxis y las funciones DAX fundamentales que necesitarás para llevar tus conocimientos de Power BI al siguiente nivel.
Joleen Bothma's photo

Joleen Bothma

Tutorial

FUNCIÓN SQL FORMAT()

FORMAT() es una de las funciones más utilizadas en SQL. Conozca sus principales aplicaciones en este tutorial.
Travis Tang 's photo

Travis Tang

Ver másVer más