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.

En MySQL y MariaDB, || 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:

PostgreSQL en tu navegador · Ctrl+Enter para ejecutar · los cambios se deshacen al terminar
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:

PostgreSQL en tu navegador · Ctrl+Enter para ejecutar · los cambios se deshacen al terminar
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.