Es una de las dudas más habituales al empezar: ¿aprendo SQL, MySQL o PostgreSQL? La respuesta corta es que no son alternativas. SQL es un lenguaje; SQL Server, PostgreSQL, MySQL o SQLite son bases de datos (sistemas gestores de bases de datos, SGBD) que entienden ese lenguaje.
Es parecido a lo que pasa con el español: se habla en Madrid, en México y en Buenos Aires, y una persona de cada sitio se entiende perfectamente con las otras, aunque cada una tenga su acento y algunas palabras propias. En SQL, a cada “acento” se le llama dialecto.
Un estándar, muchos dialectos
SQL nació en IBM en los años 70 (con el nombre de SEQUEL) y se estandarizó en 1986 (ANSI) y 1987 (ISO). El estándar define el núcleo del lenguaje: SELECT, INSERT, UPDATE, DELETE, JOIN, GROUP BY, las funciones de ventana…
Cada base de datos implementa ese núcleo y añade lo suyo: funciones propias, tipos de datos, un lenguaje para escribir procedimientos y, a veces, formas distintas de escribir lo mismo. Por eso una consulta sencilla funciona igual en todas, y una más avanzada puede necesitar pequeños cambios.
SQL Server
Sintaxis de las lecciones
La base de datos de Microsoft. Muy extendida en empresas que trabajan con el ecosistema de Microsoft, de Excel y Power BI a Azure.
- Su SQL
- Transact-SQL (T-SQL)
- Dónde la encontrarás
- Banca, seguros, administraciones y aplicaciones .NET
- En este curso
- Es la referencia del curso: la sintaxis de las lecciones es T-SQL.
PostgreSQL
Motor de los editores
Código abierto, muy fiel al estándar y con extensiones potentes como PostGIS. Es la opción favorita de muchas startups y equipos de datos.
- Su SQL
- SQL de PostgreSQL, con PL/pgSQL para procedimientos
- Dónde la encontrarás
- Aplicaciones web, análisis de datos y servicios en la nube
- En este curso
- Es lo que ejecutan los editores de la página, directamente en tu navegador.
MySQL
Código abierto y propiedad de Oracle. Durante años fue la base de datos de la web: está detrás de WordPress y de buena parte de los hostings.
- Su SQL
- SQL de MySQL
- Dónde la encontrarás
- Webs, comercio electrónico y WordPress
- En este curso
- Las consultas de las lecciones funcionan casi igual; cambian detalles como LIMIT en lugar de TOP.
MariaDB
Una bifurcación de MySQL creada en 2009 por su autor original. Es compatible con MySQL en casi todo y es la opción por defecto en varias distribuciones de Linux.
- Su SQL
- SQL de MariaDB, casi idéntico al de MySQL
- Dónde la encontrarás
- Servidores Linux y webs que antes usaban MySQL
- En este curso
- Lo que aprendas para MySQL vale para MariaDB.
SQLite
Una base de datos en un solo archivo, sin servidor. Viene integrada en móviles, navegadores y miles de aplicaciones.
- Su SQL
- SQL de SQLite, sin procedimientos almacenados
- Dónde la encontrarás
- Apps móviles, navegadores, prototipos y análisis local
- En este curso
- Ideal para practicar sin instalar nada: casi todos los SELECT del curso funcionan tal cual.
Oracle Database
La base de datos comercial de Oracle, pensada para sistemas muy grandes y críticos.
- Su SQL
- SQL de Oracle, con PL/SQL para procedimientos
- Dónde la encontrarás
- Grandes empresas, telecomunicaciones y banca
- En este curso
- Los SELECT, JOIN y funciones de ventana del curso son SQL estándar y se aplican igual.
Las diferencias de sintaxis más habituales
Estas son las que más se notan al pasar de una base de datos a otra:
| Para… | SQL Server | PostgreSQL | MySQL / MariaDB | SQLite | Oracle |
|---|---|---|---|---|---|
| Limitar filas | TOP 10 |
LIMIT 10 |
LIMIT 10 |
LIMIT 10 |
FETCH FIRST 10 ROWS ONLY |
| Columna autoincremental | IDENTITY(1,1) |
GENERATED ... AS IDENTITY |
AUTO_INCREMENT |
INTEGER PRIMARY KEY |
GENERATED ... AS IDENTITY |
| Concatenar texto | + o CONCAT() |
|| o CONCAT() |
CONCAT() |
|| |
|| o CONCAT() |
| Fecha y hora actual | GETDATE() |
NOW() |
NOW() |
datetime('now') |
SYSDATE |
Sustituir un NULL |
ISNULL() |
COALESCE() |
IFNULL() |
IFNULL() |
NVL() |
| Nombres con espacios o reservados | [columna] |
"columna" |
`columna` |
"columna" |
"columna" |
| Lenguaje de procedimientos | T-SQL | PL/pgSQL | Procedimientos SQL | No tiene | PL/SQL |
Fíjate en que varias filas tienen una opción común a todas: COALESCE() funciona en las seis, igual que CURRENT_TIMESTAMP para la fecha y hora actual. Cuando existe una forma estándar, conviene usarla: el código se puede llevar de una base de datos a otra sin cambios. Lo explicamos en la lección de COALESCE.
|| no concatena: por defecto es el operador lógico OR. SELECT 'a' || 'b' devuelve 0. Usa siempre CONCAT().La misma consulta en dos dialectos
Para sacar los tres pedidos más caros, en SQL Server se escribe TOP:
SELECT TOP 3 producto, totalPrecio
FROM Pedidos
ORDER BY totalPrecio DESC;
En PostgreSQL, MySQL, MariaDB y SQLite se escribe LIMIT. Esta sí la puedes ejecutar aquí, porque los editores de la página usan PostgreSQL:
| producto | totalPrecio |
|---|---|
| Xiami Mi 11 | 4304,25 |
| Echo DOT 4 | 2999,50 |
| MacBook Pro M1 | 2449,50 |
Y existe una tercera forma, la del estándar, que funciona en SQL Server, PostgreSQL, Oracle y MariaDB:
| producto | totalPrecio |
|---|---|
| Xiami Mi 11 | 4304,25 |
| Echo DOT 4 | 2999,50 |
| MacBook Pro M1 | 2449,50 |
¿Qué SQL aprendes en este curso?
Las lecciones usan SQL Server como referencia, así que la sintaxis que verás es T-SQL. Hay dos razones: es una de las bases de datos más usadas en empresa y su documentación y herramientas (como SQL Server Management Studio) son muy completas.
Pero la mayor parte de lo que se enseña es SQL estándar y te sirve en cualquier base de datos: SELECT, JOIN, GROUP BY, las subconsultas, las CTE o las funciones de ventana. Lo que es propio de SQL Server (variables, cursores, procedimientos almacenados, TOP…) se indica en cada lección.
Los editores ejecutables usan PostgreSQL, que funciona dentro del navegador sin instalar nada. Por eso los ejemplos que puedes ejecutar están escritos para que funcionen igual en SQL Server y en PostgreSQL, y cuando algo solo existe en uno de los dos, la lección lo avisa.
¿Cuál aprender primero?
Da igual más de lo que parece: si dominas SQL en una de ellas, pasar a otra lleva días, no meses. Como orientación:
- Si vas a trabajar en una empresa concreta, aprende la que use.
- Si te interesa el análisis de datos, PostgreSQL y SQL Server están entre las más habituales, junto con los almacenes de datos en la nube (BigQuery, Snowflake), que usan dialectos muy parecidos al estándar.
- Si haces webs, MySQL o MariaDB.
- Si solo quieres practicar, SQLite: es un archivo y no necesita servidor.
En cualquier caso, empieza por el núcleo común. Es lo que recorre este curso desde la primera lección.