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
| Palabra | Qué significa | Ejemplo |
|---|---|---|
| Base de datos | un conjunto de datos ordenado en tablas | |
| Tabla | filas y columnas que guardan una sola clase de cosa | |
| Registro | una fila de la tabla, con los datos de una cosa | |
| Campo | una columna de la tabla, con un dato de cada registro | |
| Clave primaria | el campo que identifica cada registro, sin repetirse | id |
| Restricción | una regla que la base comprueba en cada cambio | NOT 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
printf '[client]\nssl-verify-server-cert=0\n' > ~/.my.cnfSe 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
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
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
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
-- 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
| Campo | Ejemplo de valores | ¿Sirve de clave? | Por qué |
|---|---|---|---|
| name | Lucia Perez, Mario Gil, Lucia Perez | No | Dos personas pueden llamarse igual |
| tutor_group | 1A, 1A, 2B, 2B | No | Un grupo tiene muchos socios |
| lucia@..., mario@..., sara@... | A veces | Es único hoy, pero la gente cambia de correo | |
| card | 101, 102, 103, 104 | Sí | 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?
-- 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
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
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
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
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
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
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
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.