Sei sulla pagina 1di 30

SQL

Indice

1 Introduzione 1

2 Creare un DB 2
2.1 SQL Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2.2 pgAdmin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

3 Capitolo 3 - Creare ed eliminare l’oggetto TABLE 4


3.1 SQL Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3.2 pgAdmin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

4 Inserire dati nelle tabelle 8


4.1 SQL Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
4.2 pgAdmin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

5 Select in Postgresql 10
5.1 SQL Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
5.2 pgAdmin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

6 Operatori aritmetici 13
6.1 SQL Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

7 WHERE e comparazioni 16
7.1 SQL Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

8 Operatori logici 19
8.1 SQL Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

9 Commenti ed espressioni 22
9.1 pgAdmin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

II
Capitolo 1

Introduzione

SQL (Structural Query Language) è un linguaggio di programmazione uti-


lizzare per gestire i database (DB). Viene utilizzato prevalentemente per:
- data retrieval, ovvero interrogare i DB per estrarre dati;
- data manipulation, cioè immagazzinare, caricare ed eliminare dati dai
DB;
- creazione e modificazione degli oggetti del DB, in altre parole creare,
eliminare e modificare gli oggetti tipici dei DB, quali users, tables, views
e altro ancora;
- controllare i privilegi degli oggetti DB, ossia assegnare e rimuovere i
privilegi agli oggetti dei DB.
Le tabelle rappresentano i mattoni, gli elementi fondamentali di ogni DB.
Ogni tabella è identificata con un nome, e consiste di righe e colonne.
Le colonne, a loro volta, sono identificate da un nome ed hanno (contengono)
un tipo specifico di dati. Le righe sono solo record (quelle che in Statisti-
ca definiamo genericamente ”unità statistiche”) dei dati immagazzinati nella
tabella. Di seguito, una semplice tabella chiamata chitarra:

ID MODEL MANUFACTER PRICE


1 Les Paul Gibson $ 1.200,00
2 Stratocaster Fender $ 1.800,00
3 Soloist Jackson $ 2.500,00

Una volta creata la tabella ”chitarra”, è possibile immagazzinare le informa-


zioni al suo interno con l’aiuto della parola-chiave INSERT SQL.
Ma prima di tutto, come si creano le tabelle?

1
Capitolo 2

Creare un DB

Vediamo ora come si svolgono varie operazioni su SQL, dividendo tra l’am-
biente SQL Shell e l’interfaccia pgAdmin.

2.1 SQL Shell


Prima di tutto è necessario entrare nel sistema utilizzando la password, che
per comodità mettiamo essere ”admin”. Dopodiché, i passaggi per crare e
gestire i DB sono i seguenti:

- crare un DB con la funzione create database ”test”;, dove la parola


”test” rappresenta il nome che stiamo assegnando al nostro nuovo DB.
Il nome del DB è messo tra virgolette perché il programma non è case
sensitive, ovvero non riconosce le differenze dovute all’utilizzo di maiu-
scole e minoscole. Pertante, le parole ”Test” e ”test” sono considerate
come identiche dal suo punto di vista;

- vediamo tutti i DB presenti nel sistema utilizzando il comando \l, dove


”l” sta per ”list of all DB”;

- selezioniamo il nostro DB ”test” utilizzando il comando \c test dove


”c” sta per ”connect” e poi scriviamo il nome del DB al quale vogliamo
connetterci, in questo caso il DB ”test” creato prima. Notiamo che,
dopo aver inviato questo comando, ad inizio riga avremo ”test=#”
e non ”postgres=#” come prima. Per tornare alla situazione iniziale
basta utilizzare lo stesso comando di prima, solo cambiando nome del
DB;

- eliminiamo un DB con il comando drop database ”test”;;

2
2.2. PGADMIN 3

- disconnettiamo tutti i DB utilizzando il comando \q e poi premiamo


un tasto qualsiasi.

In generale, i comandi senza ”d̈avanti necessitano del ”;” alla fine per po-
ter funzionare. Inoltre, dopo il ”;” può essere eseguito anche un secondo
comando.

2.2 pgAdmin
Nella interfaccia pgAdmin per creare e gestire un DB i passi da seguire sono
i seguenti:

- premere il tasto destro del mouse su PostgreSQL 12 e selezionare


create → database e poi diamo un nome al nostro DB;

- per eliminare un DB basta cliccare col tasto destro del mouse sul nome
del DB di interesse e selezionare drop\delete;

- Infine, andando nella sezione dashboard possiamo vedere in fondo alla


pagina tutti i DB presenti nel nostro sistema.
Capitolo 3

Capitolo 3 - Creare ed
eliminare l’oggetto TABLE

Vediamo ora come creare ed eliminare l’oggetto table, uno dei mattoni fon-
damentali di SQL.

3.1 SQL Shell


Nel caso di SQL Shell, per creare ed eliminare gli oggetti ”table” i passaggi
da seguire sono i seguenti:

- entriamo in SQL Shell e connettiamoci al nostro DB test, creato prima,


utilizzando i comandi visti in precedenza;

- creiamo la tabella mediante il comando create table ”company”


(id int primary key not null, name text not null, age int not
null, address cha(50), salary real);. Cosa significa questa stringa
di comandi? Vediamola nel dettaglio:

• ”company” rapprensenta il nome che stiamo dando alla nostra


tabella. È posto tra virgolette per i motivi che abbiamo espresso
prima quando abbiamo parlato del nome da dare al nostro DB;
• id indica l’identificativo col quale vogliamo riferirci in maniera uni-
voca ai record nella nostra tabella, int sta per ”integer” e significa
che questo campo può essere riempito solo con numeri interi, pri-
mary key significa che ”id” rappresenta la mia chiave primaria
(si vedrà l’importanza di ciò più avanti), mentre not null significa
che questo campo non può contenere celle vuole;

4
3.2. PGADMIN 5

• name rappresenta un’altra variabile (colonna) che stiamo aggiun-


gendo alla nostra tabella, text serve per indicare che è una varia-
bile di testo (quindi il suo contenuto sarà una stringa di caratteri);
• age, altra variabile, richiama quanto già visto per le altre variabili;
• address, invece, presenta la definizione di char(50) che significa
che la sua tipologia è di tipo ”character” e che la sua ”taglia” è
di 50, cioè che è una variabile composta da elementi di testo che
non possono superare una lunghezza di 50;
• salary viene invece definita come variabile real, il che significa
che è di tipo libero.

- per descrivere questo schema, cioè avere quella che viene definita list
of all relation della nostra tabella usiamo il comando \d, dove ”d” sta
per describe;

- creiamo adesso una seconda tabella utilizzando il comando create ta-


ble ”department” (id int primary key not null, dept char(50)
not null, emp id int not null); e poi vediamo di nuovo le relazioni
con il comando \d;

- utilizziamo il comando drop table department; per eliminare la ta-


bella ”department” (o ”company”, in base a quale di vuole eliminare).
Anche qua, per le virgolette valgono le stesse regole viste prima.

3.2 pgAdmin
Nel caso di pgAdmin, per creare ed eliminare gli oggetti ”table” i passaggi
da seguire sono i seguenti (tenendo conto di quanto già fatto e degli oggetti
già creati con SQL Shell):

- selezioniamo il DB test creato prima in ”Databases” (nel caso in cui non


sia presente clicchiamo col in tasto destro del mouse su ”Databases” e
selezioniamo Refresh);

- all’interno del DB test clicchiamo su Schemas → public → Tables


per visualizzare la tabelle ”company” e ”department” create preceden-
temente;

- per creare una nuova tabella, oltre alle due già presenti, clicchiamo con
il tasto destro del mouse su ”Tables” e selezioniamo Create → Table,
6CAPITOLO 3. CAPITOLO 3 - CREARE ED ELIMINARE L’OGGETTO TABLE

dove mettiamo nel campo Name nella sezione General il nome del-
la tabella (”Student” in questo caso), mentre nella sezione Columns
inseriamo le colonne cliccando sul segno + accanto alla destra della
riga Columns (come mostrato in Fig.1), dove inseriamo il nome e
il tipo di dati che vogliamo inserire nella nostra tabella. Quindi, in
Name inseriamo il nome delle colonne (variabili), in Data type inse-
riamo la tipologia (ad esempio, ”integer”), e poi selezioniamo se devono
essere Not NULL e quale variabile rappresenta la Primary key (co-
sa che possiamo fare anche selezionandola nella sezione Constraints,
cliccando sul ”+”, poi sul simbolo per la modifica e poi scegliendo la
colonna nella casella ”Columns” presente nella sezione ”Definition”).
Nel caso in cui selezioniamo come ”Data type” character nella casella
Length/Precision inseriamo la lunghezza (ad esempio 50, come nel
caso della tabella ”company”);

Figura 3.1: Simbolo ”+” da utilizzare per aggiungere colonne alla nostra
tabella (in rosso).

- cliccando con il tasto destro del mouse sulla tabella di interesse pos-
siamo vedere tutte le sue proprietà (e riaprire la schermata usata per
creare la tabella) selezionando su Properties;

- per eliminare una tabella basta cliccare col il tasto destro del mouse su
di essa e selezionare Drop/Delete.

Andando su Tools → Query Tool o sul simbolo di Query Tool (come


mostrato in Fig.2 in rosso) è possibile aprire il Query editor dove si può
scrivere il codice come fatto il SQL Shell per creare quanto creato fino ad ora
3.2. PGADMIN 7

direttamente su pgAdmin. Per inviare il comando bisogna cliccare su tasto


Execute/Refresh (come mostrato in Fig.2 in arancione).

Figura 3.2: Tasto ”Query Tool” (rosso) e tasto ”Execute/Refresh”


(arancione).
Capitolo 4

Inserire dati nelle tabelle

Vediamo ora come inserire dati nelle tabelle create utilizzando i comandi dei
quali abbiamo parlato nella sezione precedente.

4.1 SQL Shell


Vediamo come inserire dati nelle tabelle utilizzando SQL Shell:

- per inserire più dati contemporaneamente all’interno di una tabella (in


questo caso usiamo la tabella ”company” creata nella sezione preceden-
te) utilizziamo il comando insert into company values (1, ”Sunil”,
12, ”Mumbai”, 30000), (2, ”Heena”, 16, ”Mumbai”, 30000);.

Possiamo vedere come i singoli elementi inseriti all’interno delle parentesi


corrispondano alle variabile che abbiamo definito quando abbiamo creato la
tabella. Questo è l’unico comando da utilizzare per inserire manualmente i
dati all’interno delle tabella nel caso di SQL Shell.

4.2 pgAdmin
Per quanto riguarda i comandi da eseguire per inserire dati nelle tabelle
nel caso di pgAdmin abbiamo che dobbiamo seguire i passaggi elencati nel
seguito:

- cerchiamo le tabelle create nella sezione precedente (”company” o ”de-


partment” è indifferente) e clicchiamo su ”Tables” (seguendo il percorso
descritto prima) per vedere nel dettaglio le nostre tabelle;

8
4.2. PGADMIN 9

- considerando, per comodità, la tabella ”company”, insieriamo i dati al


suo interno utilizzando il Tools ”Query Tool” (cosı̀ che il tutto risul-
ti come essere e scrivere su SQL Shell, al quale, tra l’altro, è anche
possibile connettersi);

- a questo punto, abbiamo due modi diversi per inserire i dati nella
tabella:

• possiamo utilizzare il comando insert into company (id, na-


me, age, address, salary) values (7, ’Rahul’, 20, ’Kolkata’,
50000);, dove mettiamo il nome delle variabili nel loro ordine esat-
to e poi inseriamo i valori relativi (per gli oggetti ”text” e ”char”
dobbiamo utilizzare le virgolette singole). Per verificare la cor-
rettezza dell’inserimento utilizziamo il comando select * from
company;, dove il simbolo * viene utilizzato per vedere tutto ciò
che è contenuto all’interno di una tabella di interessa (indica tutto
ciò che è presente all’interno della suddetta tabella);
• possiamo utilizzare un ordine definito da noi utilizzando il co-
mando insert into company values (4, ’Priya’, 24, ’Delhi’,
30000);.

- inoltre, utilizzando pgAdmin è possibile inserire i dati direttamente


nella tabella in basso che può essere visualizzata cliccando sul nome
della tabella e poi sul simbolo View Data (Fig.3).

Figura 4.1: Tasto ”View Data” (rosso).


Capitolo 5

Select in Postgresql

Vediamo ora come utilizzare una delle più importanti parole chiave di SQL,
ovvero Select, che viene utilizzata per prendere (nel senso di richiamare,
estrapolare in qualche modo) i dati dalle nostre tabelle o per selezionare i
dati che vogliamo visionare all’interno di una tabella.

5.1 SQL Shell


Per utilizzare la funzione select in SQL Shell seguiamo i passi seguenti:

- connettiamoci al DB test utilizzando il comando \c test;

- una volta connessi al DB test, nel caso in cui non ricordassimo i campi
della tabella ”company”, descriviamo la tabella utilizzando il comando
\d company, cosı̀ da poter visionare in comodità la colonna con i nomi
dei campi (cosı̀ da poter decidere in base a quali campi effettuare un
filtraggio, ad esempio);

- per utilizzando il comando select seguiamo una procedura molto sem-


plice (che poi utilizzeremo anche nel caso di pgAdmin), ovvero uti-
lizziamo la stringa di comando select id, name from company;,
ricordandoci sempre di utilizzare ; alla fine del comando. È possibi-
le vedere che il risultato che otteniamo è quello della nostra tabella
iniziale filtrata per i due campi selezionati;

- per selezionare (e quindi vedere, anche) tutta la tabella utilizziamo


il comando select * from company, dove, come sappiamo bene, *
indica che vogliamo selezionare tutto dalla nostra tabella.

10
5.2. PGADMIN 11

5.2 pgAdmin
Consideriamo il nostro DB test, e le due tabelle che abbiamo creato al suo
interno, ovvero la tabella ”company” e la tabella ”department”. Cominciamo
selezionando i dati dalla tabella ”company”, considerando i dati che abbiamo
inserito al suo interno precedentemente.
Vediamo come selezionare i dati mediante il comando select nel DB ”com-
pany” in PgAdmin:

- entriamo in ”Query Tool”, cosı̀ da poter scrivere direttamente il codice;

- scriviamo il comando select. Ora, sappiamo che la nostra tabella


”company” contiene diversi campi, ovvero ID, name, age, address e
salary;

- selezioniamo solo due di questi campi, ovvero ID e name, scrivendo


select id, name from company;, ricordando sempre di utilizzare ;
dopo aver scritto il codice, e inviamo il comando;

- fatto ciò, possiamo vedere come i nostri dati siano stati filtrati in base
alle colonne id e name (Fig. 5.1).

Figura 5.1: Stringa di comando per filtrare i dati mediante la funzione


”select” e risultato (in rosso).

Questo può essere considerato come il pricipale ruolo svolto dalla funzione
select, cioè quello di selettore. Inoltre, questa funzione può essere utilizzata
anche in combinazione con altre affermazioni e/o condizioni per filtrare i
12 CAPITOLO 5. SELECT IN POSTGRESQL

dati in maniera ancora più precisa, rappresentano cosı̀ una delle funzioni più
importanti e utili a nostra disposizione (cosa che verrà discussa in maniera
più approfondita nei capitoli successivi).
Per selezionare tutti i dati della nostra tabella dobbiamo utilizzare il comando
select * from company;, dove * significa seleziona tutto dalla tabella.
Capitolo 6

Operatori aritmetici

Vediamo in questo capitolo come utilizzare gli operatori artimetici in SQL,


vedendo solo il caso di SQL Shell. Nello specifico, gli operatori che vedremo
sono quello di addizione, sottrazione, moltiplicazione, divisione, l’operatore
modulo, l’elevamento a potenza, il calcolo fattoriale, la radice quadrata e la
radice cubica.

6.1 SQL Shell


Nel caso di SQL Shell per utilizzare gli operatori artimetici seguiamo i
passaggi seguenti:

- connettiamo ad SQL Shell ed iniziamo con il semplice operatore ad-


dizione per effettuare la somma 2 + 3 utilizzando la linea di comando
select 2 + 3;. Come possiamo osservare, il risultato che ci viene dato
in output è 5;

- lo stesso può essere effettuato per qualsiasi altro tipo di operazione,


quale:

• la divisione, che si ottiene utilizzando il simbolo −;


• la moltiplicazione, che si ottiene utilizzando il simbolo ∗;
• la divisione, che si ottiene utilizzando il simbolo /;
• l’operatore modulo, cioè la funzione che da come risultato il resto
della divisione euclidea (in altre parole, mi esplicita il resto della
divisione), che si ottiene utilizzando il simbolo %;
• l’elevamento a potenza (operatore esponenziale), che si ottiene
utilizzando il simbolo ∧;

13
14 CAPITOLO 6. OPERATORI ARITMETICI

• il calcolo fattoriale, che si ottiene utilizzando il simbolo !;


• la radice quadrata, che si ottiene utilizzando il simbolo |/;
• la radice cubica, che si ottiene utilizzando il simbolo ||/.

Figura 6.1: Operatori aritmetici in SQL Shell (utilizzati seguendo l’ordine


segnato nel testo).
6.1. SQL SHELL 15

Figura 6.2: Operatori aritmetici in SQL Shell (utilizzati seguendo l’ordine


segnato nel testo).

Per pulire lo schermo dopo aver effettuato tutte queste operazioni possia-
mo usare il comando \! cls.
Capitolo 7

La proposizione WHERE e gli


operatori di comparazione

In questo capitolo vedremo come utilizzare la proposizione where e gli opera-


tori per effettuare delle comparazioni. In particolare, la proposizione where
serve per selezionare dalle tabelle dei valori che rispondono a delle determi-
nate condizioni che si suppone vogliamo applicare, ad esempio vedere tutte
le unità (o solo delle loro caratteristiche, come nome, indirizzo o qualsiasi al-
tro valore) che presentano uno specifico valore di una determinata variabile.
La poposizione where viene quindi utilizzata o per filtrare o per abbina-
re (matching) in modo particolare i dati. In questo capitolo vedremo come
utilizzarlo solo nel caso di SQL Shell.

7.1 SQL Shell


Entriamo in SQL Shell, inserendo la nostra password, come al solito. Al fi-
ne di vedere meglio il funzionamento della proposizione where aggiungiamo
altre informazioni alla nostra tabella company (utilizzando quando impa-
rato nelle lezioni precedenti). Fatto ciò, vediamo come funziona la nostra
proposizione di interesse step-by-step:

- connettiamo al nostro DB test utilizzando l’istruzione \c test;;

- inseriamo le nuove informazioni alla nostra tabella company utiliz-


zando l’istruzione insert into company values (8, ’Priyanshi’, 23,
’Delhi’, 20000), (9, ’Kumar’, 40, ’Delhi’, 20000), (10, ’Rishi’,
34, ’Mumbai’,20000);, ricordandoci che l’istruzione per fare ciò è
insert into *nome tabella* values (*valori da inserire ordinati
in base ai campi della tabella*);

16
7.1. SQL SHELL 17

- utilizziamo adesso la proposizione where per, ad esempio, seleziona-


re i nomi di tutti coloro che hanno un’età pari a 34 anni. Quello che
andiamo a fare, quindi, è filtrare i nostri dati selezionando i nomi dei
soggetti nei quali (dove, per l’appunto) l’età risualta essere uguale a
34. Per fare ciò, utilizziamo l’istruzione select *nome della variabi-
le di interesse (o anche tutte, usando *)* from *nome tabella*
where *variabile in base alla quale definire il filtro* = *valo-
re in base al quale effettuare la selezione*;. Nel caso specifico,
l’istruzione da usare sarà select name from company where age
= 34;. Il risultato che otteniamo è la lista dei nomi delle unità che
presentano un valore dell’età pari a 34;

- proviamo ora ad utilizzare nuovamente la funzione where non con l’o-


peratore uguale, come nel caso precedente, ma con l’operatore non
uguale. In questo caso l’istruzione che utilizzeremo sarà select name
from company where age != 34;. Come possiamo vedere, per in-
dicare la negazione di un’operazione utilizziamo il simbolo ! prima del
simbolo dell’operazione. In questo caso, il risultato che otteniamo è la
lista dei nomi degli individui che NON hanno 34 anni;

- l’operazione appena svolta (ovvero, la non uguaglianza) può essere rea-


lizzata anche mediante l’utilizzo di un’altra forma, rappresentata dal-
l’istruzione select * from company where age ¡¿ 34;, dove viene
utilizzando il simbolo ¡¿, che indica la non uguaglianza (in quanto in-
dicano che vengano considerati, rispettivamente, tutti i valori minori
o maggiori di quello selezionato). È necessario che i due simboli sia-
no posti nell’ordine indicato, altrimento l’istruzione non verrà letta da
SQL Shell, rimandandoci un messaggio di errore;

- nel caso in cui volessimo, invece, filtrare per i valori maggiori di un


determinato valore numerico utilizzeremo il simbolo ¿, scrivendo l’i-
struzione nel modo seguente select * from company where age ¿
34;. Per ottenere maggiore o uguale utilizziamo l’operatore ¿= (in
questo ordine specifico);

- per ottenere gli individui che presentano modalità di una determinata


variabile minori di un certo valore utilizziamo un’istruzione analoga
a quella appena vista, utilizzando però l’operatore ¡, ottenendo cosı̀
l’istruzione seguente select * from company where age ¡ 34;. Per
ottenere minore o uguale utilizziamo l’operatore ¡= (in questo ordine
specifico).
18 CAPITOLO 7. WHERE E COMPARAZIONI

Abbiamo, quindi, visto che mediante la proposizione where e gli operatori


di uguaglianza, disuguaglianza, maggiore e minore (e loro combinazioni varie)
è possibile creare delle condizioni mediante le quali filtrare in maniera più
puntuale (e complessa) i nostri dati.
Capitolo 8

Operatori logici

In questo capitolo parleremo degli operatori logici. Il compito degli ope-


ratori logici è praticamente quello di creare query complesse e definire
dei filtri nei nostri dati. In particolare, gli operatori logici di cui parle-
remo in questo capitolo sono l’operatore and, l’operatore or, l’operatore is
null, l’operatore like, l’operatore in e l’operatore between. Vediamo come
utilizzarli, uno ad uno, solo in SQL Shell.

8.1 SQL Shell


Vediamo come utilizzare gli operatori logici in SQL Shell. Seguiamo i passi
seguenti:

- selezioniamo tutti i dati della tabella company utilizzando l’istruzione


select * from company;

- iniziamo vedendo il funzionamento dell’operatore and, che serve per


filtrare i dati considerando più di una condizione che devono essere con-
temporaneamente vere. Supponiamo di voler selezionare le unità che,
contemporaneamente, età maggiore di 33 anni e stipendio superiore a
1000 dollari. In questo utilizziamo l’istruzione select * from compa-
ny where age ¿ 33 and salary ¿ 1000;. Il risultato che otteniamo
è la lista dei soggetti che presentano queste due caratteristiche (cioè,
per i quali queste due caratteristiche sono vere) contemporaneamente
(pensiamo alla teoria degli insiemi, non ci ricorda forse l’intersezione
tra insiemi?);

- il secondo operatore che andiamo a studiare è l’operatore or. In questo


caso, quello che vogliamo ottenere è la lista delle unità statistiche che

19
20 CAPITOLO 8. OPERATORI LOGICI

presentano almeno una delle caratteristiche (cioè, per le quali almeno


una delle caratteristiche selezionate è vera) in base alle quali vogliamo
filtrare i dati. Supponiamo, in questo caso, di volere la lista dei soggetti
che o hanno più di 33 anni o guadagno più di 1000 dollari l’anno. In
questo caso, l’istruzione che andremo a scrivere sarà select * from
company where age ¿ 33 or salary ¿ 1000;. Quello che otteniamo
è la lista dei soggetti per i quali almeno una delle due condizioni è
vera (in questo caso, pensando alla teoria degli insiemi, non ci ricorda
l’unione questa operazione?);

- il terzo operatore che andiamo ad analizzare è l’operatore is null, usa-


to per selezionare le unità che non presentano valori in determinati
campi. Dato che la nostra è una tabella nella quale nessuno dei campi
permetteva il non inserimento dei valori, l’operatore is null non for-
nirà nessun risultato. Possiamo vederlo scrivendo, ad esempio select
* from company where salary in null;. Non avremo nessun valore
come risultato;

- il quarto operatore che vediamo è l’operatore like, utilizzato per filtrare


i dati in base a delle loro caratteristiche che li rendono simili a delle
query da noi inviate. Supponiamo, ad esempio, di voler selezionare
tutte le unità statistiche che presentano un nome che inizia per P. In
questo caso scriviamo l’istruzione nel modo seguente select * from
company where name like ’P%’;, dove % viene utilizzato per indi-
care tutto quello che segue l’oggetto di nostro interesse, cioè, in questo
caso, P. Questo operatore ci permette, quindi, di filtrare i dati in base
ad una specifica stringa di caratteri di nostro interesse. Il risultato che
otteniamo è l’insieme dei soggetti che presentano il nome che inizia per
P. Nel caso in cui volessimo filtrare i dati in base all’ultima lettere del
nome (supponiamo vogliamo sia a), l’istruzione che andremo a scrivere
sarà select * from company where name like ’%a’;. Il risultato
che otteniamo è l’insieme delle unità che presnetano un nome che ter-
mina per a. Se, invece, vogliamo i soggetti che in qualsiasi punto del
proprio nome presentano la lettera a andremo a scrivere tra gli apici %
a % nell’istruzione vista prima;

- il quinto operatore che analizziamo è l’operatore in, utilizzato per sele-


zionare le unità che presentano uno specifico valore in un campo della
tabella. Supponiamo di voler selezionare le unità che presentano un’età
pari a 20, 34 e 40. In questo caso, l’istruzione che andiamo a scrive-
re sarà select * from company where age in (’20’, ’34’, ’40’);,
ricordando di mettere i valori in parentesi tra apici. Il risultato che
8.1. SQL SHELL 21

otteniamo è la lista dei soggetti che presentano esattamente quel valore


per l’età;

- infine, andiamo a studiare l’operatore between, che viene usato insie-


me all’operatore and per selezionare le unità statistiche che presentano
valori di una variabile compresi in un determinato range. Supponiamo
di voler filtrare i soggetti che hanno un’età compresa tra 23 e 34 anni.
Per scrivere l’istruzione abbiamo bisogno degli operatori between e
and e due valori, uno inziale e uno finale. L’istruzione che useremo
sarà, in questo caso specifico, select * from company where age
between 23 and 34;. Il risultato che ottiamo è la lista degli individui
che hanno un’età compresa tra 24 e 34 anni (inclusi).
Capitolo 9

Commenti ed espressioni

In questo capitolo parleremo di come si inserisco i commenti e impareremo


qualcosa su alcune delle espressioni in pgAdmin.

9.1 pgAdmin
Iniziamo parlando dei commenti e poi delle espressioni.

- Per quanto riguarda i commenti, questi, come sappiamo bene (e come


possiamo anche ben immaginare), vengono utilizzati principalmente o
per specificare all’utente le funzionalità di determinati comandi o per
ricordare all’utilizzare particolarità o altro riguardo lo script in esame.
Insomma, sono dei commenti veri e propri, come quelli che scriviamo
a bordo pagina sui libri! Per scrivere commenti in pgAdmin andiamo
nel nostro DB test e clicchiamo sul pulsante Query Tool (che abbiamo
già incontrato nei capitoli precedenti) per accedere al Query Editor.
Qui, a questo punto, utilizziamo il simbolo - - (double dash) e inseriamo
il nostro commento (Fig. 9.1).
Come possiamo vedere nella figura, il testo scritto in commento è iden-
tificato mediante il colore arancione. Se scrivessimo un comando al
di sotto del commento, come select * from company, ad esempio,
l’unico comando che verrebbe processato è quest’ultimo. Se invece
mettessimo il simbolo - - davanti al comando sopra citato, nessuna
istruzione verrebbe processata dal sistema, essendo tutte identificate,
adesso, come commenti. Questo ci permette di comprendere ancora di
più l’importa dell’utilizzo dei commenti. Inoltre, è possibile scrivere
dei commenti utilizzando il metodo classico utilizzato in ambito infor-
matico (o almeno cosı̀ mi dice la regia), inserendo il testo che si vuole

22
9.1. PGADMIN 23

Figura 9.1: Esempio di commento utilizzando il simbolo - - (in rosso) in


pgAdmin.

definire come commento tra i simboli /* */, ad esempio scrivendo /*


Questo è un commento! */. Il risultato che avremo è identico a
quello del caso precedente. Questo secondo metodo, inoltre, ci per-
mette di scrivere commenti su più righe senza dover utilizzare nessun
simbolo extra, al contrario del double dash - -, che va ripetuto all’inizio
di ogni linea (Fig. 9.2).

Figura 9.2: Esempio di commento utilizzando il simbolo /* */ su due righe


(in rosso) in pgAdmin.
24 CAPITOLO 9. COMMENTI ED ESPRESSIONI

- Le espressioni, invece, sono, in poche parole, combinazioni di due o


più valori, operatori o funzioni, che vengono utilizzate per valutare un
particolare valore. Di seguito alcune delle espressioni più comunemente
utilizzate in SQL.

• La prima espressione che analizziamo è l’espressione as, che vie-


ne utilizzata per rinominare un particolare campo (o variabile).
Consideriamo, ad esempio, la tabella company presente nel DB
test. Utilizzando l’istruzione select name from company; pos-
siamo vedere come il nome della nostra variabile sia, per l’appunto,
name. Supponiamo di voler modificare questo nome, e di voler
chiamare la nostra variabile employee name. In questo caso, l’i-
struzione che scriveremo sarà select name as employee name
from company;. Come possiamo vedere (Fig. 9.3) la variabile
adesso si chiama employee name.

Figura 9.3: Risultato dell’utilizzo dell’espressione as (in rosso) in pgAdmin.

• La seconda espressione che analizziamo è l’operatore count, uti-


lizzato principalmente per contare il numero di unità statistiche
(o record ) presenti in una tabella o dataset. Supponiamo di voler
contare il numero di unità presenti nella tabella company. L’istru-
zione che scriveremo sarà select count (*) from company;. Il
risultato che otterremo sarà 8, ovvero il numero di soggetti che
fino ad ora abbiamo inserito nella nostra tabella (Fig. 9.4).
Utilizziamo il simbolo (*) per indicare che ci riferiamo all’intero
dataset.
9.1. PGADMIN 25

Figura 9.4: Risultato dell’utilizzo dell’espressione count (in rosso) in


pgAdmin.

• La terza espressione che analizziamo è l’espressione max, che ci


permette di individuare il valore massimo in un determinato cam-
po (o variabile). Supponiamo di voler sapere il valore massimo
dell’età nella nostra tabella company. L’istruzione che scriveremo
sarà select max (age) from company;. Il risultato che otte-
niamo è il valore 40, ovvero il valore massimo presente nel campo
età (Fig. 9.5).

Figura 9.5: Risultato dell’utilizzo dell’espressione max (in rosso) in pgAdmin.


26 CAPITOLO 9. COMMENTI ED ESPRESSIONI

• La quarta espressione che analizziamo è l’espressione min, che


ci permette di individuare il valore minimo in un determinato
campo (o variabile). Supponiamo di voler sapere il valore minimo
dell’età nella nostra tabella company. L’istruzione che scriveremo
sarà select min (age) from company;. Il risultato che ottenia-
mo è il valore 12, ovvero il valore minimo presente nel campo età
(Fig. 9.6).

Figura 9.6: Risultato dell’utilizzo dell’espressione min (in rosso) in pgAdmin.

• La quinta espressione che analizziamo è l’espressione sum, che


ci permette di fare la somma di tutti i valori presenti in un de-
terminato campo (o variabile). Supponiamo di voler conoscere il
valore totale di tutti i salari presenti nella nostra tabella compa-
ny. L’istruzione che scriveremo sarà select sum (salary) from
company;. Il risultato che otteniamo è il valore 200400, ovvero il
valore totale dei salari degli individui presenti nella nostra tabella
(Fig. 9.7).
9.1. PGADMIN 27

Figura 9.7: Risultato dell’utilizzo dell’espressione sum (in rosso) in pgAdmin.

• La sesta espressione che analizziamo è l’espressione avg (cioè, ave-


rage), che ci permette di fare la media dei valori presenti in un
determinato campo (o variabile). Supponiamo di voler conoscere
il media dei valori dei salari presenti nella nostra tabella compa-
ny. L’istruzione che scriveremo sarà select avg (salary) from
company;. Il risultato che otteniamo è il valore 25050, ovvero il
valore medio dei salari degli individui presenti nella nostra tabella
(Fig. 9.8).

Figura 9.8: Risultato dell’utilizzo dell’espressione avg (in rosso) in pgAdmin.


28 CAPITOLO 9. COMMENTI ED ESPRESSIONI

• Infine, la settima (e ultima) espressione che analizziamo è l’espres-


sione current timestamp, che ci permette di visualizzare giorno
e orario correnti, utili nel caso dovessimo fare foto o stampe, per
qualsiasi motivo. Ad esempio, per conoscere il giorno e l’ora in cui
stiamo realizzando questo semplice scritto basterà scrivere l’istru-
zione select current timestamp;. Il risultato che otteniamo è
il valore del giorno e dell’ora correnti (Fig. 9.9).

Figura 9.9: Risultato dell’utilizzo dell’espressione current timestamp (in


rosso) in pgAdmin.