SQL
SQL
Historia y evolución
La historia de SQL está estrechamente vinculada al desarrollo de las bases de datos relacionales:
Orígenes
1970: El Dr. Edgar F. Codd publica su influyente paper "A Relational Model of Data for
Large Shared Data Banks", estableciendo las bases teóricas para las bases de datos
relacionales.
1974-1975: IBM desarrolla SEQUEL como implementación del modelo relacional de
Codd en el proyecto System R.
1979: Relational Software Inc. (ahora Oracle Corporation) lanza la primera base de datos
relacional comercial que utilizaba SQL.
Estandarización y evolución
Esta evolución constante ha permitido que SQL se adapte a las cambiantes necesidades de
almacenamiento y procesamiento de datos durante más de cuatro décadas.
Características fundamentales
Lenguaje declarativo
SQL implementa los conceptos del álgebra relacional propuesta por Codd, trabajando con
conjuntos de datos (tablas) mediante operaciones como selección, proyección, unión, diferencia
y producto cartesiano.
Independencia de datos
Integridad de datos
Transacciones ACID
SQL soporta transacciones que cumplen con las propiedades ACID (Atomicidad, Consistencia,
Aislamiento y Durabilidad), fundamentales para aplicaciones críticas como sistemas bancarios o
de reservas.
Componentes principales de SQL
SQL se divide en varios sublenguajes, cada uno con funciones específicas:
-- Modificación de estructura
ALTER TABLE clientes ADD COLUMN telefono VARCHAR(15);
-- Eliminación de estructura
DROP TABLE clientes;
-- Inserción de datos
INSERT INTO productos (nombre, precio, categoria)
VALUES ('Laptop Pro', 1299.99, 'Electrónica');
-- Actualización de datos
UPDATE productos
SET precio = precio * 1.10
WHERE categoria = 'Electrónica';
-- Eliminación de datos
DELETE FROM productos
WHERE fecha_caducidad < CURRENT_DATE;
Aunque técnicamente parte de DML, las operaciones de consulta son tan fundamentales que a
menudo se consideran un sublenguaje propio:
-- Consulta básica
SELECT producto, SUM(ventas) AS total_ventas
FROM ventas
WHERE fecha BETWEEN '2023-01-01' AND '2023-12-31'
GROUP BY producto
HAVING SUM(ventas) > 10000
ORDER BY total_ventas DESC;
DCL (Data Control Language)
-- Otorgar permisos
GRANT SELECT, INSERT ON ventas TO usuario_analista;
-- Revocar permisos
REVOKE DELETE ON clientes FROM usuario_temporal;
-- Operaciones DML
UPDATE cuentas SET saldo = saldo - 1000 WHERE id = 1;
UPDATE cuentas SET saldo = saldo + 1000 WHERE id = 2;
-- Confirmar cambios
COMMIT;
Características avanzadas
Joins (Uniones)
-- Inner join
SELECT p.nombre, c.nombre AS categoria
FROM productos p
INNER JOIN categorias c ON p.categoria_id = c.id;
-- Left join
SELECT c.nombre, COUNT(p.id) AS total_pedidos
FROM clientes c
LEFT JOIN pedidos p ON c.id = p.cliente_id
GROUP BY c.nombre;
Subconsultas
-- Subconsulta en WHERE
SELECT nombre, salario
FROM empleados
WHERE departamento_id IN (SELECT id FROM departamentos WHERE ubicacion =
'Madrid');
-- Subconsulta en SELECT
SELECT e.nombre,
(SELECT AVG(salario) FROM empleados WHERE departamento_id =
e.departamento_id) AS salario_promedio_depto
FROM empleados e;
Vistas
-- Procedimiento almacenado
CREATE PROCEDURE actualizar_precios(categoria_param VARCHAR, porcentaje
DECIMAL)
BEGIN
UPDATE productos
SET precio = precio * (1 + porcentaje/100)
WHERE categoria = categoria_param;
END;
-- Función
CREATE FUNCTION calcular_descuento(precio DECIMAL, nivel_cliente INT)
RETURNS DECIMAL
BEGIN
DECLARE descuento DECIMAL;
SET descuento = CASE nivel_cliente
WHEN 1 THEN precio * 0.05
WHEN 2 THEN precio * 0.10
WHEN 3 THEN precio * 0.15
ELSE 0
END;
RETURN descuento;
END;
Implementaciones populares
Aunque SQL es un estándar, cada sistema gestor de bases de datos (SGBD) tiene su propia
implementación con extensiones específicas:
Oracle Database
MySQL/MariaDB
PostgreSQL
SQLite
Aplicaciones de SQL
Sistemas transaccionales (OLTP)
Integración de datos
SQL facilita:
SQL en la nube
NewSQL
La escalabilidad de NoSQL
Las garantías ACID de los sistemas SQL tradicionales
Compatibilidad con el estándar SQL
Conclusión
SQL ha demostrado una notable longevidad y adaptabilidad como lenguaje de consulta y
manipulación de datos. A pesar del surgimiento de alternativas NoSQL y nuevos paradigmas de
almacenamiento, SQL ha mantenido su relevancia incorporando características modernas
mientras preserva sus fortalezas fundamentales: expresividad, potencia y fundamentos
matemáticos sólidos basados en el modelo relacional.
La capacidad de SQL para evolucionar, desde sus orígenes en los años 70 hasta su adaptación a
entornos cloud, big data y análisis avanzado, confirma su posición como un componente esencial
en la infraestructura tecnológica actual. Su naturaleza declarativa, que permite a los
desarrolladores centrarse en el "qué" en lugar del "cómo", sigue siendo una ventaja significativa
en un mundo donde la complejidad de los datos y sus relaciones continúa creciendo.
Como lenguaje universal para la interacción con datos estructurados, SQL seguirá siendo una
habilidad fundamental para profesionales de TI, científicos de datos y desarrolladores en el
futuro previsible, adaptándose continuamente a nuevos desafíos y casos de uso en el dinámico
panorama tecnológico.