SQL
¿Qué es SQL?
SQL (Structured Query Language) es un lenguaje de consulta estructurado que se utiliza para gestionar y manipular bases de datos relacionales. Permite realizar tareas como la consulta, inserción, actualización y eliminación de datos, así como la creación y gestión de esquemas de bases de datos.
Conceptos Clave
1. Base de Datos Relacional
Una base de datos relacional almacena los datos en tablas compuestas por filas y columnas. Cada tabla está relacionada con otras mediante claves.
2. Tablas
Las tablas son el componente principal de las bases de datos relacionales. Una tabla se compone de:
- Filas: Cada fila representa un registro.
- Columnas: Cada columna representa un atributo o campo del registro.
3. Llave Primaria (Primary Key)
Es un campo (o combinación de campos) que identifica de manera única cada registro en una tabla. No puede haber valores duplicados o nulos en una llave primaria.
4. Llave Foránea (Foreign Key)
Es un campo que crea una relación entre dos tablas. Apunta a la llave primaria de otra tabla, creando una conexión entre los datos.
Operaciones Básicas en SQL
1. SELECT: Consultar Datos
La instrucción SELECT se utiliza para recuperar datos de una tabla.
SELECT columna1, columna2
FROM tabla
WHERE condición;
Ejemplo:
SELECT nombre, edad
FROM empleados
WHERE edad > 30;
2. INSERT INTO: Insertar Datos
La instrucción INSERT INTO se utiliza para agregar nuevos registros en una tabla.
INSERT INTO tabla (columna1, columna2)
VALUES (valor1, valor2);
Ejemplo:
INSERT INTO empleados (nombre, edad)
VALUES ('Juan', 35);
3. UPDATE: Actualizar Datos
La instrucción UPDATE modifica registros existentes en una tabla.
UPDATE tabla
SET columna1 = valor1
WHERE condición;
Ejemplo:
UPDATE empleados
SET edad = 36
WHERE nombre = 'Juan';
4. DELETE: Eliminar Datos
La instrucción DELETE elimina registros de una tabla.
DELETE FROM tabla
WHERE condición;
Ejemplo:
DELETE FROM empleados
WHERE nombre = 'Juan';
Funciones de Agregación
SQL también incluye funciones para realizar operaciones sobre grupos de registros. Algunas funciones comunes son:
COUNT(): Cuenta el número de filas.SUM(): Calcula la suma de valores numéricos.AVG(): Calcula el promedio.MAX(): Devuelve el valor máximo.MIN(): Devuelve el valor mínimo.
Ejemplo:
SELECT COUNT(*), AVG(edad)
FROM empleados;
Joins: Unir Tablas
Los joins se utilizan para combinar filas de dos o más tablas, basándose en una relación entre ellas.
1. INNER JOIN
Devuelve las filas que tienen coincidencias en ambas tablas.
SELECT columnas
FROM tabla1
INNER JOIN tabla2 ON tabla1.columna = tabla2.columna;
Ejemplo:
SELECT empleados.nombre, departamentos.nombre
FROM empleados
INNER JOIN departamentos ON empleados.departamento_id = departamentos.id;
2. LEFT JOIN
Devuelve todas las filas de la tabla izquierda y las coincidencias de la tabla derecha. Si no hay coincidencias, los resultados de la tabla derecha serán NULL.
SELECT columnas
FROM tabla1
LEFT JOIN tabla2 ON tabla1.columna = tabla2.columna;
3. RIGHT JOIN
Es el opuesto de LEFT JOIN. Devuelve todas las filas de la tabla derecha y las coincidencias de la tabla izquierda.
4. FULL OUTER JOIN
Devuelve todas las filas cuando hay coincidencias en cualquiera de las tablas o en ambas.
SELECT columnas
FROM tabla1
FULL OUTER JOIN tabla2 ON tabla1.columna = tabla2.columna;
Creación y Gestión de Tablas
1. CREATE TABLE: Crear una tabla
CREATE TABLE tabla (
columna1 tipo_dato restricción,
columna2 tipo_dato restricción,
...
);
Ejemplo:
CREATE TABLE empleados (
id INT PRIMARY KEY,
nombre VARCHAR(100),
edad INT,
departamento_id INT,
FOREIGN KEY (departamento_id) REFERENCES departamentos(id)
);
2. ALTER TABLE: Modificar una Tabla
Se utiliza para añadir, modificar o eliminar columnas en una tabla existente.
- Añadir una columna:
ALTER TABLE tabla
ADD columna tipo_dato;
- Modificar una columna:
ALTER TABLE tabla
MODIFY columna tipo_dato;
- Eliminar una columna:
ALTER TABLE tabla
DROP COLUMN columna;
3. DROP TABLE: Eliminar una Tabla
Este comando elimina una tabla y todos sus datos.
DROP TABLE tabla;
Índices
Un índice mejora la velocidad de las consultas a la base de datos. Los índices pueden crearse en una o varias columnas.
CREATE INDEX nombre_indice
ON tabla (columna);
Ejemplo:
CREATE INDEX idx_nombre
ON empleados (nombre);
Cláusulas Útiles
1. GROUP BY
Agrupa filas que tienen los mismos valores en columnas especificadas.
SELECT columna, COUNT(*)
FROM tabla
GROUP BY columna;
Ejemplo:
SELECT departamento_id, COUNT(*)
FROM empleados
GROUP BY departamento_id;
2. ORDER BY
Ordena los resultados de la consulta en un orden específico, ya sea ascendente (ASC) o descendente (DESC).
SELECT columna1, columna2
FROM tabla
ORDER BY columna1 ASC;
Ejemplo:
SELECT nombre, edad
FROM empleados
ORDER BY edad DESC;
3. HAVING
Filtra los grupos creados por GROUP BY.
SELECT columna, COUNT(*)
FROM tabla
GROUP BY columna
HAVING COUNT(*) > valor;
Ejemplo:
SELECT departamento_id, COUNT(*)
FROM empleados
GROUP BY departamento_id
HAVING COUNT(*) > 5;
Conclusión
SQL es una herramienta poderosa para gestionar bases de datos relacionales. Permite realizar una gran variedad de operaciones, desde la creación de tablas hasta consultas complejas que involucran múltiples tablas. Dominar SQL es esencial para trabajar con grandes volúmenes de datos de manera eficiente.