Skillbook Logo
foto profilo

Skill Factory

Lista post > Ricominciamo ... dal linguaggio SQL Lezione 8

Ricominciamo ... dal linguaggio SQL Lezione 8

Gino Visciano | Skill Factory - 06/04/2016 22:46:50 | in Tutorials

Benvenuti all'ottava lezione, da questa lezione in poi imparerete a mettere in relazione tra loro più tabelle, utilizzando le operazioni ti tipo JOIN.

I tipi di JOIN più usati sono i seguenti:

  1. INNER JOIN
  2. OUTER JOIN
  3. SELF JOIN
  4. CROSS JOIN

 

In questa lezione vedrete come mettere il relazione tra loro due o più tabelle con un INNER JOIN.

La relazione tra una chiave primaria di una tabella Master e la chiave esterna di una tabella di Dettaglio si crea attraverso un'oprazione di INNER JOIN.

Per capire come funziona questo tipo di JOIN, vediamo come si creano le relazioni tra la Tabella di Dettaglio LIBRI e le tabelle Master associate: GENERI, EDITORI, AUTORI, come mostra lo schema fisico seguente:

 

STEP 1:

Inserite tre generi diversi, nella tabella GENERI:

INSERT INTO GENERI (GENERE) VALUES ('FANTASCIENZA');
INSERT INTO GENERI (GENERE) VALUES ('GIALLI');
INSERT INTO GENERI (GENERE) VALUES ('ROMANZI');

Per visualizzare i record della tabella GENERI usate il comando seguente:

SELECT * FROM GENERI;

ID  GENERE
1   FANTASCIENZA
2   GIALLI
3   ROMANZI

Successivamente inserite 3 libri, ogni libro deve corrispondere ad un genere presente nella Tabella GENERI.

INSERT INTO LIBRI (CODICE_ISBN, TITOLO, ID_GENERE) VALUES ('8845247430', 'IO ROBOT', 1);
INSERT INTO LIBRI (CODICE_ISBN, TITOLO, ID_GENERE) VALUES ('8804550201', 'LA PAURA DI MONTALBANO', 2);
INSERT INTO LIBRI (CODICE_ISBN, TITOLO, ID_GENERE) VALUES ('8806176943', 'ODISSEA', 3);

Per visualizzare i record della tabella LIBRI usate il comando seguente:

SELECT * FROM LIBRI;

CODICE_LIBRO CODICE_ISBN TITOLO ID_GENERE
1 8845247430 IO ROBOT 1
2 8804550201 LA PAURA DI MONTALBANO 2
2 8806176943 ODISSEA 3

                                               
A questo punto le due Tabelle sono pronte per essere associate attraverso un'oprazione di INNER JOIN, utilizzando il comando seguente:

SELECT LIBRI.CODICE_LIBRO, LIBRI.CODICE_ISBN, LIBRI.TITOLO, GENERI.GENERE FROM LIBRI
              INNER JOIN GENERI ON (LIBRI.ID_GENERE=GENERI.ID);

CODICE_LIBRO CODICE_ISBN TITOLO GENERE
1 8845247430 IO ROBOT FANTASCIENZA
2 8804550201 LA PAURA DI MONTALBANO GIALLI
3 8806176943 ODISSEA ROMANZI

                                                     
In un'operazione di INNER JOIN è importante la condizione associata alla clausola ON, perché permette di associare le chiavi primarie delle tabelle Master con le chiavi esterne delle tabelle di Dettaglio. Nell'esempio la condizione LIBRI.ID_GENERE=GENERI.ID, associa la chiave esterna LIBRI.ID_GENERE della tabella LIBRI, con la chiave primaria GENERI.ID della tabella GENERI.

Attenzione, prima di passare allo STEP seguente, non dimenticate che in caso di INNER JOIN le colonne devono avere come prefisso il nome della tabella a cui appatengono.

Inoltre la clausola INNER JOIN, si può usare anche nella forma abbreviata JOIN.

STEP 2:

Inserite tre Editori diversi, nella tabella EDITORI:

INSERT INTO EDITORI (EDITORE) VALUES ('GIUNTI');
INSERT INTO EDITORI (EDITORE) VALUES ('LAFELTRINELLI');
INSERT INTO EDITORI (EDITORE) VALUES ('GNOME PRESS');

Per visualizzare i record della tabella EDITRI usate il comando seguente:

SELECT * FROM EDITORI;

ID  EDITORE
1   GIUNTI
2   LAFELTRINELLI
3   GNOME PRESS

Per aggiungere gli Editori ai Libri dovete usare il comando UPDATE, perché il libri già sono stati inseriti nello STEP 1:

UPDATE LIBRI SET ID_EDITORE=3 WHERE CODICE_LIBRO=1;
UPDATE LIBRI SET ID_EDITORE=2 WHERE CODICE_LIBRO=2;
UPDATE LIBRI SET ID_EDITORE=1 WHERE CODICE_LIBRO=3;

Per visualizzare i record della tabella LIBRI usate il comando seguente:

SELECT * FROM LIBRI;

 

CODICE_LIBRO CODICE_ISBN TITOLO ID_GENERE ID_EDITORE
1 8845247430 IO ROBOT 1 3
2 8804550201 LA PAURA DI MONTALBANO  2 2
3 8806176943 ODISSEA 3 1

 

A questo punto potete associare le tre Tabelle utilizzando il comando seguente, dove l'INNER JOIN viene usato nella forma abbreviata:

SELECT LIBRI.CODICE_LIBRO, LIBRI.CODICE_ISBN, LIBRI.TITOLO, GENERI.GENERE, EDITORI.EDITORE FROM LIBRI
              JOIN GENERI ON (LIBRI.ID_GENERE=GENERI.ID)
              JOIN EDITORI ON (LIBRI.ID_EDITORE=EDITORI.ID);

CODICE_LIBRO CODICE_ISBN TITOLO GENERE EDITORE
1 8845247430 IO ROBOT FANTASCIENZA GNOME PRESS
2 8804550201 LA PAURA DI MONTALBANO  GIALLI LAFELTRINELLI 
3 8806176943 ODISSEA ROMANZI GIUNTI

 

STEP 3:

 

Inserite tre Autori diversi, nella tabella AUTORI:

 

INSERT INTO AUTORI (AUTORE) VALUES ('ANDREA CAMILLERI');
INSERT INTO AUTORI (AUTORE) VALUES ('ISAAC ASIMOV');
INSERT INTO AUTORI (AUTORE) VALUES ('OMERO');

Per visualizzare i record della tabella AUTORI usate il comando seguente:

SELECT * FROM AUTORI;

ID  AUTORE
1   ANDREA CAMILLERI
2   ISAAC ASIMOV
3   OMERO

Per aggiungere gli Autori ai Libri dovete usare il comando UPDATE, perché il libri già sono stati inseriti nello STEP 1:

UPDATE LIBRI SET ID_AUTORE=2 WHERE CODICE_LIBRO=1;
UPDATE LIBRI SET ID_AUTORE=1 WHERE CODICE_LIBRO=2;
UPDATE LIBRI SET ID_AUTORE=3 WHERE CODICE_LIBRO=3;

Per visualizzare i record della tabella LIBRI usate il comando seguente:

SELECT * FROM LIBRI;

 

CODICE_LIBRO CODICE_ISBN TITOLO ID_GENERE ID_EDITORE ID_AUTORE
1 8845247430 IO ROBOT 1 3 2
2 8804550201 LA PAURA DI MONTALBANO  2 2 1
3 8806176943 ODISSEA 3 1 3

                                                  
A questo punto potete associare le quattro Tabelle utilizzando il comando seguente:

SELECT LIBRI.CODICE_LIBRO, LIBRI.CODICE_ISBN, LIBRI.TITOLO, AUTORI.AUTORE, GENERI.GENERE, EDITORI.EDITORE FROM LIBRI
              JOIN GENERI ON (LIBRI.ID_GENERE=GENERI.ID)
              JOIN EDITORI ON (LIBRI.ID_EDITORE=EDITORI.ID)
              JOIN AUTORI ON (LIBRI.ID_AUTORE=AUTORI.ID);

CODICE_LIBRO CODICE_ISBN TITOLO GENERE EDITORE AUTORE
1 8845247430 IO ROBOT FANTASCIENZA GNOME PRESS ISAAC ASIMOV
2 8804550201 LA PAURA DI MONTALBANO  GIALLI LAFELTRINELLI  ANDREA CAMILLERI
3 8806176943 ODISSEA ROMANZI GIUNTI OMERO

                                                                         
Come aggiungere gli ALIAS di Colonna alle operazioni di INNER JOIN

Un ALIAS di colonna è un Titolo che si può associare ad una colonna per personalizzare un prospetto di visualizzazione.

Nell'esempio seguente sono stati aggiunti due ALIAS di colonna, li riconoscete perché sono scritti tra virgolette.  

SELECT LIBRI.CODICE_LIBRO "CODICE LIBRO", LIBRI.CODICE_ISBN "CODICE ISBN", LIBRI.TITOLO,
              AUTORI.AUTORE, GENERI.GENERE, EDITORI.EDITORE FROM LIBRI
              JOIN GENERI ON (LIBRI.ID_GENERE=GENERI.ID)
              JOIN EDITORI ON (LIBRI.ID_EDITORE=EDITORI.ID)
              JOIN AUTORI ON (LIBRI.ID_AUTORE=AUTORI.ID);

 

CODICE LIBRO CODICE ISBN TITOLO GENERE EDITORE AUTORE
1 8845247430 IO ROBOT FANTASCIENZA GNOME PRESS ISAAC ASIMOV
2 8804550201 LA PAURA DI MONTALBANO  GIALLI LAFELTRINELLI  ANDREA CAMILLERI
3 8806176943 ODISSEA ROMANZI GIUNTI OMERO

 

Come aggiungere gli ALIAS di Tabella alle operazioni di INNER JOIN

Un ALIAS di Tabella è un nome ulteriore che si può associare ad una Tabella. Di solito gli ALIAS di Tabella sono delle abbreviazioni che si usano per scrivere le SELECT in modo più compatto, come mostra l'esempio seguente:

SELECT L.CODICE_LIBRO "CODICE LIBRO", L.CODICE_ISBN "CODICE ISBN", L.TITOLO,
             A.AUTORE, G.GENERE, E.EDITORE FROM LIBRI L
              JOIN GENERI G ON (L.ID_GENERE=G.ID)
              JOIN EDITORI E ON (L.ID_EDITORE=E.ID)
              JOIN AUTORI  A ON (L.ID_AUTORE=A.ID);

 


<< Lezione precedente           Lezione successiva >>


T U T O R I A L S    S U G G E R I T I


Share Button
TOP