Trabajando con PostgreSQL en Debian Jessie

Hola amigas y amigos, ya estamos aquí. En el artículo de hoy vamos a trabajar con PostgreSQL, un sistema de gestión de base de datos relacional. Uno de los sistemas más utilizados  y que además es software libre.

Por extraño que parezca durante estos casi siete años no le he dedicado ningún artículo. Aunque en algún que otro artículo lo he mencionado. Así que vamos allá. Para la ocasión voy a utilizar un sistemas operativo Debian, uno de los más veteranos del Ñu y el Pingüino. Ambos comparten que utilizan licencias de software libre y que son proyectos comunitarios, esto es, no tienen ninguna empresa detrás. Otra de sus ventajas es que es multiplataforma.

Si revisamos un poco su historia, empieza en los años ochenta cuando Michael Stonebraker intentando mejorar el popular MySQL, inicó el proyecto Post-Ingres.  Desde entonces ha llovido mucho, actualmente tiene muchas cosas en lo que destacar respecto a sus competidores, por ejemplo el control de concurrencias multiversión (MVCC en inglés) , ofreciendo grandes ventajas en su rendimiento. Esto hace que no se requiera realizar bloqueos de lectura cuando se quiere hacer una transacción. Además utiliza el sistema Host-Standby, que permite al usuario o administrador realizar tareas sobre la base de datos, por ejemplo búsquedas en modo sólo lectura, mientras esté en modo de recuperación o espera.

Instalando PostgreSQL en Debian Jessie

En esta ocasión, al igual que en la mayoría de sistemas GNU Linux, Debian ya lleva el programa en sus repositorios principales. Por lo que su instalación es bien sencilla:

1
2
sudo apt update
sudo apt install postgresql

He tuneado un poco la máquina virtual 🙂

Acceso a la máquina virtual

Una vez instalado se crea un nuevo usuario llamado ‘postgres’ que tiene rol de superusuario. Una vez instalado debemos asignarle una contraseña, ya que por defecto no lleva:

1
sudo passwd postgres

En cualquier caso no es conveniente utilizar este usuario por motivos obvios de seguridad. Para ello primero accedemos con el usuario:

1
sudo su postgres

Aquí una muestra:

1
2
3
4
5
6
7
8
9
davidochobits@debian-db1:~$ sudo -s
root@debian-db1:/home/davidochobits# passwd postgres
Introduzca la nueva contraseña de UNIX: 
Vuelva a escribir la nueva contraseña de UNIX: 
passwd: contraseña actualizada correctamente
root@debian-db1:/home/davidochobits# su postgres
postgres@debian-db1:/home/davidochobits$ cd 
postgres@debian-db1:~$ pwd
/var/lib/postgresql

El directorio que utiliza es /var/lib/postgresql. Creamos el nuevo usuario:

1
createuser -s davidochobits -P

Con el parámetro «-s» le asignamos permisos de superusuario. He añadido un nuevo usuario con mi nombre de usuario del sistema. De esta manera podré interactuar con las bases de datos sin problema.

Ahora dejamos de utilizar el usuario ‘postgres’ y volvemos con nuestro usuario habitual. El siguiente paso es crear una nueva base de datos. Para ello utilizamos el comando ‘createdb’, como sigue:

1
createdb basedatos1

Una vez ya está creada para trabajar con ella utilizamos el comando ‘psql’, que es un intérprete de comandos.

1
psql basedatos1

Al hacer esto accedemos a la consola interactiva:

1
2
3
4
5
6
davidochobits@debian-db1:~$ createdb basedatos1
davidochobits@debian-db1:~$ psql basedatos1
psql (9.4.10)
Digite «help» para obtener ayuda.
 
basedatos1=#

Tal y como indica podemos obtener ayuda escribiendo ‘help‘, en cualquier momento.

A modo de ejemplo vamos a crear varias tablas en la base de datos. Vamos a imaginar que tenemos una pequeña empresa, así que vamos a crear las tablas de los clientes, los proveedores y los trabajadores. Lo haríamos así:

Primero creamos la de clientes:

1
2
3
CREATE TABLE clientes (
nombre VARCHAR,
clave VARCHAR);

El sistema nos respondería con un mensaje de ‘CREATE TABLE’

Ahora le toca el turno a proveedores:

1
2
3
CREATE TABLE proveedores (
nombre VARCHAR,
clave VARCHAR);

Y por último trabajadores:

CREATE TABLE trabajadores (
nombre VARCHAR,
clave VARCHAR);

Con esto ya tendremos creadas las tres tablas.

Si queremos visualizar las tablas creadas, escribiremos:

1
\dt

La imagen será similar a esta:

Si por el contrario deseamos eliminar una tabla escribiremos:

1
DROP TABLE 'nombre_de_la_tabla'

Si además queremos eliminar una base de datos:

1
DROP DATABASE 'nombre-si-existe'

Y con estos apuntes lo dejamos por hoy. Espero que el artículo os haya sido de ayuda.