PostgreSQL es un manejador de base de datos relacionales, completamente open source, el cual podemos usarlo en practicamente cualquier sistema operativo, ya sea Linux, Unix o Windows. Esto sin duda lo convierte en uno de los manejadores de base de datos más populares en la actualidad.
A diferencia de otros manejadores de base de datos como MySQL o SQLServer, podemos decir que PostgreSQL es más que un manejador, es una plataforma de aplicaciones. 😎 Por ejemplo, con este manejador seremos capaces de escribir procedimientos almacenados y funciones con diferentes lenguajes de programación, como lo puede ser Perl, Python, R o Java. Sin duda algo bastante cool, que muy probablemente veremos en otro tutorial, puesto que en esta ocasión tendremos nuestro primer acercamiento con este magnífico gestor de base de datos.
Bien, una vez dicho esto, comencemos. 😊
Introducción
Lo primero que debemos hacer es instalar nuestro manejador. Si te encuentras utilizando MacOS la instalación con brew es muy sencillas.
brew install postgresql
Por otro lado, si utilizas Linux deberás ejecutar el siguiente comando.
sudo apt-get install postgresql postgresql-contrib
Para conocer con qué versión de PostgreSQL estaremos trabajando será necesario ejecutar el siguiente comando en nuestra terminal.
postgres -V
Para este tutorial haremos uso de la herramiento PSQL la cual nos permitirá interactuar con nuestras bases de datos y sus registros.
En nuestra terminal colocamos psql seguido del nombre de la base de datos con la cual deseamos trabajar. Por default, existirá una base de datos llamada postgres.
psql postgres
Al nosotros conectarnos con el servidor No será necesario hacer uso de un usuario y una contraseña, tal y como pudiese pasar en otros gestores, por ejemplo, MySQL.
Listo, ya nos encontramos autenticados y listos para interactuar con nuestra base de datos. El siguiente paso será listar todas nuestras bases de datos. Podemos hacer esto de dos maneras.
\l
o
\list
Si vienes de un gestor como MySQL quizás las sentencias te sean un poco extrañas, por lo menos para mi lo fueron. 😦
Como no trabajaremos con la base de datos por default será necesario que creemos nuestra propia base de datos, en este caso : db_facilito
CREATE DATABASE db_facilito;
Una vez con la base de datos creada, el siguiente paso será conectarnos a ella, de igual forma, este paso lo podremos lograr de dos formas, con o sin abreviatura.
\c db_facilito;
o
\connect db_facilito;
A partir de este punto, todas las sentencias SQL que nosotros ejecutemos se harán directamente a la base de datos seleccionada.
¿Qué te parece si creamos una nueva tabla e insertamos un par de registros?.
CREATE TABLE users(
user_id serial PRIMARY KEY,
username VARCHAR(50) UNIQUE NOT NULL,
email VARCHAR(50) UNIQUE NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
Para listar todas las tablas
\dt
Insertemos un par de registros.
INSERT INTO users (username, email) VALUES ('usuario1', 'usuario1test.com');
INSERT INTO users (username, email) VALUES ('usuario2', 'usuario2test.com');
SQL puro, nada fuera de lo común.
Algo que creo es importante, es conocer el tiempo que le toma a nuestro servidor obtener los datos. Para ello ejecutamos la siguiente sentencia.
\timing on
podemos probar esto con un clásico SELECT * from users;.
Si nosotros queremos salir de PostgreSQL basta con ejecutar una simple sentencia.
\q
Usuarios
Algo de suma importancia a tener en cuenta es que PostgreSQL no maneja directamente usuarios o grupos como otros gestores, en lugar de ello se manejan roles. Si bien PostgreSQL genera un role administrador, es muy mala idea trabjar unica y exclusivamente con dicho role. Así que lo que haremos en este momente será crear un nuevo role.
Listamos todos los roles existentes.
\du
Para crear un nuevo role ejecutamos la siguiente sentencia, reemplazando username y password por los valores que creas conveniente.
CREATE ROLE username WITH LOGIN PASSWORD 'password'
El crear un nuevo rol es de suma importancia, pues todas las aplicaciones que quieran conectarse a alguna de nuestras bases de datos necesitaran autenticación.