Hoja de trucos (Cheat Sheet) de SQL con ejemplos rápidos y sencillos



Una base de datos es una recopilación organizada de información o datos estructurados, que normalmente se almacena de forma electrónica en un sistema informático. Normalmente, una base de datos está controlada por un sistema de gestión de bases de datos (DBMS).

En conjunto, los datos y el DBMS, junto con las aplicaciones asociadas a ellos, reciben el nombre de sistema de bases de datos, abreviado normalmente a simplemente base de datos.

Los datos de los tipos más comunes de bases de datos en funcionamiento actualmente se suelen utilizar como estructuras de filas y columnas en una serie de tablas para aumentar la eficacia del procesamiento y la consulta de datos. Así, se puede acceder, gestionar, modificar, actualizar, controlar y organizar fácilmente los datos.

La mayoría de las bases de datos utilizan un lenguaje de consulta estructurada (SQL) para escribir y consultar datos.

El Lenguaje de consulta estructurada (Structured Query Language, SQL, por sus siglas en inglés), es un lenguaje gestor para el manejo de información en una base de datos relacional.

SQL es muy popular por su facilidad de uso y efectividad para convertir grandes volúmenes de datos en información útil.

Hoja de trucos (Cheat Sheet) de SQL con ejemplos rápidos y sencillos

Te puede interesar también:

Creación y gestión de bases de datos.

CREAR BASE DE DATOS

Crea una nueva base de datos.

CREATE DATABASE bank;

ELIMINAR BASE DE DATOS

Eliminar una base de datos y todo su contenido.

DROP DATABASE bank;

MOSTRAR BASES DE DATOS 

Muestre todas las bases de datos en su clúster.

SHOW DATABASES;

IF EXISTS se puede usar para evitar errores si (por ejemplo) intentamos eliminar una base de datos que no existe. IF EXISTStambién puede usarse con muchas otras sentencias SQL y combinarse con otros operadores.

Ejemplos:

DROP DATABASE IF EXISTS bank;CREATE DATABASE IF NOT EXISTS bank;

DROP DATABASE … CASCADE se puede utilizar para eliminar todos los objetos que dependen de la base de datos que se descarta. DROP DATABASE … RESTRICT se puede usar para evitar que el DROP DATABASEcomando se ejecute a menos que la base de datos esté vacía.

Ejemplos:

DROP DATABASE bank CASCADE;DROP DATABASE bank RESTRICT;

Creación de tablas y esquemas.

CREAR TABLAS

Crear una nueva tabla en la base de datos.

CREATE TABLE users (
        id UUID PRIMARY KEY,
        city STRING,
        name STRING,
        address STRING,
        credit_card STRING,
        dl STRING
);

Para cada fila de la tabla, debe especificar al menos un nombre de fila (es decir, city) y un tipo de datos (es decir, STRING). Pero también puede hacer mucho más con CREATE TABLE, como:

Defina una columna de clave principal:

CREATE TABLE users (
        id UUID PRIMARY KEY,
        city STRING,
        name STRING
);

Defina una clave principal de varias columnas:

CREATE TABLE users (
        id UUID,
        city STRING,
        name STRING,
        PRIMARY KEY (city, id)
);

Defina una clave externa que haga referencia a otra tabla en la base de datos:

(En este caso, haciendo referencia a una columna llamada cityen la tabla llamada locations).

CREATE TABLE users (
        id UUID PRIMARY KEY,
        city STRING REFERENCES locations(city),
        name STRING
);

Cree un índice basado en una columna:

CREATE TABLE users (
        id UUID PRIMARY KEY,
        city STRING,
        name STRING,
        INDEX (name)
);

Defina un valor predeterminado para una columna:

(En este caso, usando la función de CockroachDB gen_random_uuid()para generar un UUID aleatorio como valor predeterminado).

CREATE TABLE users (
        id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
        city STRING,
        name STRING
);

No permitir VALORES NULL de una columna:

CREATE TABLE users (
        id UUID NOT NULL,
        city STRING,
        name STRING
);

Cree una tabla con una columna calculada:

CREATE TABLE users (
        id UUID NOT NULL,
        city STRING,
        name STRING,
        name_and_city STRING AS (CONCAT(name, ' ', city)) STORED
);

Especifique qué sucede cuando se actualiza un objeto al que se hace referencia:

CREATE TABLE users (
        id UUID PRIMARY KEY,
        city STRING REFERENCES locations(city) ON DELETE CASCADE,
        name STRING
);

Cree una nueva tabla usando los resultados de una consulta:

CREATE TABLE users_ny(user_id, name, city) 
AS SELECT * FROM users 
WHERE city = 'new york';

Administrar tablas SQL

MODIFICAR TABLA

Aplicar un cambio de esquema a una tabla.

ALTER TABLE bank ADD COLUMN active BOOL;

ALTER TABLE se utiliza con subcomandos como:

AÑADIR COLUMNA

Agrega una columna.

ALTER TABLE bank ADD COLUMN active BOOL;

ELIMINAR COLUMNA

Eliminar una columna.

ALTER TABLE bank DROP COLUMN active;

MODIFICAR COLUMNA

Cambiar restricciones de columna, tipos de datos, etc.

ALTER TABLE bank ALTER account_balance TYPE FLOAT;

RENOMBRAR COLUMNA

Cambiar el nombre de una columna.

ALTER TABLE bank RENAME COLUMN account_balance TO balance;

RENOMBRAR A

Cambiar el nombre de una tabla.

ALTER TABLE bank RENAME TO users;

ELIMINAR TABLA

Quitar una TABLA.

DROP TABLE bank;

DROP TABLE … CASCADE se puede usar para eliminar todos los objetos (restricciones, vistas, etc.) que dependen de la eliminación de la tabla.

DROP TABLE … RESTRICT se puede usar para evitar que se ejecute el comando DROP TABLE a menos que la tabla esté vacía.

¡ Use las declaraciones con precaución!

Gestión de restricciones de SQL

AGREGAR RESTRICCIÓN

Agregue una clave, control o restricción única a una columna.

ALTER TABLE users ADD CONSTRAINT id_name_unique UNIQUE (id, name);

RESTRICCIÓN DE ELIMINACION

Eliminar una restricción de una columna.

ALTER TABLE users DROP CONSTRAINT id_name_unique;

MODIFICAR COLUMNA

Agregue o elimine restricciones, cambie los tipos de datos.

ALTER TABLE subscriptions ALTER COLUMN newsletter SET NOT NULL;

Insertar datos

INSERTAR VALORES

Inserta filas con valores especificados en una tabla.

INSERT INTO users (name, city) VALUES('Alice', 'New York');

INSERTAR EN SELECCION

Inserta filas en una tabla a partir de los resultados de una consulta.

INSERT INTO drivers (id, city, name, address)
    SELECT id, city, name, address FROM users
    WHERE name IN ('Anita Atkinson', 'Devin Jordan');

Trabajando con tus datos

Modificación de datos

ACTUALIZAR

Actualizar fila(s) en una tabla.

UPDATE users SET address = '201 E Randolph St' WHERE id = '851eb851-eb85-4000-8000-00000000001a';

Nota: sin una declaración WHERE, UPDATE actualizará el valor de la columna o columnas especificadas para todas las filas .

INSERTAR EN CONFLICTO

Inserte una nueva fila o realice una acción diferente si se detecta un conflicto con una fila existente (es decir, una «inserción superior»).

INSERT INTO employees (id, name, email) 
VALUES (2, ‘Dennis’, ‘dennisp@weyland.corp’)
ON CONFLICT (id) DO UPDATE;

UPSERT 

Upsert una fila en la base de datos.

UPSERT INTO employees (id, name, email) VALUES (6, ‘Lambert’, ‘lambert@weyland.corp`);

ELIMINAR FILAS

Eliminar una fila o filas específicas.

DELETE FROM promo_codes WHERE code = 'HAPPY50';

consulta de datos

SELECCIONAR DE …

Devuelve los valores de columnas específicas en una tabla.

SELECT id, city, name FROM users;

SELECCIONAR DE …

Devuelve los valores de todas las columnas de una tabla.

SELECT * FROM users;

LÍMITE

Limite el número de filas devueltas por una consulta.

SELECT * FROM users LIMIT 5;

OFFSET

Omita las primeras n filas antes de devolver un resultado de consulta.

SELECT * FROM users LIMIT 5 OFFSET 5;

WHERE

Filtre los resultados de una consulta en función de una condición o condiciones.

SELECT * FROM vehicles WHERE city = 'seattle' AND status = 'available';

AGRUPAR POR

Agrupe los resultados de una consulta en función de una columna.

SELECT city FROM rides
WHERE city IN ('new york', 'chicago', 'seattle') GROUP BY city;

FILTRAR

Filtre una consulta según los resultados de ejecutar una función agregada.

SELECT city, AVG(revenue) as avg FROM rides GROUP BY city
HAVING AVG(revenue) BETWEEN 50 AND 60;

Uniendo TABLAS

Una declaración de unión en SQL se ve así:

SELECT table1.column1, table2.column1, table2.column2
FROM table1
LEFT JOIN table2
ON table1.column1 = table2.column1;

Tenga en cuenta que «LEFT» se refiere a la tabla que aparece primero en su instrucción SQL, por lo que en el ejemplo anterior, table1es la tabla de la izquierda. El resultado de esa consulta es una tabla que contiene column1column2para todas las filas en table1table2que coinciden con column1.

Tipos de uniones:

Tipo de uniónDescripción
UNIR INTERNAMENTEDevuelve registros con valores coincidentes en ambas tablas.
UNIRSE A LA IZQUIERDADevuelve todos los registros de la tabla de la izquierda y los valores coincidentes de la tabla de la derecha.
UNIÓN DERECHADevuelve todos los registros de la tabla de la derecha y los valores coincidentes de la tabla de la izquierda.
UNIÓN COMPLETADevuelve todos los registros con valores coincidentes en cualquiera de las tablas.
UNIÓN«Apilar» las tablas, con las filas de la tabla de la izquierda devueltas primero, seguidas de las filas de la tabla de la derecha.

Agregando datos

Funciones agregadas seleccionadas:

FunciónÚsalo para…
COUNT()Cuente el número de filas.
AVG()Promedie los valores en una columna.
SUM()Agregue los valores en una columna.
MIN()Devuelve el valor más bajo de una columna.
MÁX.()Devuelve el valor más alto de una columna.

Ejemplo:

SELECT AVG(balance) FROM accounts WHERE balance > 0;

Esta consulta SQL que devolvería el valor promedio de la balancecolumna de la tabla accounts, sin incluir las filas con un saldo de cero.

Operadores logicos

Operadores lógicos seleccionados:

OperadorÚsalo para…
ALLDevuelve VERDADERO si todos los valores de una subconsulta cumplen la condición especificada.
ANDDevuelve registros para los que las condiciones separadas por AND son verdaderas.
ANYDevuelve VERDADERO si algún valor en una subconsulta cumple la condición especificada.
BETWEENDevuelve registros de la consulta que se encuentran entre dos valores especificados.
EXISTSRetorna VERDADERO si existe algún registro en la subconsulta.
INEspecifique múltiples valores en una consulta WHERE sin tener que usar OR entre cada valor.
LIKEDevuelve registros que coinciden con un patrón específico.
NOTDevuelve los registros que no cumplen la condición especificada.
ORDevuelve los registros para los que alguna de las condiciones separadas por OR es verdadera.

Gestión de índices

CREAR ÍNDICE

Cree un índice para una tabla usando una o más columnas.

CREATE INDEX ON table1 (column1, column2);

ALTERAR ÍNDICE… CAMBIAR NOMBRE A

Cambiar el nombre de un índice.

ALTER INDEX usersname_idx RENAME TO users_name_idx;

ELIMINAR ÍNDICE

Eliminar un índice.

DROP INDEX users_name_idx;

Administración/Operaciones

Acceso a la base de datos

CREAR ROL

Cree un rol de usuario de SQL (grupo de usuarios).

CREATE ROLE basic_user;

ELIMINAR ROL

Eliminar un rol de usuario de SQL.

DROP ROLE basic_user;

CREAR USUARIO

Crear un nuevo usuario.

CREATE USER alex;

ELIMINAR USUARIO

Eliminar un usuario.

DROP USER alex;

CONCEDER PRIVILEGIOS

Otorgar privilegios a un usuario o un rol.

GRANT DELETE ON TABLE rides TO alex;

REVOCAR PRIVILEGIOS

Revocar los privilegios de la base de datos de un usuario o rol.

REVOKE ALL ON DATABASE defaultdb FROM alex;

MOSTRAR ROLES 

Enumere los roles para todas las bases de datos en un clúster.

SHOW ROLES;

MOSTRAR USUARIOS 

Enumere los usuarios de todas las bases de datos en un clúster.

SHOW USERS;

MOSTRAR PRIVILEGIOS

Ver los privilegios otorgados a un usuario o rol.

SHOW GRANTS FOR alex;

Investigación de desempeño

EXPLAIN

Ver el plan de consulta para una consulta sin ejecutarla.

EXPLAIN SELECT * FROM rides WHERE revenue > 90 ORDER BY revenue ASC;

EXPLAIN ANALYZE

Ejecute una consulta y genere un plan de consulta física con estadísticas de ejecución.

EXPLAIN ANALYZE SELECT * FROM rides WHERE revenue > 90 ORDER BY revenue ASC;

Deja tus comentarios y sugerencias


Sobre Facialix

Facialix es un sitio web que tiene como objetivo apoyar en el aprendizaje y educación de jóvenes y grandes. Buscando y categorizando recursos educativos gratuitos de internet, de esta manera Facialix ayuda en el constante aprendizaje de todos.


También te podría gustar...

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.