Key Concepts
- SQL (Structured Query Language): Lenguaje para consultar y manipular bases de datos relacionales.
- Bases de datos relacionales: Bases de datos que organizan la información en tablas relacionadas entre sí.
- Extracción de datos: Proceso de obtener información específica de una base de datos.
- SQLite: Base de datos embebida, ligera y compatible con el estándar SQL, utilizada para el tutorial.
- DB Browser for SQLite: Interfaz gráfica para interactuar con bases de datos SQLite.
- Northwind: Base de datos de ejemplo utilizada para el tutorial, que simula una empresa de compraventa de alimentos.
- Cláusulas SQL: Componentes de las sentencias SQL, como
SELECT,FROM,WHERE,ORDER BY,GROUP BY,HAVING,JOIN,UNION,INTERSECT,EXCEPT. - Funciones de agregación: Funciones que realizan cálculos sobre un conjunto de valores, como
COUNT,SUM,AVG,MIN,MAX. - Subconsultas: Consultas SQL anidadas dentro de otras consultas.
- Operaciones de conjuntos: Operaciones que combinan los resultados de varias consultas, como unión, intersección y diferencia.
- Joins (INNER, LEFT, RIGHT, FULL): Mecanismos para combinar datos de múltiples tablas basadas en relaciones lógicas.
- Alias: Nombres alternativos asignados a tablas o columnas para simplificar las consultas.
1. Fundamentos del Lenguaje SQL
- SQL (Structured Query Language) es un lenguaje estructurado de consultas utilizado para extraer información de bases de datos relacionales.
- Es una habilidad indispensable para programadores y profesionales que trabajan con datos en áreas como marketing y finanzas.
- SQL es una inversión a largo plazo, ya que el estándar básico se mantiene constante a lo largo del tiempo.
- El tutorial se centra en la extracción de datos, es decir, en la creación de consultas para obtener información simple o compleja.
- Se utilizará SQLite como base de datos, pero los conocimientos adquiridos son aplicables a otros gestores como MySQL, SQL Server, Oracle, PostgreSQL, etc.
- La base de datos de ejemplo Northwind, creada por Microsoft, simula una empresa de compraventa de alimentos con ventas a nivel mundial.
2. Montaje del Entorno de Trabajo con SQLite
- SQLite es una base de datos gratuita, open source, rápida y pequeña, compatible con el estándar SQL.
- Se utilizará DB Browser for SQLite como interfaz gráfica para interactuar con la base de datos.
- El proceso de instalación de DB Browser for SQLite es sencillo y rápido, disponible para Windows, macOS y Linux.
- La base de datos Northwind se descargará y abrirá con DB Browser for SQLite para explorar su estructura y contenido.
3. Estructura de la Base de Datos Northwind
- La base de datos Northwind contiene varias tablas relacionadas entre sí, cada una con información sobre una parte del negocio.
- Las tablas principales son:
- Products: Información de los productos (nombre, proveedor, categoría).
- Suppliers: Información de los proveedores.
- Categories: Información de las categorías de productos.
- Customers: Información de los clientes.
- Orders: Información de los pedidos (fecha, cliente, empleado, transportista).
- Employees: Información de los empleados.
- Shippers: Información de las empresas de transporte.
- Order Details: Detalles de cada pedido (producto, precio, cantidad, descuento).
- Las relaciones entre las tablas se establecen a través de claves externas (foreign keys).
- La tabla Employees tiene una relación consigo misma a través del campo "ReportsTo", que indica quién es el jefe de cada empleado.
4. Consultas de Selección Básicas (SELECT, FROM, WHERE, ORDER BY)
- La cláusula
SELECTse utiliza para especificar los campos que se quieren obtener de la base de datos. - El asterisco (*) se utiliza para seleccionar todos los campos de una tabla.
- La cláusula
FROMse utiliza para especificar la tabla de la que se quieren obtener los datos. - La cláusula
WHEREse utiliza para filtrar los resultados de la consulta, especificando una o varias condiciones. - Las condiciones se componen de un campo, un operador (igual, mayor, menor, etc.) y un valor.
- Se pueden combinar varias condiciones con los operadores lógicos
AND(y) yOR(o). - Existen operadores especiales para las comparaciones en la cláusula
WHERE:LIKE: Para buscar cadenas de texto con patrones (ej:WHERE city LIKE '%London%').BETWEEN: Para buscar valores dentro de un rango (ej:WHERE orderDate BETWEEN '2023-01-01' AND '2023-03-31').IS NULL/IS NOT NULL: Para buscar registros con un campo vacío (nulo) o no vacío.
- La cláusula
ORDER BYse utiliza para ordenar los resultados de la consulta por uno o varios campos, en orden ascendente (ASC) o descendente (DESC). - Se puede concatenar cadenas de texto con el operador
||(doble barra vertical). - Se puede asignar un alias a un campo con la palabra clave
AS(ej:SELECT firstName || ' ' || lastName AS fullName). - La palabra clave
DISTINCTse utiliza para obtener solo los valores únicos de un campo.
5. Consultas Multi-Tabla (JOIN)
- Para obtener información de varias tablas relacionadas, se utiliza la cláusula
JOIN. - Existen diferentes tipos de
JOIN:INNER JOIN: Devuelve solo los registros que coinciden en ambas tablas.LEFT JOIN(oLEFT OUTER JOIN): Devuelve todos los registros de la tabla de la izquierda (la primera tabla mencionada en la consulta) y los registros coincidentes de la tabla de la derecha. Si no hay coincidencia, los campos de la tabla de la derecha serán nulos.RIGHT JOIN(oRIGHT OUTER JOIN): Devuelve todos los registros de la tabla de la derecha y los registros coincidentes de la tabla de la izquierda. Si no hay coincidencia, los campos de la tabla de la izquierda serán nulos. (No soportado en SQLite)FULL JOIN(oFULL OUTER JOIN): Devuelve todos los registros de ambas tablas, independientemente de si hay coincidencia o no. (No soportado en SQLite)
- La cláusula
ONse utiliza para especificar la condición de unión entre las tablas, es decir, los campos que se utilizan para relacionarlas. - Se pueden utilizar alias para las tablas para simplificar la consulta (ej:
FROM Customers AS c JOIN Orders AS o ON c.customerID = o.customerID). - En caso de ambigüedad (campos con el mismo nombre en varias tablas), es necesario especificar la tabla a la que pertenece el campo (ej:
SELECT c.customerID, o.orderDate).
6. Subconsultas
- Las subconsultas son consultas SQL anidadas dentro de otras consultas.
- Se pueden utilizar en la cláusula
WHEREpara filtrar los resultados de la consulta principal (ej:WHERE customerID IN (SELECT customerID FROM Orders)). - También se pueden utilizar en la cláusula
SELECTpara obtener valores calculados (ej:SELECT productName, (SELECT AVG(unitPrice) FROM Products) AS averagePrice). - Se pueden utilizar alias para las subconsultas para simplificar la consulta (ej:
SELECT productName, (SELECT AVG(unitPrice) FROM Products) AS averagePrice FROM Products AS p). - La instrucción
EXPLAIN QUERY PLANpermite analizar el plan de ejecución de una consulta y optimizar su rendimiento.
7. Operaciones de Conjuntos (UNION, INTERSECT, EXCEPT)
- Las operaciones de conjuntos permiten combinar los resultados de varias consultas que son compatibles (es decir, que tienen el mismo número de columnas y los mismos tipos de datos).
UNION: Devuelve la unión de los resultados de ambas consultas, eliminando los duplicados.UNION ALL: Devuelve la unión de los resultados de ambas consultas, incluyendo los duplicados.INTERSECT: Devuelve la intersección de los resultados de ambas consultas, es decir, solo los registros que están presentes en ambas consultas.EXCEPT(oMINUS): Devuelve la diferencia de los resultados de ambas consultas, es decir, solo los registros que están presentes en la primera consulta pero no en la segunda.
8. Funciones de Agregación y Agrupamiento (COUNT, SUM, AVG, MIN, MAX, GROUP BY, HAVING)
- Las funciones de agregación realizan cálculos sobre un conjunto de valores y devuelven un único valor.
- Las funciones de agregación estándar son:
COUNT: Cuenta el número de registros.SUM: Suma los valores de un campo.AVG: Calcula el promedio de los valores de un campo.MIN: Obtiene el valor mínimo de un campo.MAX: Obtiene el valor máximo de un campo.
- La cláusula
GROUP BYse utiliza para agrupar los resultados de la consulta por uno o varios campos. - Todos los campos que no estén en una función de agregación deben estar en la cláusula
GROUP BY. - La cláusula
HAVINGse utiliza para filtrar los resultados de la consulta después de haberlos agrupado, especificando una o varias condiciones sobre los campos agregados. - La cláusula
WHEREse utiliza para filtrar los resultados de la consulta antes de agruparlos.
9. Conclusión
El tutorial proporciona una base sólida para comprender y utilizar SQL para extraer información de bases de datos relacionales. Se cubren los conceptos fundamentales, desde las consultas básicas hasta las consultas multi-tabla, las subconsultas, las operaciones de conjuntos y las funciones de agregación. Se utiliza SQLite como base de datos de ejemplo, pero los conocimientos adquiridos son aplicables a otros gestores de bases de datos. Se anima al usuario a practicar y profundizar en el lenguaje SQL para aprovechar al máximo su potencial.
AI summaries can miss context or contain errors. Check important details against the original video.