PostgreSQL
PostgreSQL es un sistema de base de datos relacional potente y de código abierto. Aquí tienes los comandos esenciales.
Instalación
Section titled “Instalación”sudo apt updatesudo apt install postgresql postgresql-contribsudo pacman -S postgresql# Inicializar el clústersudo -iu postgres initdb -D /var/lib/postgres/datasudo systemctl enable --now postgresqlAcceso a PostgreSQL
Section titled “Acceso a PostgreSQL”# Acceder como usuario postgressudo -u postgres psql
# Acceder con un usuario específico y base de datospsql -U usuario -d basedatos
# Acceder desde terminal normal (si está configurado)psqlComandos básicos dentro de psql
Section titled “Comandos básicos dentro de psql”-- Ver todas las bases de datos\l
-- Conectar a otra base de datos\c nombre_bd
-- Ver todas las tablas en la base actual\dt
-- Ver estructura de una tabla\d nombre_tabla
-- Ver todos los usuarios/roles\du
-- Salir de psql\qGestión de bases de datos
Section titled “Gestión de bases de datos”-- Crear base de datosCREATE DATABASE nombre_bd;
-- Eliminar base de datosDROP DATABASE nombre_bd;
-- Renombrar base de datosALTER DATABASE nombre_bd RENAME TO nuevo_nombre;Gestión de usuarios
Section titled “Gestión de usuarios”-- Crear usuario (rol)CREATE USER nombre_usuario WITH PASSWORD 'contraseña';
-- Crear usuario con privilegios de superusuarioCREATE USER nombre_usuario WITH SUPERUSER PASSWORD 'contraseña';
-- Eliminar usuarioDROP USER nombre_usuario;
-- Cambiar contraseñaALTER USER nombre_usuario WITH PASSWORD 'nueva_contraseña';
-- Dar permisos de conexión a una base de datosGRANT CONNECT ON DATABASE nombre_bd TO nombre_usuario;
-- Dar todos los privilegios en una base de datosGRANT ALL PRIVILEGES ON DATABASE nombre_bd TO nombre_usuario;Gestión de tablas
Section titled “Gestión de tablas”-- Crear tablaCREATE TABLE usuarios ( id SERIAL PRIMARY KEY, nombre VARCHAR(100) NOT NULL, email VARCHAR(100) UNIQUE NOT NULL, edad INTEGER, creado TIMESTAMP DEFAULT CURRENT_TIMESTAMP);
-- Eliminar tablaDROP TABLE nombre_tabla;
-- Renombrar tablaALTER TABLE nombre_tabla RENAME TO nuevo_nombre;
-- Añadir columnaALTER TABLE nombre_tabla ADD COLUMN nueva_columna TIPO_DATO;
-- Eliminar columnaALTER TABLE nombre_tabla DROP COLUMN columna;
-- Renombrar columnaALTER TABLE nombre_tabla RENAME COLUMN viejo TO nuevo;Consultas básicas (CRUD)
Section titled “Consultas básicas (CRUD)”-- INSERT (crear)INSERT INTO usuarios (nombre, email, edad)VALUES ('Juan Pérez', 'juan@email.com', 30);
-- SELECT (leer)SELECT * FROM usuarios;SELECT nombre, email FROM usuarios WHERE edad > 25;SELECT * FROM usuarios ORDER BY creado DESC LIMIT 10;
-- UPDATE (actualizar)UPDATE usuarios SET edad = 31 WHERE nombre = 'Juan Pérez';
-- DELETE (eliminar)DELETE FROM usuarios WHERE id = 1;Consultas avanzadas
Section titled “Consultas avanzadas”-- JOIN entre tablasSELECT u.nombre, p.tituloFROM usuarios uJOIN publicaciones p ON u.id = p.usuario_id;
-- Agrupación y conteoSELECT edad, COUNT(*) FROM usuarios GROUP BY edad;
-- Búsqueda por textoSELECT * FROM usuarios WHERE nombre ILIKE '%juan%';
-- SubconsultasSELECT * FROM usuariosWHERE edad > (SELECT AVG(edad) FROM usuarios);Respaldo y restauración
Section titled “Respaldo y restauración”# Backup de una base de datospg_dump -U usuario nombre_bd > backup.sql
# Backup de todas las bases de datospg_dumpall -U postgres > backup_completo.sql
# Backup con formato personalizado (más rápido)pg_dump -U usuario -F c nombre_bd > backup.dump
# Restaurar desde SQLpsql -U usuario nombre_bd < backup.sql
# Restaurar desde dump personalizadopg_restore -U usuario -d nombre_bd backup.dumpComandos útiles desde terminal
Section titled “Comandos útiles desde terminal”# Ver versión de PostgreSQLpsql --version
# Verificar estado del serviciosudo systemctl status postgresql
# Reiniciar el serviciosudo systemctl restart postgresql
# Conectar y ejecutar comando sin entrar a psqlpsql -U usuario -d nombre_bd -c "SELECT * FROM usuarios;"Monitoreo y rendimiento
Section titled “Monitoreo y rendimiento”-- Ver conexiones activasSELECT * FROM pg_stat_activity;
-- Ver tamaño de una base de datosSELECT pg_database_size('nombre_bd');
-- Ver tamaño de una tablaSELECT pg_size_pretty(pg_total_relation_size('nombre_tabla'));
-- Ver consultas lentas (necesita habilitar logs)-- Configurar en postgresql.conf: log_min_duration_statement = 1000Recuerda que los comandos SQL deben terminar con
;para ejecutarse. Usa\?dentro de psql para ver todos los comandos especiales disponibles.