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),