Menu
Coddy logo textTech

Folha de Consulta SQL

Última atualização

Consultar dados (SELECT)

O núcleo do SQL: ler linhas de uma ou mais tabelas.

OperaçãoSintaxe
Selecionar todas as colunasSELECT * FROM users;
Selecionar colunas específicasSELECT id, name FROM users;
Renomear uma coluna (alias)SELECT name AS full_name FROM users;
Valores distintosSELECT DISTINCT country FROM users;
Limitar linhasSELECT * FROM users LIMIT 10;
Pular e depois limitar (paginação)SELECT * FROM users LIMIT 10 OFFSET 20;
Contar linhasSELECT COUNT(*) FROM users;

Filtrar linhas (WHERE)

Restringe quais linhas uma consulta retorna.

OperaçãoSintaxe
Igualdade / comparaçãoWHERE age >= 18
Várias condiçõesWHERE age >= 18 AND country = 'US'
Qualquer uma das condiçõesWHERE role = 'admin' OR role = 'owner'
Em um conjuntoWHERE country IN ('US', 'CA', 'MX')
Entre um intervaloWHERE price BETWEEN 10 AND 50
Correspondência de padrãoWHERE email LIKE '%@gmail.com'
É / não é nuloWHERE deleted_at IS NULL
NegarWHERE status NOT IN ('archived')

Ordenar e agrupar

OperaçãoSintaxe
Ordem crescente (padrão)ORDER BY created_at
Ordem decrescenteORDER BY created_at DESC
Ordenar por várias colunasORDER BY country, name DESC
Agrupar linhasSELECT country, COUNT(*) FROM users GROUP BY country;
Filtrar gruposGROUP BY country HAVING COUNT(*) > 100

Joins

Combina linhas de duas tabelas a partir de uma coluna correspondente.

Tipo de joinRetornaSintaxe
INNER JOINApenas as linhas que correspondem em ambas as tabelasFROM orders o INNER JOIN users u ON o.user_id = u.id
LEFT JOINTodas as linhas da esquerda + correspondências (nulos caso contrário)FROM users u LEFT JOIN orders o ON o.user_id = u.id
RIGHT JOINTodas as linhas da direita + correspondênciasFROM orders o RIGHT JOIN users u ON o.user_id = u.id
FULL OUTER JOINTodas as linhas de ambos os ladosFROM a FULL OUTER JOIN b ON a.id = b.a_id
CROSS JOINToda combinação (produto cartesiano)FROM sizes CROSS JOIN colors
Self joinUma tabela unida a si mesmaFROM employees e JOIN employees m ON e.manager_id = m.id

Funções de agregação

Calcula um único valor a partir de um grupo de linhas.

FunçãoO que faz
COUNT(*)Número de linhas
COUNT(col)Número de valores não nulos
SUM(col)Total de uma coluna numérica
AVG(col)Valor médio
MIN(col) / MAX(col)Menor / maior valor
STRING_AGG(col, ',')Concatena valores (Postgres; GROUP_CONCAT no MySQL)

Funções de janela

Calcula sobre um conjunto de linhas sem agrupá-las em uma só.

FunçãoSintaxe
Número da linhaROW_NUMBER() OVER (ORDER BY score DESC)
Classificação (com lacunas)RANK() OVER (PARTITION BY country ORDER BY score DESC)
Classificação densaDENSE_RANK() OVER (ORDER BY score DESC)
Total acumuladoSUM(amount) OVER (ORDER BY created_at)
Linha anterior / seguinteLAG(score) OVER (ORDER BY date), LEAD(score) OVER (...)

Modificar dados (INSERT, UPDATE, DELETE)

OperaçãoSintaxe
Inserir uma linhaINSERT INTO users (name, email) VALUES ('Ada', 'ada@x.com');
Inserir várias linhasINSERT INTO users (name) VALUES ('Ada'), ('Alan');
Atualizar linhasUPDATE users SET active = true WHERE id = 1;
Excluir linhasDELETE FROM users WHERE active = false;
Upsert (Postgres/SQLite)INSERT ... ON CONFLICT (email) DO UPDATE SET name = EXCLUDED.name;

Definir tabelas (DDL)

OperaçãoSintaxe
Criar uma tabelaCREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT NOT NULL);
Adicionar uma colunaALTER TABLE users ADD COLUMN age INTEGER;
Remover uma colunaALTER TABLE users DROP COLUMN age;
Remover uma tabelaDROP TABLE users;
Criar um índiceCREATE INDEX idx_users_email ON users (email);
Chave estrangeiraFOREIGN KEY (user_id) REFERENCES users (id)

Cada instrução, cláusula e join de SQL que você usa, em uma única página. Esta folha de consulta SQL é uma referência rápida para consultar e modificar dados relacionais: as cláusulas SELECT, os quatro tipos de JOIN, a agregação e o DDL e DML que você usa para criar e atualizar tabelas.

A sintaxe aqui é SQL ANSI padrão e funciona em PostgreSQL, MySQL, SQLite e SQL Server salvo indicação em contrário. Copie o que precisar ou teste cada consulta ao vivo no playground de SQL, sem instalar nenhum banco de dados.

Perguntas frequentes sobre a folha de consulta SQL

Esta folha de consulta SQL é gratuita?
Sim. Esta folha de consulta SQL é totalmente gratuita, sem necessidade de cadastro. Salve nos favoritos e volte sempre que precisar consultar uma cláusula, join ou função.
Funciona com MySQL, PostgreSQL e SQLite?
Em grande parte, sim. A sintaxe de SELECT, WHERE, JOIN, GROUP BY e DDL mostrada aqui é SQL ANSI padrão e roda da mesma forma em MySQL, PostgreSQL, SQLite e SQL Server. Alguns recursos avançados variam conforme o dialeto (upserts e agregação de strings são os mais comuns) e essas linhas indicam a diferença.
Qual é a diferença entre INNER JOIN e LEFT JOIN?
Um INNER JOIN retorna apenas as linhas que têm correspondência em ambas as tabelas. Um LEFT JOIN retorna cada linha da tabela da esquerda (a primeira), preenchendo com NULL as colunas da tabela da direita quando não há correspondência; é útil quando você quer todos os usuários mesmo que alguns não tenham pedidos.
Posso praticar estes comandos SQL online?
Sim. Abra o playground de SQL para executar qualquer consulta desta folha de consulta contra um banco de dados real no seu navegador, sem instalar nada. Quando quiser estrutura, o curso interativo e gratuito de SQL da Coddy leva você passo a passo do SELECT aos joins e às funções de janela.
Esta folha de consulta é boa para iniciantes?
Sim. Ela está organizada das operações mais comuns (consultar e filtrar) até as mais avançadas (funções de janela), de modo que você pode usar as seções de cima já no primeiro dia e ir avançando para o resto.
Coddy programming languages illustration

Aprenda SQL com a Coddy

COMEÇAR