¿Te resulta más fácil leer con fondo crema, un tono de color, más contraste o un texto más grande? Elige tus colores y tu texto una sola vez, para todas las páginas.

Lección gratuita

Tablas, registros y claves primarias

Después de esta lección: Puedo diseñar una tabla con una clave primaria.

Lección de 45 min11 comandosLaboratorio de MySQL y phpMyAdmin con una base de datos de una tienda para practicar SQL

Dos socias con el mismo nombre

Una biblioteca de instituto guarda sus socios en una hoja de cálculo. Hay dos socias que se llaman Lucia Perez, y alguien devuelve un libro a nombre de Lucia.

¿A cuál de las dos se le apunta? Una base de datos evita esta duda desde el principio. Da a cada socio un número único, y esa es la idea de una clave primaria.

Al terminar esta lección

Nota

Puedo diseñar una tabla con una clave primaria.

Palabras clave

PalabraQué significaEjemplo
Base de datosun conjunto de datos ordenado en tablas
Tablafilas y columnas que guardan una sola clase de cosa
Registrouna fila de la tabla, con los datos de una cosa
Campouna columna de la tabla, con un dato de cada registro
Clave primariael campo que identifica cada registro, sin repetirseid
Restricciónuna regla que la base comprueba en cada cambioNOT NULL

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Antes de empezar

Nota

Pulsa Iniciar el laboratorio en la barra superior y espera a que arranquen los dos servicios. Abre después el terminal. Cada botón Ejecutar escribe su comando en ese terminal. Si dice que aún está arrancando, espera un poco y vuelve a pulsarlo.

Una tabla guarda una sola clase de cosa

Una base de datos guarda la información en tablas. Cada tabla trata de una sola clase de cosa: socios, libros o préstamos.

Cada fila es un registro, con los datos de una cosa. Cada columna es un campo, con un mismo dato de todos los registros.

Antes de mirar la tienda del laboratorio, prepara el terminal con estos dos comandos.

Aceptar el certificado del servidor

Comando
printf '[client]\nssl-verify-server-cert=0\n' > ~/.my.cnf

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Un nombre corto para la tienda

Comando
alias sql='mariadb -h db -u student -pstudent shop -t -e'

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Qué tablas tiene la tienda

Comando
sql "SHOW TABLES"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Los registros de una tabla pequeña

Comando
sql "SELECT id, name FROM categories ORDER BY id"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Pruébalo: una tabla de socios

Código: sql
-- Una tabla es una lista de registros, uno por fila.
SELECT card, name, tutor_group FROM club;
-- Fíjate en que dos socias se llaman igual.
-- Cambia la consulta para ver solo name y email.

La clave primaria identifica cada registro

Una clave primaria es un campo cuyo valor es distinto en cada registro. Nunca puede quedar vacío.

Con ella puedes decir "el socio 101" y no hay duda de cuál es. La base rechaza un segundo registro con la misma clave.

Lo normal es un número que cuenta la propia base. En MySQL se escribe AUTO_INCREMENT.

Ejemplo resuelto: qué campo sirve de clave

CampoEjemplo de valores¿Sirve de clave?Por qué
nameLucia Perez, Mario Gil, Lucia PerezNoDos personas pueden llamarse igual
tutor_group1A, 1A, 2B, 2BNoUn grupo tiene muchos socios
emaillucia@..., mario@..., sara@...A vecesEs único hoy, pero la gente cambia de correo
card101, 102, 103, 104SíUn número que no se repite y no cambia

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Pruébalo: ¿se repite algún valor?

Código: sql
-- Si una columna sirve de clave, ningún valor sale dos veces.
SELECT card, COUNT(*) AS veces FROM club GROUP BY card;
-- Cambia card por name y ejecútalo otra vez.

Un error frecuente

Advertencia

Mucha gente cree que el nombre o el correo sirven de clave primaria. Los nombres se repiten y los correos cambian. Usa un número que cuente la base. Guarda el correo en otro campo, marcado como UNIQUE.

Las restricciones protegen los datos

Una restricción es una regla que la base comprueba cada vez que se añade o cambia un registro. NOT NULL obliga a rellenar el campo. UNIQUE impide que un valor salga dos veces.

Ahora crearás una tabla propia. El laboratorio te deja crear cualquier base cuyo nombre empiece por student_, así que la tienda no se toca.

Ejecuta los Run en orden. El que termina en error forma parte de la lección.

Crear tu propia base

Comando
sql "CREATE DATABASE IF NOT EXISTS student_library"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Un nombre corto para ella

Comando
alias lib='mariadb -h db -u student -pstudent student_library -t -e'

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Empezar de cero

Comando
lib "DROP TABLE IF EXISTS members"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Crear la tabla de socios

Comando
lib "CREATE TABLE members (id INT AUTO_INCREMENT PRIMARY KEY, full_name VARCHAR(60) NOT NULL, email VARCHAR(80) NOT NULL UNIQUE, joined_on DATE NOT NULL)"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Añadir dos socios

Comando
lib "INSERT INTO members (full_name, email, joined_on) VALUES ('Lucia Perez', '[email protected]', '2026-09-14'), ('Mario Gil', '[email protected]', '2026-09-15')"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Repetir un correo

Comando
lib "INSERT INTO members (full_name, email, joined_on) VALUES ('Otra Lucia', '[email protected]', '2026-09-16')"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Ver lo que guardó la base

Comando
lib "SELECT id, full_name FROM members ORDER BY id"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Para ir más lejos: la tabla de libros

Diseña en papel la tabla books de la biblioteca. Piensa qué campos tiene: título, autor, año y un código en la estantería.

Elige la clave primaria y explica por qué el título no sirve. Después créala en student_library con CREATE TABLE.

Sobre este laboratorio y su código: Laboratorio de MySQL y phpMyAdmin con una base de datos de una tienda para practicar SQL

¿Enseñas a una clase? Asigna este módulo a tus alumnos con guía del profesor, tareas con corrección automática y un laboratorio para cada alumno.