SUMÁRIO SQL (PostgreSQL) ✔ Restrições (constraints)
PRIMARY KEY
1. Fundamentos FOREIGN KEY
✔ O que é banco de dados NOT NULL
Tabelas UNIQUE
Linhas (registros)
Colunas (atributos) 4. Filtros e ordenação
SELECT * FROM clientes
WHERE idade > 30
✔ Comandos básicos ORDER BY nome;
SELECT * FROM tabela;
INSERT INTO tabela VALUES (...);
UPDATE tabela SET coluna = valor; ✔ Operadores
DELETE FROM tabela;
=, >, <
LIKE
2. Tipos de dados IN
INT, BIGINT BETWEEN
VARCHAR, TEXT
DATE, TIMESTAMP 5. JOIN (relacionamentos)
BOOLEAN
SELECT [Link], [Link]
NUMERIC(10,2) FROM pedidos pe
JOIN clientes c ON [Link] = pe.id_cliente
SERIAL / IDENTITY
JOIN produtos p ON [Link] = pe.id_produto;
3. Criação de estruturas
✔ Tipos de JOIN
CREATE TABLE clientes (
INNER JOIN
id SERIAL PRIMARY KEY,
nome TEXT NOT NULL LEFT JOIN
);
RIGHT JOIN
6. Funções agregadas 11. Views
SUM() CREATE VIEW relatorio AS
SELECT * FROM pedidos;
COUNT()
AVG()
12. Índices (performance)
MAX()
CREATE INDEX idx_nome ON clientes(nome);
MIN()
13. Transações
7. GROUP BY
BEGIN;
SELECT id_cliente, SUM(valor)
COMMIT;
FROM pedidos
ROLLBACK;
GROUP BY id_cliente;
14. Sequence / Auto incremento
8. HAVING
SERIAL
SELECT id_cliente, SUM(valor)
FROM pedidos GENERATED AS IDENTITY
GROUP BY id_cliente
HAVING SUM(valor) > 1000;
15. Boas prá cas
9. Subqueries ✔ usar nomes claros
✔ evitar SELECT *
SELECT nome
✔ usar índices quando necessário
FROM clientes
✔ normalizar dados
WHERE id IN (
SELECT id_cliente FROM pedidos
);
16. Tópicos intermediários (quando
evoluir)
10. Funções úteis CASE
NOW() COALESCE
UPPER() CAST
LOWER() EXISTS
LENGTH() DISTINCT
Resumo SQL (PostgreSQL) Organizado
6. GROUP BY (Agrupamento)
1. SELECT (Consulta básica) SELECT id_cliente, SUM(quan dade) AS total
FROM pedidos
SELECT nome, idade
GROUP BY id_cliente;
FROM clientes
WHERE idade > 30 Agrupa dados para cálculo
ORDER BY nome;
Busca dados com filtro e ordenação
7. HAVING (Filtro com agregação)
SELECT id_cliente, SUM(quan dade) AS total
2. INSERT (Inserir dados) FROM pedidos
GROUP BY id_cliente
INSERT INTO clientes (nome, idade)
HAVING SUM(quan dade) > 5;
VALUES ('João', 25);
Filtra após agrupamento
Insere um novo registro
8. Subquery (Consulta interna)
3. UPDATE (Atualizar dados)
SELECT nome
UPDATE clientes
FROM clientes
SET idade = 26
WHERE id IN (
WHERE nome = 'João';
SELECT id_cliente FROM pedidos
Atualiza registros existentes );
Usa resultado de outra consulta
4. DELETE (Excluir dados)
DELETE FROM clientes 9. CASE (Condição)
WHERE id = 1;
SELECT nome,
Remove registros CASE
WHEN idade > 30 THEN 'Adulto'
ELSE 'Jovem'
5. JOIN (Relacionamento entre tabelas) END AS classificacao
FROM clientes;
SELECT [Link] AS cliente, [Link] AS produto
FROM pedidos pe Cria lógica condicional
INNER JOIN clientes c ON [Link] = pe.id_cliente
INNER JOIN produtos p ON [Link] =
pe.id_produto;
Junta dados de várias tabelas
10. VIEW (Consulta salva) INDEX → performance
CREATE VIEW relatorio AS TRANSACTION → controle
SELECT * FROM pedidos;
Cria uma tabela virtual
11. INDEX (Performance)
CREATE INDEX idx_nome
ON clientes(nome);
Acelera consultas
12. TRANSAÇÃO (Controle de operações)
BEGIN;
UPDATE clientes
SET idade = 30
WHERE id = 1;
COMMIT;
Garante segurança nas alterações
Resumo rápido
SELECT → consultar
INSERT → inserir
UPDATE → atualizar
DELETE → excluir
JOIN → relacionar
GROUP BY → agrupar
HAVING → filtrar agregação
Subquery → consulta interna
CASE → condição
VIEW → consulta salva