Fundamentos y tu primer SELECT
Todo lo que has aprendido hasta ahora —HTML, CSS— vive en el navegador. SQL vive en otro sitio completamente distinto: la base de datos, el lugar donde se guardan de verdad los clientes, los productos y los pedidos de un negocio real. Hoy conoces el idioma que se usa para hablar con ella — y, a diferencia de los cursos anteriores, aquí cada consulta que escribas se va a ejecutar de verdad.
¿Qué es SQL?
SQL son las siglas de Structured Query Language — Lenguaje de Consulta Estructurado—. No sirve para diseñar una página ni para darle color: sirve para preguntarle cosas a una base de datos y para decirle qué guardar, qué cambiar y qué borrar. Si HTML es el esqueleto de una página y CSS su ropa, SQL es el archivador gigante en la trastienda donde vive la información real — y tú acabas de recibir la llave.
Una base de datos se organiza en tablas, y cada tabla se parece sospechosamente a una hoja de cálculo: filas y columnas. Cada fila es un registro (un cliente, un producto), cada columna es un dato de ese registro (su nombre, su ciudad, su precio).
Todos los playgrounds de SQL de aquí en adelante ejecutan tus consultas de verdad, contra una base de datos de ejemplo que corre en tu propio navegador (gracias a SQLite compilado a WebAssembly — nada se envía a ningún servidor). Usaremos siempre la misma tienda de ejemplo, para que puedas ir conociéndola mejor módulo a módulo.
La base de datos de ejemplo: una tienda
A partir de aquí trabajaremos siempre con las mismas tres tablas, la base de datos de una tienda de electrónica pequeña. Consúltalas cuando te pierdas — volverás a ver este esquema en cada módulo.
clientes
- id — INTEGER, clave primaria
- nombre — TEXT
- ciudad — TEXT
- email — TEXT
productos
- id — INTEGER, clave primaria
- nombre — TEXT
- categoria — TEXT
- precio — REAL
- stock — INTEGER
pedidos
- id — INTEGER, clave primaria
- cliente_id — INTEGER (→ clientes)
- producto_id — INTEGER (→ productos)
- cantidad — INTEGER
- fecha — TEXT
Tu primera consulta: SELECT
SELECT es, con diferencia, el comando que más vas a
escribir en tu vida con SQL: sirve para pedir datos. Se combina
siempre con FROM, que dice de qué tabla los quieres.
El asterisco * significa "todas las columnas".
Prueba a cambiar el asterisco por columnas concretas, separadas por comas, para pedir solo lo que necesitas:
Usar SELECT * en un proyecto real cuando solo
necesitas dos columnas. Funciona, pero le pides a la base de datos que mueva
más datos de los necesarios — en una tabla con millones de filas, la diferencia
de rendimiento es real. Pide siempre solo lo que vayas a usar.
SELECT DISTINCT: sin duplicados
Si le pides ciudad a la tabla de clientes, vas a ver
"Córdoba" repetida tantas veces como clientes tengan esa ciudad. Añadiendo
DISTINCT justo después de SELECT,
le pides al motor que elimine las filas duplicadas del resultado.
Comentarios en SQL
Igual que en HTML y CSS, en SQL puedes dejar notas que el motor ignora por completo. Hay dos formas:
Comenta el resto de la línea, desde los dos guiones hasta el final. La forma más habitual para una nota rápida.
Comenta un bloque, aunque ocupe varias líneas. Útil para desactivar temporalmente un trozo de consulta mientras pruebas.
Sintaxis y buenas costumbres
- SQL no distingue mayúsculas de minúsculas en sus palabras clave:
selectySELECTfuncionan igual. Aun así, la convención (y la que seguiremos en este curso) es escribir las palabras clave en mayúsculas — se lee muchísimo mejor entre los nombres de tus tablas y columnas. - Cada sentencia termina con punto y coma
;. En muchos motores es opcional si solo hay una consulta, pero acostúmbrate desde ya: en cuanto encadenes varias, es obligatorio. - Los nombres de tabla y columna, en minúsculas y sin espacios (usa guion bajo:
cliente_id, nocliente id).
Ponlo a prueba
Comprueba lo que has aprendido
1. ¿Qué hace exactamente SELECT * FROM productos;?
2. ¿Para qué sirve DISTINCT?
3. ¿Cuál de estas es una forma válida de comentar en SQL?