Saltar a contenido

SQL y bases de datos

Apuntes y ejercicios para aprender SQL, el lenguaje de las bases de datos relacionales: desde la primera consulta hasta el diseño de tablas, las uniones, las agrupaciones y las transacciones. Es el complemento de la unidad de bases de datos de las webs de lenguajes, donde se usa SQL desde Dart, Java, Kotlin y Python.

¿Y las bases de datos no relacionales?

Esta web trata de las relacionales (tablas, filas y SQL), que son las más usadas. Existen también las no relacionales (NoSQL), que guardan los datos de otra forma: documentos, pares clave-valor, columnas o grafos. La diferencia en una frase: la relacional reparte los datos en tablas unidas por claves y con un esquema fijo; la no relacional suele guardar cada elemento completo y con la forma que necesite.

Relacional No relacional
Datos Tablas con esquema fijo Documentos, clave-valor, columnas o grafos, con esquema flexible
Relaciones Claves foráneas y JOIN Datos anidados o referencias que gestiona el programa
Lenguaje SQL, el mismo (con matices) en todos los motores Uno propio en cada motor
Garantías ACID: transacciones completas A menudo BASE: se prima la velocidad y la disponibilidad
Ejemplos SQLite, MySQL, PostgreSQL, Oracle MongoDB, Redis, Cassandra, Neo4j

Ninguna es «mejor»: se elige según el problema. Lo explicamos con ejemplos ejecutados en la U7 · Bases de datos no relacionales.

Cómo está organizado

Siete unidades, de menos a más. Cada unidad tiene su teoría y, debajo, sus ejercicios, que se desbloquean al marcar la unidad como leída. En los ejercicios aparece el resultado esperado para que puedas comprobar tu consulta, y la solución modelo está bloqueada.

Unidad Contenido
U1 · Primeros pasos Qué es una base de datos, SELECT, WHERE, ordenar, limitar y funciones
U2 · Diseño de bases de datos Modelo entidad-relación, paso a tablas y normalización
U3 · Crear y modificar datos CREATE TABLE, restricciones, INSERT, UPDATE, DELETE, ALTER y DROP
U4 · Varias tablas JOIN, LEFT JOIN, UNION, INTERSECT y EXCEPT
U5 · Agrupar y subconsultas COUNT, SUM, AVG, GROUP BY, HAVING y subconsultas
U6 · SQL avanzado CASE, vistas, índices, transacciones, WITH, funciones de ventana y triggers
U7 · Bases de datos no relacionales Bases no relacionales (NoSQL): documentos, clave-valor, columnas y grafos; en qué se diferencian de las relacionales y cuándo usar cada una
Diferencias entre motores Qué cambia entre SQLite, MySQL, PostgreSQL y Oracle
Chuleta de SQL Las sentencias más usadas en una página

Resultados reales

Todos los resultados que ves en las páginas se han obtenido ejecutando el SQL de verdad sobre SQLite, con una base de datos de ejemplo de un instituto (datos ficticios). Donde otros motores (MySQL, PostgreSQL, Oracle) escriben las cosas de otra forma, se indica.

Empieza por aquí

Si nunca has escrito una consulta, empieza por 1.1 Bases de datos y SQL: ahí está la base de datos de ejemplo y cómo crearla en tu equipo.

¿Quieres ir más allá?

Activa el interruptor Avanzado de la cabecera para ver el material avanzado: ventanas a fondo, recursión, rendimiento, concurrencia y SQL moderno.