ByteRef
← Home
🐘

PostgreSQL banco de dados avançado

sqldatabasepostgres
🚀 Conexão & Setup
Conectar ao bancopsql -h localhost -U postgres -d mydb
Criar banco de dadoscreatedb -U postgres mydb
Listar bancospsql -U postgres -l
Criar usuáriocreateuser -U postgres --createdb myuser
Alterar senhapsql -U postgres -c "ALTER USER myuser PASSWORD 'newpass';"
Ver versãopsql --version
Iniciar serviçosudo systemctl start postgresql
Status do serviçosudo systemctl status postgresql
📋 DDL - Estrutura
Criar tabelaCREATE TABLE users (
  id SERIAL PRIMARY KEY,
  name VARCHAR(100) NOT NULL,
  email VARCHAR(255) UNIQUE,
  created_at TIMESTAMP DEFAULT NOW()
);
Adicionar colunaALTER TABLE users ADD COLUMN age INTEGER;
Criar índiceCREATE INDEX idx_users_email ON users(email);
Criar foreign keyALTER TABLE posts ADD CONSTRAINT fk_user
  FOREIGN KEY (user_id) REFERENCES users(id);
Criar viewCREATE VIEW active_users AS
SELECT * FROM users WHERE active = true;
Sequence customizadaCREATE SEQUENCE user_id_seq
  START 1000 INCREMENT 1;
Enum typeCREATE TYPE status AS ENUM ('active', 'inactive', 'banned');
🔍 Consultas Avançadas
JOIN com agregaçãoSELECT u.name, COUNT(p.id) as posts
FROM users u
LEFT JOIN posts p ON u.id = p.user_id
GROUP BY u.id, u.name
HAVING COUNT(p.id) > 0;
Window functionsSELECT name, salary,
  RANK() OVER (ORDER BY salary DESC) as rank
FROM employees;
Common Table ExpressionWITH monthly_sales AS (
  SELECT DATE_TRUNC('month', created_at) as month,
    SUM(amount) as total
  FROM orders GROUP BY 1
)
SELECT * FROM monthly_sales;
Full-text searchSELECT * FROM articles
WHERE to_tsvector('english', content) @@
  to_tsquery('english', 'database & query');
JSON operationsSELECT data->>'name' as name,
  data->'address'->>'city' as city
FROM users WHERE data @> '{"active": true}';
Array operationsSELECT * FROM posts
WHERE tags && ARRAY['python', 'flask'];
⚡ Performance & Otimização
EXPLAIN ANALYZEEXPLAIN ANALYZE SELECT * FROM users WHERE email = 'test@example.com';
Ver índicesSELECT * FROM pg_indexes WHERE tablename = 'users';
Vacuum analyzeVACUUM ANALYZE users;
Ver locksSELECT * FROM pg_locks WHERE NOT granted;
Ver conexões ativasSELECT * FROM pg_stat_activity;
Cache hit ratioSELECT sum(blks_hit)*100/sum(blks_hit+blks_read) as cache_hit_ratio FROM pg_stat_database;
Tamanho das tabelasSELECT schemaname, tablename,
  pg_size_pretty(pg_total_relation_size(schemaname||'.'||tablename))
FROM pg_tables ORDER BY pg_total_relation_size(schemaname||'.'||tablename) DESC;
🔄 Backup & Restore
Backup completopg_dump -U postgres -h localhost mydb > backup.sql
Backup comprimidopg_dump -U postgres -Fc mydb > backup.dump
Restore de SQLpsql -U postgres -d mydb < backup.sql
Restore de dumppg_restore -U postgres -d mydb backup.dump
Backup remotopg_dump -h remote.host -U user -d mydb | gzip > backup.sql.gz
pg_basebackuppg_basebackup -U postgres -D /backup/basebackup -Ft -z
🔧 Administração
Ver configuraçõesSHOW ALL;
Alterar configuraçãoALTER SYSTEM SET shared_buffers = '256MB';
Reload configSELECT pg_reload_conf();
Ver logstail -f /var/log/postgresql/postgresql-13-main.log
Ver tamanho do bancoSELECT pg_size_pretty(pg_database_size('mydb'));
Listar extensõesSELECT * FROM pg_extension;
Instalar extensãoCREATE EXTENSION IF NOT EXISTS "uuid-ossp";
BR ByteRef DevOps & Backend Reference · 2026 — comandos