Cuando una aplicación necesita guardar información de forma permanente, ordenada y consultable, normalmente termina utilizando una base de datos. Un sistema de alumnos, una tienda, una red social, un banco o una plataforma médica tienen algo en común: necesitan almacenar datos y recuperarlos de forma confiable.
En esta primera guía vamos a construir una base conceptual sólida antes de empezar con las consultas. La idea es entender qué problema resuelven las bases de datos, qué es SQL, qué es MySQL y cómo se organiza la información.
¿Qué problema resuelve una base de datos?
Imaginemos una escuela que guarda sus alumnos en archivos de texto separados. Cada archivo podría contener nombre, documento, curso y teléfono. Al principio puede funcionar, pero enseguida aparecen problemas:
- ¿cómo buscamos rápidamente a todos los alumnos de un curso?
- ¿cómo evitamos cargar dos veces al mismo alumno?
- ¿cómo actualizamos un teléfono sin modificar varios archivos?
- ¿cómo relacionamos alumnos con cursos, profesores y materias?
- ¿cómo permitimos que varias personas trabajen al mismo tiempo sin romper la información?
Una base de datos está diseñada precisamente para resolver ese tipo de problemas.
Dato, información y estructura
Un dato es un valor individual: por ejemplo 22, Ana o Santa Rosa. Cuando varios datos se organizan y adquieren contexto, se transforman en información útil.
Por ejemplo:
nombre: Ana edad: 22 ciudad: Santa Rosa
En una base de datos, esos valores no se guardan de manera arbitraria: se organizan dentro de estructuras definidas.
¿Qué es una base de datos?
Una base de datos es un conjunto organizado de información que puede almacenarse, consultarse, modificarse y relacionarse de forma eficiente.
No es simplemente un archivo con datos. Una base de datos permite aplicar reglas, relaciones, permisos, restricciones y transacciones.
¿Cómo funciona una base de datos en una aplicación?
En una aplicación típica, el usuario no habla directamente con MySQL. La aplicación recibe una acción, construye una consulta SQL, la envía al servidor de base de datos y recibe un resultado.
Podemos imaginar el flujo así:
Usuario → Aplicación → SQL → MySQL → Resultado → Aplicación → Usuario
Esta separación es importante porque el motor de base de datos se especializa en almacenar, validar, buscar y relacionar información, mientras que la aplicación se ocupa de la interfaz y las reglas del sistema.
¿Qué es un SGBD?
Un Sistema Gestor de Bases de Datos o SGBD es el software encargado de administrar una base de datos.
Entre otras tareas, se ocupa de:
- guardar y recuperar información;
- procesar consultas;
- controlar accesos;
- mantener integridad;
- gestionar concurrencia;
- manejar transacciones;
- optimizar consultas.
MySQL es un SGBD relacional.
¿Qué es SQL?
SQL significa Structured Query Language. Es el lenguaje que usamos para comunicarnos con bases de datos relacionales.
Con SQL podemos:
- crear tablas;
- insertar datos;
- consultar información;
- modificar registros;
- eliminar datos;
- crear relaciones;
- administrar permisos;
- controlar transacciones.
SQL es un lenguaje declarativo
Esto significa que normalmente indicamos qué resultado queremos, y el motor decide cómo obtenerlo.
Por ejemplo:
SELECT nombre, apellido FROM alumnos WHERE edad > 18;
Nosotros pedimos “los alumnos mayores de 18”. MySQL decide cómo localizar esos registros.
SQL y MySQL no son lo mismo
SQL es el lenguaje. MySQL es uno de los motores que implementan ese lenguaje.
También existen otros motores como PostgreSQL, SQL Server, Oracle o MariaDB. Todos utilizan SQL, aunque cada uno posee extensiones y diferencias propias.
Base de datos, esquema y tabla: no son lo mismo
Conviene distinguir tres conceptos:
- base de datos: el conjunto general de información;
- esquema: la organización lógica de objetos y estructuras;
- tabla: una estructura concreta formada por columnas y filas.
En MySQL, en el uso cotidiano, los términos base de datos y schema suelen tratarse prácticamente como equivalentes.
¿Qué es una base de datos relacional?
Una base de datos relacional organiza la información en tablas. Esas tablas pueden relacionarse mediante claves.
Por ejemplo, en un sistema educativo podríamos tener:
alumnos;cursos;profesores;inscripciones.
En lugar de guardar toda la información repetida en una única tabla enorme, se divide de forma lógica y después se relaciona.
Entidad, atributo y registro
Una entidad representa algo del mundo real que queremos guardar. Por ejemplo, un alumno.
Sus atributos podrían ser nombre, apellido, fecha de nacimiento o email.
Un registro es una instancia concreta de esa entidad.
Tabla, fila y columna
En una tabla:
- cada fila representa un registro;
- cada columna representa un atributo;
- la tabla completa representa una entidad o relación.
Clave primaria
Una clave primaria identifica de forma única cada fila.
id INT AUTO_INCREMENT PRIMARY KEY
Dos registros no pueden compartir el mismo valor de clave primaria.
Clave foránea
Una clave foránea permite relacionar una tabla con otra.
Por ejemplo, un alumno puede guardar un curso_id que apunte al id de la tabla cursos.
¿Por qué relacionar tablas en lugar de repetir datos?
Supongamos que 500 alumnos pertenecen al mismo curso. Si escribimos el nombre completo del curso en cada alumno, repetimos el mismo dato 500 veces.
En cambio, podemos guardar el curso una sola vez:
cursos id | nombre 1 | Programación alumnos id | nombre | curso_id 1 | Ana | 1 2 | Juan | 1
El valor curso_id = 1 significa que ambos alumnos apuntan al mismo curso. Si el nombre del curso cambia, se modifica una sola fila.
Relaciones entre tablas
Las relaciones principales son:
- uno a uno: un registro se relaciona con uno;
- uno a muchos: un registro se relaciona con muchos;
- muchos a muchos: varios registros de una tabla se relacionan con varios de otra.
Concurrencia e integridad
Una de las grandes diferencias frente a guardar información en archivos sueltos es que un SGBD está preparado para que varios usuarios trabajen al mismo tiempo.
Además, puede hacer cumplir reglas. Por ejemplo, puede impedir que dos usuarios tengan el mismo email si definimos una restricción UNIQUE, o evitar que un alumno apunte a un curso inexistente mediante una clave foránea.
Persistencia y transacciones
Los datos sobreviven al cierre de la aplicación porque se almacenan de forma persistente. Y cuando una operación requiere varios pasos, las transacciones permiten tratarlos como una sola unidad: o se completan todos o se deshacen.
Ventajas de una base de datos relacional
- organización clara;
- menos duplicación innecesaria;
- integridad mediante claves y restricciones;
- consultas potentes;
- seguridad;
- transacciones;
- mantenimiento más sencillo;
- capacidad para manejar grandes volúmenes de información.
Tipos de instrucciones SQL
SQL suele dividirse conceptualmente en grupos:
- DDL: define estructuras. Ejemplo:
CREATE TABLE. - DML: modifica datos. Ejemplo:
INSERT,UPDATE,DELETE. - DQL: consulta datos. Principalmente
SELECT. - TCL: controla transacciones. Ejemplo:
COMMIT,ROLLBACK. - DCL: administra permisos y accesos.
Crear nuestra primera base
CREATE DATABASE colegio; USE colegio;
Crear una tabla
CREATE TABLE alumnos (
id INT AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(100),
apellido VARCHAR(100),
edad INT,
email VARCHAR(150)
);
Insertar un registro
INSERT INTO alumnos (nombre, apellido, edad, email) VALUES ('Ana', 'Pérez', 22, 'ana@email.com');
Consultar datos
SELECT * FROM alumnos;
El asterisco indica que queremos todas las columnas.
Modificar datos
UPDATE alumnos SET edad = 23 WHERE id = 1;
Eliminar datos
DELETE FROM alumnos WHERE id = 1;
CRUD
Estas cuatro operaciones fundamentales se conocen como CRUD:
- Create: crear;
- Read: leer;
- Update: modificar;
- Delete: eliminar.
Ejercicio práctico
Creá una base llamada biblioteca y una tabla libros con:
- id;
- título;
- autor;
- año;
- disponible.
¿Qué sigue?
En la próxima guía vamos a aprender a consultar datos con SELECT, aplicar filtros con WHERE y ordenar resultados.
¿Te sirvió esta guía? ☕
Si este contenido te ayudó y querés apoyar a Club Programador para seguir publicando ejercicios, proyectos y guías gratuitas, podés colaborar mediante:
Ruta SQL / MySQL
Ver todos los contenidos de SQL / MySQL
Descubre más desde Club Programador
Suscríbete y recibe las últimas entradas en tu correo electrónico.
Un comentario en “Introducción a SQL y MySQL: bases de datos, tablas, registros y consultas desde cero”