Jhonatan Pinheiro
Loading page...
Jhonatan Pinheiro
Loading page...
Jhonatan Pinheiro
Loading page...
The 20 SQL commands you use every day — from SELECT to aggregations, with ready-to-copy examples.
Se você está começando com bancos de dados, estes são os 20 comandos que você usa todo dia. Cada um vem com um exemplo prático para você copiar e testar. Vamos do SELECT até agregações — a base de tudo.
O comando mais usado: escolhe quais colunas trazer de uma tabela. Use * para todas (evite em produção).
-- Todas as colunas
SELECT * FROM clientes;
-- Apenas o necessário (recomendado)
SELECT nome, email FROM clientes;Traz só as linhas que satisfazem uma condição.
SELECT nome, cidade
FROM clientes
WHERE cidade = 'São Paulo';Ordena o resultado. ASC (crescente, padrão) ou DESC (decrescente).
SELECT nome, criado_em
FROM clientes
ORDER BY criado_em DESC;Retorna apenas N linhas. No SQL Server é TOP; no Oracle, FETCH FIRST.
-- PostgreSQL / MySQL / SQLite
SELECT * FROM produtos ORDER BY preco DESC LIMIT 10;
-- SQL Server
SELECT TOP 10 * FROM produtos ORDER BY preco DESC;Elimina linhas repetidas do resultado.
SELECT DISTINCT cidade FROM clientes;Adiciona novas linhas. Sempre liste as colunas.
INSERT INTO clientes (nome, email, cidade)
VALUES ('Ana Souza', 'ana@email.com', 'Campinas');Altera linhas existentes. Nunca esqueça o WHERE — sem ele, atualiza a tabela inteira!
UPDATE clientes
SET cidade = 'Rio de Janeiro'
WHERE id = 42;Remove linhas. Igual ao UPDATE: sem WHERE, apaga tudo.
DELETE FROM clientes WHERE id = 42;Define a estrutura: colunas, tipos e restrições.
CREATE TABLE clientes (
id INTEGER PRIMARY KEY,
nome VARCHAR(120) NOT NULL,
email VARCHAR(200) UNIQUE,
cidade VARCHAR(80),
criado_em TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);Adiciona, remove ou muda colunas de uma tabela existente.
ALTER TABLE clientes ADD COLUMN telefone VARCHAR(20);
ALTER TABLE clientes DROP COLUMN telefone;Apaga a tabela inteira (estrutura + dados). Irreversível.
DROP TABLE clientes;
-- Só se existir (evita erro)
DROP TABLE IF EXISTS clientes;Escolher o tipo certo economiza espaço e evita bugs.
-- Numéricos: INTEGER, BIGINT, DECIMAL(10,2)
-- Texto: VARCHAR(n), TEXT
-- Data/hora: DATE, TIMESTAMP
-- Booleano: BOOLEAN
CREATE TABLE pedidos (
id BIGINT,
total DECIMAL(10,2),
pago BOOLEAN,
data DATE
);Identifica cada linha de forma única. Toda tabela deveria ter uma.
CREATE TABLE produtos (
id INTEGER PRIMARY KEY,
nome VARCHAR(120)
);Junte várias condições no WHERE. Use parênteses para deixar claro.
SELECT * FROM produtos
WHERE (categoria = 'livros' OR categoria = 'games')
AND preco < 100
AND NOT esgotado;Atalhos poderosos de filtro: lista de valores, intervalo e busca por padrão.
-- Lista
SELECT * FROM clientes WHERE cidade IN ('SP', 'RJ', 'MG');
-- Intervalo
SELECT * FROM produtos WHERE preco BETWEEN 50 AND 150;
-- Padrão (% = qualquer texto)
SELECT * FROM clientes WHERE email LIKE '%@gmail.com';NULL é 'ausência de valor'. Nunca compare com = NULL — use IS NULL.
SELECT * FROM clientes WHERE telefone IS NULL;
SELECT * FROM clientes WHERE telefone IS NOT NULL;Resumem várias linhas em um único valor.
SELECT
COUNT(*) AS total_pedidos,
SUM(total) AS faturamento,
AVG(total) AS ticket_medio,
MIN(total) AS menor,
MAX(total) AS maior
FROM pedidos;Agrupa linhas para agregar por categoria. Aqui: faturamento por cidade.
SELECT cidade, COUNT(*) AS pedidos, SUM(total) AS faturamento
FROM pedidos
GROUP BY cidade
ORDER BY faturamento DESC;Renomeia colunas e tabelas para deixar o resultado (e a query) legível.
SELECT p.nome AS produto, p.preco AS valor
FROM produtos AS p;Documente suas queries. -- para uma linha, /* */ para bloco.
-- Isto é um comentário de uma linha
SELECT nome FROM clientes; -- também funciona no fim
/* Comentário
de várias linhas */