diogodev_
Conteúdo

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,
email
FROM users;

Filtrando resultados:

SELECT *
FROM users
WHERE active = true;

Inserindo dados

INSERT INTO users (
name,
email
)
VALUES (
'Diogo',
'diogo@email.com'
);

Inserindo múltiplos registros:

INSERT INTO users (
name,
email
)
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