Introduzione
PostgreSQL, o Postgres, è un sistema di gestione di database relazionali. Ha il vantaggio di essere conforme agli standard e con molte funzionalità avanzate.
In questo tutorial spiegheremo come installare Postgres su Linux Mint 19 Tara.
Installare PostgresSQL
È possibile installare PostgresSQL utilizzando il repository ufficiale di Linux Mint con apt.
Aggiornare la lista dei pacchetti:
sudo apt update
Installare PostgresSQL
sudo apt install postgresql postgresql-contrib
Utilizzare PostgresSQL
Di default Postgres utilizza un concetto chiamato "roles" per gestire autenticazione e autorizzazione, simili ai normali account in stile Unix.
Al momento dell'installazione, Postgres è impostato per utilizzare l'autenticazione ident, ovvero associa i roles di Postgres a un utente di sistema Linux corrispondente. Se esiste un role all'interno di Postgres, con lo stesso nome di un utente Linux, questo sarà in grado di accedere come tale ruolo.
La procedura di installazione ha creato un account utente chiamato postgres associato al role Postgres predefinito.
Per utilizzare questo account e per accedere a postgres ci sono diverse procedure.
Per loggare con l'utente postgres, da terminale:
sudo -i -u postgres
Quindi per accedere al prompt di Postgres e gestire il database, scrivere;
psql
Per uscire dal prompt di Postgres, scrivere:
\q
Creare un nuovo Role
Attualmente, hai solo il role di postgres configurato all'interno del database. È possibile creare nuovi roles dalla riga di comando con il comando createrole. L'opzione --interactive ti chiederà il nome del nuovo ruolo e se abilitare i permessi di superutente.
Se avete ancora il prompt di postgres attivo, scrivere:
\q
Se siete loggati con l'account postgres, è possibile creare un nuovo utente con il seguente comando:
createuser --interactive
Se siete loggati con un'altro account non ancora associato a postgres, utilizzare il seguente comando:
sudo -u postgres createuser --interactive
Vi verrà chiesto di inserire un nome per il nuovo role e di associargli i privilegi di superuser
Enter name of role to add: noviello
Shall the new role be a superuser? (y/n) y
Creare un nuovo Database
Il sistema di autenticazione di Postgres di default associa il role ad un database con lo stesso nome.
Quindi, se l'utente creato precedentemente è chiamato noviello, tale role tenterà di connettersi a un database che viene anche chiamato noviello per impostazione predefinita. È possibile creare il database appropriato con il comando createdb.
Se siete loggati con l'account postgres, è possibile creare un nuovo database con il seguente comando:
createdb noviello
Se siete loggati con un'altro account non ancora associato a postgres, utilizzare il seguente comando:
sudo -u postgres createdb noviello
Per accedere al prompt di Postgres con il nuovo role appena creato, è necessario che esista un utente Linux, in questo caso su Linux Mint, con lo stesso nome dato al role ed al database.
Se non esiste un utente con questo nome, è possibile crearne uno con il comando adduser.
Effettuare questa procedura con un account utente che non sia postgres.
Per creare un nuovo utente:
sudo adduser noviello
Adesso possiamo connetterci con il nuovo utente al database ed usare il prompt di postgres:
sudo -i -u noviello
psql
Per connettersi ad un database differente con l'utente corrente:
psql -d postgres
Per ottenere informazioni riguardo la connessione corrente:
\conninfo
Dovresti visualizzare un messaggio di risposta simile a questo:
You are connected to database "noviello" as user "noviello" via socket in "/var/run/postgresql" at port "5432".
Aggiungere ed eliminare dati nelle tabelle
Il seguente è un esempio per creare una tabella:
CREATE TABLE test (
id serial PRIMARY KEY,
esempio_1 varchar (50) NOT NULL,
esempio_2 varchar (25) NOT NULL,
esempio_3 varchar(25) check (esempio_3 in ('valore_1', 'valore_2', 'valore_3', 'valore_4', 'valore_5', 'valore_6', 'valore_7', 'valore_8')),
data_ins date
);
Per visualizzare la tabella appena creata:
\d
Dovresti visualizzare un messaggio di risposta simile a questo:
List of relations
Schema | Name | Type | Owner
--------+-------------------------+----------+---------
public | test | table | noviello
public | test_id_seq | sequence | noviello
(2 rows)
Per visualizzare la tabella senza ulteriori informazioni:
\dt
Dovresti visualizzare un messaggio di risposta simile a questo:
List of relations
Schema | Name | Type | Owner
--------+------------+-------+---------
public | test | table | noviello
(1 rows)
Per inserire dei nuovi valori nella tabella:
INSERT INTO test (esempio_1, esempio_2, esempio_3, data_ins) VALUES ('valore_1', 'valore_2', 'valore_3', '2018-06-29');
INSERT INTO test (esempio_1, esempio_2, esempio_3, data_ins) VALUES ('valore_4', 'valore_5', 'valore_6', '2018-06-29');
Per recuperare le informazioni appena inserite:
SELECT * FROM test;
Dovresti visualizzare un messaggio di risposta simile a questo:
id | esempio_1 | esempio_2 | esempio_3 | data_ins
----+-----------+-----------+-----------+------------
1 | valore_1 | valore_2 | valore_3 | 2018-06-29
2 | valore_4 | valore_5 | valore_6 | 2018-06-29
(2 row)
Per rimuovere una riga dal database:
DELETE FROM test WHERE esempio_1 = 'valore_1';
Recuperare nuovamente le informazioni dal database per verificare la corretta eliminazione della riga:
SELECT * FROM test;
Dovresti visualizzare un messaggio di risposta simile a questo:
id | esempio_1 | esempio_2 | esempio_3 | data_ins
----+-----------+-----------+-----------+------------
2 | valore_4 | valore_5 | valore_6 | 2018-06-29
(1 row)
Eliminare e aggiungere colonne nelle tabelle
Per aggiungere una colonna al database:
ALTER TABLE test ADD altro date;
Per visualizzare le modifiche ripetere il comando seguente:
SELECT * FROM test;
Dovresti visualizzare un messaggio di risposta simile a questo:
id | esempio_1 | esempio_2 | esempio_3 | data_ins | altro
----+-----------+-----------+-----------+------------+-----------
2 | valore_4 | valore_5 | valore_6 | 2018-06-29 |
(1 row)
Per eliminare una colonna:
ALTER TABLE test DROP altro;
Per visualizzare le modifiche ripetere il comando seguente:
SELECT * FROM test;
Dovresti visualizzare un messaggio di risposta simile a questo, quindi senza la colonna creata in precedenza:
id | esempio_1 | esempio_2 | esempio_3 | data_ins
----+-----------+-----------+-----------+------------
2 | valore_4 | valore_5 | valore_6 | 2018-06-29
(1 row)
Modificare i dati in una tabella
Per modificare dei dati è necessario specificare il nome del database e la colonna che si vuole modificare:
UPDATE test SET esempio_2 = 'nuovo_valore' WHERE esempio_1 = 'valore_4';
Per visualizzare le modifiche ripetere il comando seguente:
SELECT * FROM test;
Dovresti visualizzare un messaggio di risposta simile a questo:
id | esempio_1 | esempio_2 | esempio_3 | data_ins
----+-----------+-----------+-----------+------------
2 | valore_4 | nuovo_valore | valore_6 | 2018-06-29
(1 row)
Conclusione
L'installazione di PostgreSQL su Linux Mint 19 Tara è terminata