# SQL

> El lenguaje para hacerle preguntas a una base de datos.

- Nivel: Básico
- Temas: Datos, Software
- URL: https://tidbit.legios.com.ar/es/sql/
- En inglés: [SQL](https://tidbit.legios.com.ar/sql/)

**SQL** (Structured Query Language, lenguaje de consulta estructurado) es el lenguaje para hablar con bases de datos relacionales. No le decís a la base cómo encontrar los datos paso a paso; describís lo que querés y la base se encarga de buscar la forma más rápida de conseguirlo. Por eso unas pocas líneas de SQL pueden responder una pregunta sobre millones de filas.

Una consulta se lee casi como una oración en inglés: `SELECT nombre, ciudad FROM clientes WHERE pais = 'AR' ORDER BY nombre;` pide el nombre y la ciudad de cada cliente de Argentina, en orden alfabético. Otros comandos agregan filas (`INSERT`), las cambian (`UPDATE`) o las borran (`DELETE`). `JOIN` combina tablas que se apuntan entre sí, como los pedidos con los clientes que los hicieron, y `GROUP BY` resume, como el total de ventas por mes.

SQL es de los años 70 y sigue en todos lados: PostgreSQL, MySQL, SQLite (la base que tienen adentro la mayoría de los celulares) y las grandes herramientas de análisis como Amazon Athena o un data warehouse. Cada motor agrega sus propios extras, lo que se llama un dialecto, pero el núcleo es el mismo, así que aprenderlo una vez rinde durante décadas. Además es una de las habilidades más útiles fuera de la ingeniería: analistas, gente de producto y de marketing lo usan para responder sus propias preguntas.

## Una analogía

Pedir en un restaurante. Decís qué querés ('el bife, a punto, sin papas'), no cómo cocinarlo; la cocina (el motor de la base) decide los pasos.

## Para quedarse

- SQL es declarativo: describís el resultado y la base decide cómo conseguirlo.
- `SELECT` lee datos; `INSERT`, `UPDATE` y `DELETE` los cambian.
- `JOIN` combina tablas relacionadas y `GROUP BY` las resume.
- Cada motor tiene su dialecto, pero lo básico funciona casi en todos.

## Para seguir leyendo

- [¿Qué es SQL? (AWS)](https://aws.amazon.com/es/what-is/sql/)
- [SQL en Wikipedia](https://es.wikipedia.org/wiki/SQL)
- [El lenguaje SQL, tutorial de PostgreSQL (en inglés)](https://www.postgresql.org/docs/current/tutorial-sql.html)

## Términos relacionados

- [Base de datos](https://tidbit.legios.com.ar/es/database/): Un depósito ordenado de datos que los programas consultan y actualizan sin riesgo.
- [Amazon Athena](https://tidbit.legios.com.ar/es/amazon-athena/): Corré SQL directo sobre archivos guardados en S3, sin armar ninguna base de datos.
- [Data warehouse](https://tidbit.legios.com.ar/es/data-warehouse/): Una base hecha para analizar: años de historia, de muchas fuentes, en un solo lugar.
