- Published on
Guia de SQL, Cheat Sheet
- Authors
- Name
- Cristian Gallegos
- @CrisDevW
Intro
SQL es una de las habilidades más demandada en la industria actual y es una excelente opción. Aprender SQL te brinda una base sólida para diversas carreras, ya sea como Backend Developer, Data Scientist, o inclusive Business Intelligence Analyst.
En la actualidad, era impulsada por datos, las bases de datos se han vuelto fundamentales para el almacenamiento, gestión y análisis de información. Dominar SQL te permitirá interactuar con estas, realizar consultas sofisticadas y extraer información valiosa que impulsará la toma de decisiones informadas en diferentes industrias.
Sea el motivo o razón, hay algo que debemos tener en cuenta y sin importar el tiempo que nos tome es no dedicarle todo el tiempo a los tutoriales de la plataforma que sea, esto quiere decir, tenemos que crear una aplicación con lo que tenemos y los mismos contratiempo y búsqueda de información faltante, es lo que nos ayuda a crecer. Por tanto, esto intenta ser una guía de dicha información.
Contenido
Definiciones
Crear y borrar bases de datos
Crear tablas
Comentarios
Insertar, actualizar y borrar datos
Consulta de datos
Consulta de múltiples tablas
Agrupando datos
Funciones de agregación
Crear y borrar índex
Crear vistas
Condicionales
Subconsultas
Comodines
Definiciones
SQL (Structured Query Language): Un lenguaje para consultar y manipular datos.
Datos: La información que se almacena en la base de datos.
Base de datos: Una colección de datos.
Esquema: La estructura de la base de datos. Las tablas, vistas, índices, etc.
Tabla: Una colección de datos organizados en filas y columnas.
Fila: Un registro individual en una tabla.
Columna: Un campo individual en una tabla.
Clave primaria: Un identificador único para una fila en una tabla.
Clave externa: Un campo en una tabla que es una clave primaria en otra tabla.
Vista: Una tabla virtual que es el resultado de una consulta.
Índice: Una estructura de datos que mejora la velocidad de recuperación de datos.
Consulta: Una solicitud de datos o información de una tabla de base de datos o combinación de tablas.
Servidor de base de datos: Un programa que se ejecuta en una computadora y administra la base de datos.
Sistema de gestión de bases de datos: Un programa que gestiona la base de datos.
Administrador de base de datos: Una persona que administra la base de datos.
Desarrollador de base de datos: Una persona que crea y mantiene la base de datos.
Usuario de base de datos: Una persona que utiliza la base de datos.
Crear y borrar bases de datos
CREATE DATABASE
Se usa para crear la base de datos.
CREATE DATABASE nombre_db;
DROP DATABASE
Se usa para borrar la base de datos.
DROP DATABASE nombre_db;
Crear tablas
CREATE TABLE
Usado para crear una nueva tabla dentro de una base de datos.
CREATE TABLE nombre_tabla (
nombre_col1 datatype,
nombre_col2 datatype,
...
);
ALTER TABLE
Usado para agregar, eliminar o modificar una columna existente dentro de una tabla.
ALTER TABLE nombre_tabla
ADD nombre_col datatype;
ALTER TABLE nombre_tabla
DROP COLUMN nombre_col;
ALTER TABLE nombre_tabla
ALTER COLUMN nombre_col datatype;
DROP TABLE
Usado para borrar la tabla.
DROP TABLE nombre_tabla;
Comentarios
Comentarios de una línea usa (-) y con múltiples líneas es necesario empezar con /_ y terminar _/
-- Comentario de una línea
/* Comentario
de múltiples
líneas
*/
Insertar, actualizar y borrar datos
INSERT sirve para ingresar datos nuevos en una tabla.
INSERT INTO nombre_tabla (col1, col2, ...)
VALUES (val1, val2, ...)
UPDATE se utiliza para actualizar o modificar datos existentes en una tabla.
UPDATE nombre_tabla
SET col1 = val1, col2 = val2,...
WHERE condición;
DELETE se usa para borrar valores de una tabla.
DELETE FROM nombre_tabla
WHERE condición;
Consulta de datos
SELECT usado para consultar dentro de la base de datos.
SELECT col1, col2,...
FROM nombre_tabla;
WHERE hace de filtro para los valores.
SELECT col1, col2, ...
FROM nombre_tabla
WHERE condición;
AND / OR utilizados para filtrar bajo más de una condición.
SELECT col1, col2, ...
FROM nombre_tabla
WHERE condicion1 AND condicion2;
SELECT col1, col2, ...
FROM nombre_tabla
WHERE condicion1 OR condicion2;
ORDER BY / ASC-DESC es usado para ordenar los valores de manera ascendente o descendente.
SELECT col1, col2, ...
FROM nombre_tabla
ORDER BY col1, col2, ASC|DESC;
-- puede ser ASC O DESC no ambos
DISTINCT utilizada para retornar valores, evitando los duplicados.
SELECT DISTINCT col1, col2, ...
FROM nombre_tabla;
IS NULL indica si un valor no existe.
SELECT col1, col2, ...
FROM nombre_tabla
WHERE column IS NULL;
IN permite especificar multiples valores dentro del WHERE.
SELECT col1 , col2, ...
FROM nombre_tabla
WHERE column IN (val1, val2, ...)
LIKE de igual manera se usa en el WHERE para buscar patrones específicos en una columna.
SELECT col1, col2, ...
FROM nombre_tabla
WHERE columna LIKE patrón;
BETWEEN filtra resultados dentro de un rango establecido.
SELECT col1, col2, ...
FROM nombre_tabla
WHERE column BETWEEN val1 AND val2;
AS (alias) usado para ingresar un nombre temporal, ya sea de una tabla o columna.
SELECT col1 AS alias1, col2 AS alias2, ...
FROM nombre_tabla AS alias3;
DATE se emplea para almacenar una fecha (año, mes, día).
SELECT col1, col2, ...
FROM nombre_tabla
WHERE column = DATA '2020-20-02';
Consulta de múltiples tablas
JOIN es utilizado para combinar filas de dos o más tablas, tomando una columna en común.
SELECT nombre_col(s)
FROM tabla1
INNER JOIN tabla2
ON tabla1.nombre_col = tabla2.nombre_col;
LEFT JOIN devuelve todos los registros de la tabla izquierda y los registros coincidentes de la tabla derecha. Si no hay coincidencias, los valores de la tabla derecha serán NULL.
SELECT nombre_col(s)
FROM tabla1
LEFT JOIN tabla2
ON tabla1.nombre_col = tabla2.nombre_col;
RIGHT JOIN devuelve todos los registros de la tabla derecha y los registros coincidentes de la tabla izquierda. Si no hay coincidencias, los valores de la tabla izquierda serán NULL.
SELECT nombre_col(s)
FROM tabla1
RIGHT JOIN tabla2
ON tabla1.nombre_col = tabla2.nombre_col;
FULL JOIN devuelve todos los registros de ambas tablas, coincidentes y no coincidentes. Si no hay coincidencias, los valores de la tabla izquierda o derecha serán NULL según corresponda.
SELECT nombre_col(s)
FROM tabla1
FULL JOIN tabla2
ON tabla1.nombre_col = tabla2.nombre_col;
UNION se utiliza para combinar el resultado de dos o más consultas en una única tabla de resultados. Ambas tablas deben contener la misma cantidad de columnas y tipos de datos compatibles.
SELECT nombre_col(s)
FROM tabla1
UNION
SELECT nombre_col(s)
FROM tabla2;
Agrupando datos
GROUP BY se utiliza para agrupar filas en base a una o varias columnas y realizar operaciones de agregación en los grupos resultantes.
SELECT nombre_col, funcion_agregada(nombre_col)
FROM nombre_tabla
GROUP BY nombre_col;
HAVING se usa para aplicar condiciones de filtrado a los grupos resultantes de una consulta. Ya que WHERE no puede emplear funciones agregadas múltiples.
SELECT columna1, columna2, función_agregación(columna3)
FROM tabla
GROUP BY columna1, columna2
HAVING condición;
Funciones de agregación
COUNT se utiliza para contar el número de filas que cumplen con determinadas condiciones.
SELECT COUNT(columna)
FROM tabla
WHERE condición;
SUM calcula la suma de los valores en una columna numérica.
SELECT SUM(columna) AS TotalSuma
FROM tabla
WHERE condición;
AVG se utiliza para calcular el promedio de los valores en una columna numérica.
SELECT AVG(columna) AS Promedio
FROM tabla
WHERE condición;
MIN retorna el valor mínimo en una columna.
SELECT MIN(columna) AS ValorMinimo
FROM tabla;
WHERE condition;
MAX retorna el valor máximo en una columna.
SELECT MAX(columna) AS ValorMaximo
FROM tabla;
WHERE condition;
Crear y borrar index
CREATE INDEX se utiliza para crear un índice (llave de búsqueda) en una o varias columnas de una tabla.
CREATE INDEX nombre_indice
ON nombre_tabla (columna1, columna2, ...);
DROP INDEX elimina el índice existente.
DROP INDEX nombre_indice
ON nombre_tabla;
Crear vistas
Una view (vista), es una version virtual de las tablas.
CREATE VIEW crea la vista.
CREATE VIEW nombre_vista AS
SELECT columna1, columna2, ...
FROM nombre_tabla
WHERE condición;
DROP VIEW elimina la vista.
DROP VIEW nombre_vista;
Condicionales
IF se utiliza en algunos sistemas de bases de datos específicos para realizar evaluaciones condicionales y retornar un resultado basado en las mismas.
IF condición THEN
-- código si es verdadero
ELSE
-- código si es falso
END IF;
Ejemplo en MySQL
SELECT columna1,
IF(columna2 = 'valor', 'Resultado1', 'Resultado2') AS Resultado
FROM tabla;
CASE se utiliza para realizar evaluaciones condicionales y retornar un resultado basado en esas evaluaciones.
SELECT columna1,
CASE
WHEN condición THEN 'Resultado1'
WHEN condición THEN 'Resultado2'
ELSE 'Resultado3'
END AS Resultado
FROM bombre_tabla;
IFNULL() empleado para manejar valores nulos en una expresión. Proporciona un valor de reemplazo cuando una columna o expresión es nula.
IFNULL(expresión, valor_reemplazo)
SELECT IFNULL(nombre_col, 'valor')
FROM nombre_tabla;
COALESCE() permite especificar una lista de expresiones separadas por comas y devuelve la primera expresión no nula de esa lista.
COALESCE(expresion1, expresion2, ...)
SELECT COALESCE(nombre_col, 'valor')
FROM nombre_tabla;
Subconsultas
SELECT columna1, columna2
FROM (SELECT columna3 FROM tabla2 WHERE condición) AS subconsulta;
Comodines
Recordando que LIKE se usa en el WHERE para buscar patrones.
Los "wildcards" o caracteres comodines son símbolos especiales que se utilizan para realizar coincidencias parciales en consultas de texto.
% Representa cualquier cantidad de caracteres (incluyendo cero caracteres) en una posición dentro de un valor de texto.
SELECT columna
FROM tabla
WHERE columna LIKE 'inicio%';
_ Representa un único carácter en una posición específica dentro de un valor de texto.
SELECT columna
FROM tabla
WHERE columna LIKE 'a_ex';
[] Se utiliza para especificar un conjunto de caracteres permitidos en una posición determinada dentro de un valor de texto.
SELECT columna
FROM tabla
WHERE columna LIKE 'c[aeiou]t';
Se que es una buena cantidad de información, pero la idea es absorberla poco a poco.