sql database cheat-sheet mysql postgresql query dev-reference

O Guia Definitivo de SQL: Comandos, Joins e Referência de Funções

Uma folha de dicas (cheat sheet) de SQL completa para desenvolvedores. Domine SELECT, JOIN, GROUP BY e as funções SQL mais comuns com exemplos claros.

O Guia Definitivo de SQL: Comandos, Joins e Referência de Funções

SQL (Structured Query Language) é a linguagem padrão para gerenciar e manipular bancos de dados relacionais. Quer você trabalhe com MySQL, PostgreSQL, SQL Server ou SQLite, estes comandos principais formam a base das suas interações com o banco de dados.

Use esta folha de dicas como uma referência rápida para a sintaxe comum de SQL e as melhores práticas.


1. Recuperação Básica de Dados

A tarefa de SQL mais comum é recuperar dados de uma tabela.

Comando Descrição Exemplo
SELECT Especifica as colunas a recuperar SELECT nome, idade
FROM Especifica a tabela de onde recuperar FROM usuarios
WHERE Filtra o conjunto de resultados baseado em uma condição WHERE idade > 18
ORDER BY Ordena o conjunto de resultados (ASC ou DESC) ORDER BY data_criacao DESC
LIMIT Restringe o número de linhas retornadas LIMIT 10
DISTINCT Retorna apenas valores únicos SELECT DISTINCT cidade

Exemplo de Consulta:

SELECT nome, email
FROM usuarios
WHERE pais = 'BR'
ORDER BY nome ASC
LIMIT 5;

2. SQL Joins: Combinando Dados

Os Joins permitem recuperar data de múltiplas tabelas baseando-se em uma coluna relacionada.

  • INNER JOIN: Retorna linhas quando há uma correspondência em ambas as tabelas.
  • LEFT (OUTER) JOIN: Retorna todas as linhas da tabela à esquerda e as linhas correspondentes da tabela à direita.
  • RIGHT (OUTER) JOIN: Retorna todas as linhas da tabela à direita e as linhas correspondentes da tabela à esquerda.
  • FULL (OUTER) JOIN: Retorna linhas quando há uma correspondência em uma das tabelas.

Exemplo de Join:

SELECT pedidos.id, usuarios.nome
FROM pedidos
INNER JOIN usuarios ON pedidos.usuario_id = usuarios.id;

3. Agregação e Agrupamento

As funções de agregação realizam um cálculo sobre um conjunto de valores e retornam um único valor.

Função Descrição
COUNT() Retorna o número de linhas
SUM() Retorna a soma total de uma coluna numérica
AVG() Retorna o valor médio
MIN() Retorna o menor valor
MAX() Retorna o maior valor

GROUP BY e HAVING: GROUP BY é usado com funções de agregação para agrupar o conjunto de resultados por uma ou mais colunas. HAVING é usado para filtrar grupos.

SELECT departamento, COUNT(*)
FROM funcionarios
GROUP BY departamento
HAVING COUNT(*) > 5;

4. Modificação de Dados (DML)

Comandos para adicionar, atualizar e remover dados.

  • INSERT: Adicionar novas linhas.
    INSERT INTO usuarios (nome, email) VALUES ('João Silva', '[email protected]');
    
  • UPDATE: Modificar linhas existentes.
    UPDATE usuarios SET email = '[email protected]' WHERE id = 1;
    
  • DELETE: Remover linhas.
    DELETE FROM usuarios WHERE id = 1;
    

5. Definição de Esquema (DDL)

Comandos para definir e gerenciar a estrutura do banco de dados.

  • CREATE TABLE: Criar uma nova tabela.
    CREATE TABLE produtos (
      id INT PRIMARY KEY,
      nome VARCHAR(100),
      preco DECIMAL(10, 2)
    );
    
  • ALTER TABLE: Modificar a estrutura de uma tabela existente (adicionar/remover colunas).
    ALTER TABLE usuarios ADD ultimo_login TIMESTAMP;
    
  • DROP TABLE: Excluir uma tabela e todos os seus dados.
    DROP TABLE dados_temporarios;
    
  • Indexes (Índices): Usados para acelerar a recuperação de dados.
    CREATE INDEX idx_usuario_email ON usuarios(email);
    

Perguntas Comuns (FAQ)

Q: SQL vs NoSQL: Qual devo escolher?

A: Use SQL (Relacional) quando seus dados forem estruturados, você precisar de joins complexos e a conformidade ACID for uma prioridade. Use NoSQL (Não relacional) para dados não estruturados, requisitos de alta escalabilidade e ciclos de desenvolvimento rápidos, onde os esquemas mudam com frequência.

Q: Quais são as melhores práticas para o design de bancos de dados?

A:

  1. Normalização: Reduzir a redundância de dados.
  2. Convenções de Nomes: Use nomes consistentes, em minúsculas e separados por sublinhados (underscores).
  3. Chaves Primárias: Cada tabela deve ter um identificador exclusivo.
  4. Use Índices com Sabedoria: Eles aceleram as leituras, mas retardam as gravações.

Q: O que é uma Injeção de SQL e como posso preveni-la?

A: A Injeção de SQL é uma vulnerabilidade onde um invasor pode executar instruções SQL maliciosas. Prevenção: Nunca concatene a entrada do usuário diretamente nas consultas. Use Prepared Statements (Consultas Parametrizadas) fornecidas pelo driver de banco de dados da sua linguagem de programação.

Q: Como posso otimizar o desempenho do SQL?

A:

  • Evite SELECT *; recupere apenas as colunas necessárias.
  • Use EXPLAIN para analisar os planos de execução das consultas.
  • Garanta a indexação adequada nas colunas usadas nas cláusulas WHERE e JOIN.
  • Evite o uso de subconsultas quando um JOIN for mais eficiente.

Ferramentas Relacionadas no Tool3M

  • Formatador SQL: Limpe e formate suas consultas SQL para melhor legibilidade.
  • JSON para CSV: Converta suas exportações de banco de dados entre os formatos JSON e CSV.