Published on

Guia de SQL, Cheat Sheet

Authors
sql

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.