SQL
Describes la respuesta que quieres; la base de datos decide cómo obtenerla.
- Primera versión
- 1974 (standardized 1986)
- Creado por
- Donald Chamberlin and Raymond Boyce, at IBM
- Tipado
- Declarativo, con un esquema estático y columnas tipadas
- Extensiones de archivo
- .sql
Para qué sirve
Hazle una pregunta a datos estructurados y la respuesta es casi seguro SQL. Ha sostenido esa posición durante cincuenta años frente a intentos repetidos de reemplazarlo. Lo que lo distingue es que es declarativo. Dices qué quieres y un planificador de consultas resuelve cómo: qué índice usar, qué orden de joins sale más barato, si escanear o ir directo al dato. Describes un resultado, no un procedimiento.
Esa indirección es todo el trato. Es la razón por la que la misma consulta sigue funcionando mientras los datos crecen y los índices cambian. Y también es la razón por la que la habilidad que separa el SQL competente del SQL bueno es saber qué va a hacer el planificador con lo que escribiste. EXPLAIN es la herramienta que convierte las conjeturas en ingeniería.
La ola NoSQL de los 2010 sostenía que las bases de datos relacionales no iban a escalar. Una década después, la industria concluyó en su mayoría que sí quería transacciones y joins. SQL absorbió en el camino las mejores ideas de la competencia — columnas JSON, funciones de ventana y búsqueda de texto completo — y hoy aparece en data warehouses, motores de analítica y procesadores de streams sin ninguna base de datos tradicional a la vista.
De dónde viene
Edgar Codd publicó el modelo relacional en IBM en 1970. Donald Chamberlin y Raymond Boyce construyeron SEQUEL sobre él en 1974, buscando algo más accesible que el álgebra relacional que tenía debajo. El nombre se acortó a SQL por temas de marca registrada. System R de IBM fue la primera implementación, y Oracle le ganó a IBM la carrera al lanzamiento comercial en 1979.
ANSI lo estandarizó en 1986 e ISO en 1987. El estándar ha crecido de forma sostenida desde entonces. SQL-92 sigue siendo la versión contra la que se miden la mayoría de los dialectos, con las consultas recursivas llegando en SQL:1999, las funciones de ventana en SQL:2003 y JSON más tarde.
Nada de eso eliminó los dialectos. Cada motor tiene sus propias extensiones, su propio manejo de fechas y sus propias opiniones, así que SQL se entiende mejor como una familia de lenguajes muy emparentados. El contenido de aquí está escrito y verificado contra SQLite, que es a la vez el motor más desplegado del mundo y el más fácil de comprobar.
Cómo se siente teclearlo
SQL es el bicho raro del grupo. Las palabras clave van en mayúsculas por convención, así que pasas tramos enteros de caracteres con shift apretado que ningún otro lenguaje te pide. Los identificadores largos, las referencias tabla.columna con punto y los paréntesis muy anidados de las subconsultas lo vuelven una prueba de precisión sostenida más que de velocidad.
116 pasos en 6 tours, desde lo básico hasta programas completos.
Los tours
- Fundamentos del lenguajeSELECT y todo lo que lo rodea de inmediato. 23 pasos.
- Joins y agregaciónDonde SQL empieza a valer la pena aprenderlo en serio. 22 pasos.
- Analítica y reportesLas herramientas para preguntas que no caben en una sola consulta plana. 24 pasos.
- Esquema y restriccionesDiseñar el esquema en vez de consultarlo. 16 pasos.
- Planes y rendimientoLeer EXPLAIN, que es la diferencia entre adivinar y saber. 17 pasos.
- JSON y búsquedaSQL absorbió las mejores ideas de las bases de datos de documentos en lugar de perder contra ellas. 14 pasos.
Documentación oficial
- Sintaxis SQL de SQLite
- Planificador de consultas de SQLite
- Referencia SQL de PostgreSQL
- Manual de referencia de MySQL
- Use The Index, Luke