Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

POSTGRESQL

Install

sudo dnf install -y postgresql postgresql-server

sudo postgresql-setup --initdb --unit postgresql
sudo systemctl start postgresql

Running psql

sudo -i -u postgres
psql

Setup postgres and User

CREATE USER mi_usuario WITH PASSWORD 'Mi Contraseña';
psql -U tu_usuario -d tu_base_de_datos

ALTER USER nombre_usuario WITH PASSWORD 'nueva_contraseña'; # Cambiar contrsaeña de un user
ALTER USER postgres WITH PASSWORD 'nueva_contraseña'; # Poner contraseña a postgres de ser necesario
DROP USER nombre_usuario; # Eliminar usuario

To Connect to the database from outside

To connect to tools like pgadmin4 or pgmodeler.

sudo -i -u postgres
psql
ALTER USER postgres WITH PASSWORD 'nueva_contraseña';
\q

Go to /var/lib/pgsql/data/pg_hba.conf. In the end of the file change the line that says

local all all peer # Original
local all all md5 # Cambio

host all all 127.0.0.1/32 ident # Original (no exactamente el 127 no va asi pero se entiende)
host all all 127.0.0.1/32 md5 # Cambio


host all all ::1/128 ident # Original
host all all ::1/128 md5 # Cambio

Then in the same data dir open postgresql.conf and add at the end this:

listen_addresses = 'localhost' # If doesnt work try '*'

With this is all ready just restart the psql service, and put the correct pwd in the tool that your gonna use.

sudo systemctl restart postgresql # In normal user

DB

CREATE DATABASE mi_base_de_datos;
GRANT ALL PRIVILEGES ON DATABASE mi_base_de_datos TO mi_usuario;
DROP DATABASE nombre_base_de_datos; # Eliminar base de datos
ALTER DATABASE nombre_base_de_datos RENAME TO nuevo_nombre; # Renombrar base de datos

Commands

\l; # Muestra todas las bases de datos que existen en tu sistema PostgreSQL.
\dt; # Muestra todas las tablas en la base de datos en la que estás trabajando actualmente.
\c nombre_de_base_de_datos; # Conectarse base de datos
\dt nombre_de_tabla; # Muestra detalles sobre la tabla específica llamada nombre_de_tabla.
\d nombre_de_tabla;
\di nombre_de_tabla; # Indices de una tabla
\q; # Salir de psql
\du; # Ver permisos de usuario

Export and Import

Exportar

pg_dump -U mi_usuario -d mi_base_de_datos -f archivo_de_respaldo.sql

Exportar solo esquema (sin datos):

pg_dump -U usuario -s -d base_de_datos -f esquema.sql

Exportar solo datos (sin esquema):

pg_dump -U usuario -a -d base_de_datos -f datos.sql

Importar

psql -U mi_usuario -d mi_base_de_datos -f archivo_de_respaldo.sql

Tables

CREATE TABLE nombre_tabla (
    columna1 tipo_dato,
    columna2 tipo_dato,
    ...
);
DROP TABLE nombre_tabla; # Borrar tabla
ALTER TABLE nombre_tabla ADD COLUMN nombre_columna tipo_dato; # Agregar una columna a una tabla:
ALTER TABLE nombre_tabla DROP COLUMN nombre_columna; # Eliminar columna de una tabla
ALTER TABLE nombre_tabla RENAME TO nuevo_nombre; # Renombrar tabla

Conf

La configuración principal se guarda en:

/var/lib/pgsql/data/postgresql.conf

Data Type

  • INTEGER o INT (-/+ 2,147,483,648)

  • BIGINT (-/+ 9,223,372,036,854,775,808)

  • SMALLINT (-/+ 32,768)

  • DECIMAL o NUMERIC (precio DECIMAL(10,2) 10 digitos en total, 2 despues del punto decimal)

  • REAL (Almacena números con precisión simple en coma flotante (menos preciso que DOUBLE PRECISION))

  • DOUBLE PRECISION (Almacena números con mayor precisión en coma flotante)

  • VARCHAR(n) (Longitud variable maxima n)

  • TEXT (Longitud variable sin limite explicito)

  • CHAR(n) (Longitud fija de n)

  • DATE (año, mes, dia)

  • TIME

  • TIMESTAMP (Fecha y hora con precisión hasta fracciones de segundo)

  • TIMESTAMPTZ (Con zona horaria)

  • INTERVAL (Periodo de timepo (diferencia entre dos fechas u horas))

  • BOOLEAN (TRUE, FALSE, NULL)

  • SERIAL (Autoincremental. Usualmente usado en ejemplo: id SERIAL PRIMARY KEY)

  • BIGSERIAL (Lo mismo pero mas grande)

  • UUID (Almacena un identificador unico universal)

  • JSON

  • JSONB (Lo mismo que json pero en formato binario)

  • XML (Datos en formato xml)

  • BYTEA (Binarios como imagenes o archivos)

  • ARRAY (Lista de valores de tipo determinado ejemplo: numeros ARRAY[INTEGER])

  • RANGE (Rango de valores)

Restricciones comunes

Formato: nombre DATA_TYPE RESTRICCION EJ: nombre VARCHAR(100) NOT NULL

  • NOT NULL
  • DEFAULT 'Valor por defecto' (estado VARCHAR(10) DEFAULT 'activo')
  • UNIQUE (Asegura que los valores de una columna sean únicos (sin duplicados))
  • CHECK (edad INT CHECK (edad >= 18))
  • CONSTRAINT [fk_usuario FOREIGN KEY (usuario_id) REFERENCES usuarios(id)] ( Define una clave foránea para relacionar tablas.)
  • PRIMARY [id SERIAL PRIMARY KEY]

Primary KEY and FOREING KEY

  • id SERIAL PRIMARY KEY,
  • estudiante_id INT REFERENCES estudiante(id),