Comandos PostgreSQL que mais utilizo no dia a dia
PostgreSQL é um dos bancos de dados relacionais mais populares do mercado. Além de ser robusto e open source, oferece diversos recursos avançados que ajudam no desenvolvimento e manutenção das aplicações. Neste artigo compartilho alguns comandos que utilizo com frequência no dia a dia.
Por que aprender PostgreSQL?
Mesmo utilizando ORMs como Entity Framework, Prisma ou Sequelize, conhecer SQL continua sendo essencial.
Com SQL é possível:
- Criar consultas mais eficientes;
- Analisar performance;
- Resolver problemas mais rapidamente;
- Trabalhar com grandes volumes de dados;
- Criar índices e otimizar consultas.
Listando tabelas
Dentro do terminal do PostgreSQL:
\dt
Para visualizar os detalhes de uma tabela:
\d users
Consultando registros
Um dos comandos mais utilizados:
SELECT *
FROM users;
Buscando apenas algumas colunas:
SELECT
id,
name,
FROM users;
Filtrando resultados:
SELECT *
FROM users
WHERE active = true;
Inserindo dados
INSERT INTO users (
name,
)
VALUES (
'Diogo',
'diogo@email.com'
);
Inserindo múltiplos registros:
INSERT INTO users (
name,
)
VALUES
('João', 'joao@email.com'),
('Maria', 'maria@email.com');
Atualizando registros
UPDATE users
SET name = 'Diogo Silva'
WHERE id = 1;
Sempre tenha atenção ao WHERE.
Sem ele, todos os registros podem ser alterados.
Removendo registros
DELETE
FROM users
WHERE id = 1;
Removendo todos os registros:
TRUNCATE TABLE users;
Ordenando resultados
SELECT *
FROM users
ORDER BY created_at DESC;
Ordem crescente:
ORDER BY created_at ASC;
Limitando resultados
SELECT *
FROM users
LIMIT 10;
Paginação:
SELECT *
FROM users
LIMIT 10
OFFSET 20;
Muito útil em APIs e tabelas paginadas.
Utilizando LIKE
Buscando nomes que contenham "dio":
SELECT *
FROM users
WHERE name LIKE '%dio%';
Ignorando maiúsculas e minúsculas:
SELECT *
FROM users
WHERE name ILIKE '%dio%';
COUNT
Quantidade de registros:
SELECT COUNT(*)
FROM users;
Quantidade de usuários ativos:
SELECT COUNT(*)
FROM users
WHERE active = true;
GROUP BY
Agrupando informações:
SELECT
status,
COUNT(*)
FROM orders
GROUP BY status;
Resultado:
pending 15
completed 40
canceled 5
JOIN
Relacionando tabelas:
SELECT
o.id,
c.name
FROM orders o
INNER JOIN customers c
ON c.id = o.customer_id;
Tipos mais comuns:
- INNER JOIN;
- LEFT JOIN;
- RIGHT JOIN.
Criando índices
Um índice melhora a performance das consultas.
CREATE INDEX idx_users_email
ON users(email);
Antes de criar índices, é importante analisar se eles realmente serão utilizados.
EXPLAIN ANALYZE
Um dos comandos mais importantes para análise de performance.
EXPLAIN ANALYZE
SELECT *
FROM users
WHERE email = 'user@email.com';
Ele mostra:
- Tempo da consulta;
- Uso de índices;
- Tipo de varredura;
- Custo da operação.
Criando tabelas
CREATE TABLE users (
id SERIAL PRIMARY KEY,
name VARCHAR(100),
email VARCHAR(255)
);
Adicionando uma coluna:
ALTER TABLE users
ADD COLUMN active BOOLEAN;
Trabalhando com datas
Registros criados hoje:
SELECT *
FROM users
WHERE created_at >= CURRENT_DATE;
Últimos 7 dias:
SELECT *
FROM users
WHERE created_at >= NOW() - INTERVAL '7 days';
Exportando resultados
Utilizando COPY:
COPY users
TO '/tmp/users.csv'
DELIMITER ','
CSV HEADER;
Importando:
COPY users
FROM '/tmp/users.csv'
DELIMITER ','
CSV HEADER;
Comandos úteis no psql
Conectar ao banco:
\c database_name
Listar bancos:
\l
Listar tabelas:
\dt
Descrever tabela:
\d users
Sair:
\q
Dicas de performance
Evite SELECT *
Prefira:
SELECT
id,
name
FROM users;
Isso reduz a quantidade de dados retornados.
Crie índices com cuidado
Índices aceleram leituras, mas aumentam o custo de escrita.
Analise consultas com EXPLAIN ANALYZE
Esse comando pode revelar gargalos importantes.
Utilize LIMIT em consultas grandes
Evite retornar milhares de registros desnecessariamente.
Utilize paginação
Principalmente em APIs.
Extensões interessantes
pg_trgm
Excelente para buscas aproximadas.
CREATE EXTENSION pg_trgm;
uuid-ossp
Permite gerar UUIDs.
CREATE EXTENSION "uuid-ossp";
pgvector
Muito utilizada em aplicações com IA e RAG.
CREATE EXTENSION vector;
Conclusão
Conhecer SQL e alguns comandos do PostgreSQL faz muita diferença no dia a dia. Mesmo utilizando ORMs, entender consultas, índices e análise de performance ajuda a criar aplicações mais eficientes e facilita a investigação de problemas.
PostgreSQL é uma ferramenta extremamente poderosa e vale a pena investir tempo aprendendo seus recursos.
Saiba mais
- PostgreSQL Documentation
https://www.postgresql.org/docs/ - psql Command Line
https://www.postgresql.org/docs/current/app-psql.html - EXPLAIN ANALYZE
https://www.postgresql.org/docs/current/sql-explain.html - Indexes
https://www.postgresql.org/docs/current/indexes.html - Extensions
https://www.postgresql.org/docs/current/external-extensions.html - pgvector
https://github.com/pgvector/pgvector