ITIS - ISTITUTO TECNICO INDUSTRIALE “N.
MIRAGLIA” - classe VC
INFORMATICA
Linguaggio SQL
Tabelle, Tipi di dati & Interrogazioni
Relatore: Egidio Giacoia Didattica dell’informatica a.a. 2018/2019
Metodi didattici
➔ Lezione frontale teorica (slide) con esempi concreti
➔ Cooperative Learning
➔ Gamification Learning
Obiettivo della lezione
★ Comprensione di un DBSM
★ Essere in grado di progettare il modello fisico di un db mediante SQL
★ Inserire/Modificare/Cancellare record e tabelle di un db tramite SQL
★ Estrapolare informazioni ad hoc dal db tramite interrogazioni SQL
Prerequisiti
➔ Modellazione concettuale e logica di un database
Indice della lezione
➔ Introduzione all’ SQL
◆ DBMS & Linguaggi per il DB
➔ SQL - DDL
◆ Dichiarazione di schemi tabelle
◆ Vincoli
◆ Tipi di dato
➔ SQL - DML
◆ Insert, Delete & Update
➔ SQL - QL
◆ Select semplice
◆ Clausola Where
➔ GameTime: SQL Island
➔ Homework
Indice della lezione Spoiler
➔ Introduzione all’ SQL ● Il gioco è una combinazione tra i tutorial
programmazione e giochi di testo-avventura
◆ DBMS & Linguaggi per il DB
➔ SQL - DDL ● Siamo abbandonati su un'isola e dobbiamo
◆ Dichiarazione di schemi tabelle cercare di lasciarla
◆ Vincoli
● Possiamo guadagnare soldi, vendere oggetti e
◆ Tipi di dato comprare oggetti…. COME? SQL
➔ SQL - DML
◆ Insert, Delete & Update
➔ SQL - QL
◆ Select semplice
◆ Clausola Where
➔ GameTime: SQL Island
➔ Homework
ITIS - ISTITUTO TECNICO INDUSTRIALE “N. MIRAGLIA” - classe VC
Introduzione all’SQL
DBMS & Linguaggi per il DB
Ricapitolando
Modello Concettuale Modello Fisico
Modello Logico
Ricapitolando
Modello Concettuale Modello Fisico
Modello Logico
Esempio concreto: Cinema
Pensiamo ad un cinema multisala, con varie sedi:
● Il Cinema è identificato da un codice e di essi interessano anche un nome, dalla città e dal numero di sale
● La Sala è identificata dal cinema di appartenenza, un numero univoco e deve essere indicato se è 3D o
meno
● Attori e Registi sono identificati da un codice e di essi interessano anche il nome, nazionalità e l’anno di
nascita
● I Film sono identificati da un codice e di essi interessano anche il titolo, l’anno di produzione, il regista, gli
attori che vi recitano e, per ogni attore, se è protagonista o non protagonista
● La Proiezione è il Film trasmesso in una determinata Sala e viene caratterizzata dalla data, l’ora e il numero
di spettatori
Tutte questi dati potrebbero essere gestiti attraverso la progettazione di un
database
Cinema - Modello Concettuale
Cinema - Modello Logico
Esempio concreto: Cinema
Una volta progettato il database a livello concettuale e logico, come si
procede?
Abbiamo bisogno di un modo per memorizzare tale modello all’interno di un
sistema HW…
… DBMS ( DataBase Management System)
● Implementazione del modello logico sul sistema di elaborazione
● Manipolazione e interrogazione sulla base di dati
● Controllo dell’integrità dei dati
● Sicurezza e protezione
Esempio concreto: Cinema
Ritornando alla gestione del cinema, supponiamo che abbiano un sito web
Gli utenti possono reperire informazioni sugli spettacoli disponibili
Il database viene utilizzato da persone diverse, per funzioni e per applicazioni
diverse:
● Database Administrator: implementazione del modello logico del db nel sistema;
● Programmatori: utilizzare i dati organizzati in un db, utilizzano un linguaggio DML;
● Utenti finali: accedere alla base di dati attraverso i comandi di un linguaggio di
interrogazione (query language), attraverso interfacce software;
Linguaggio SQL
Il linguaggio SQL (Structured Query Language) è un linguaggio non
procedurale che è diventato uno standard tra i linguaggi per la gestione di
db relazionali
Il linguaggio SQL consente all’utente di:
● definire la struttura delle relazioni del database ( DDL )
● modificare i dati contenuti nel db ( DML )
● gestire il controllo degli accessi e i permessi per gli utenti ( DCL )
● interrogare il db ( funzioni di Query Language ).
DBMS
Application
S
DBMS
Database
Q
L
Users
Application
Linguaggi per il Database
SQL
instruction
DDL QL
DML
● Create ● Insert ● Select
● Alter ● Delete
● Drope ● Update
ITIS - ISTITUTO TECNICO INDUSTRIALE “N. MIRAGLIA” - classe VC
SQL - DDL
Dichiarazione di schemi tabelle,
Vincoli & Tipi di dati
Linguaggi per il Database
SQL
instruction
DDL QL
DML
● Create ● Insert ● Select
● Alter ● Delete
● Drope ● Update
Creare il database
My
Per manipolare il database abbiamo: Database
● l'istruzione create database viene utilizzata per creare un nuovo
database SQL
CREATE DATABASE <nome_database>;
● l'istruzione drop database viene utilizzata per eliminare un database
SQL esistente.
DROP DATABASE <nome_database>;
Cinema - Modello Logico
D
D
L
Cinema - Modello Fisico
D
D
L
DDL - Istruzioni
Il Data Definition Language (DDL) definisce le istruzioni per creare,
modificare ed eliminare le tabelle dal database relazionale.
L’istruzione definite sono:
● create table viene utilizzata per creare una nuova tabella in un db
CREATE TABLE <nome_tabella> ( nome_colonna tipo, ...);
● alter table viene utilizzata per aggiungere (add), eliminare (drop) o
modificare (modify) colonne in una tabella esistente.
ALTER TABLE <nome_tabella> ADD|DROP COLUMN|MODIFY COLUMN <nome_colonna> <tipo>, ...);
● drop table viene utilizzata per eliminare una tabella esistente in un db
DROP TABLE <nome_tabella>;
Create - Esempio
Attore
CREATE TABLE Attore (
Nome_Colonna Tipo
codice int(6),
nome varchar(128), codice int (6)
nazionalità varchar(4), nome varchar (128)
anno_nascita date, My
Database nazionalità varchar (4)
);
anno_nascita date
ATTORE
codice nome nazionalità anno_nascita
… … … …
... … … …
Tipi di Dati
Per ogni colonna, durante la creazione di una tabella, bisogna specificare il
tipo di dati che conterrà
Tipo Dati Descrizione
CHAR (size) Una stringa di lunghezza FISSA (può contenere lettere, numeri e caratteri speciali)
VARCHAR (size) Una stringa di lunghezza VARIABILE (può contenere lettere, numeri e caratteri speciali).
INTEGER/INT (size) Un numero intero. Size specifica la larghezza massima di visualizzazione (che è 255)
FLOAT/DOUBLE (p) Un numero in virgola mobile. P determina se di tipo Float o Double.
BOOL/BOOLEAN Zero è considerato come falso, i valori diversi da zero sono considerati veri.
DATE Una data. Formato: AAAA-MM-GG
Primary Key
Il vincolo PRIMARY KEY identifica in modo univoco ogni record in una tabella
● Le chiavi primarie devono contenere valori unici e non possono
contenere valori nulli.
● Una tabella può avere solo una chiave primaria
CREATE TABLE Regista (
codice int(6) NOT NULL, REGISTA
nome varchar(128), codice nome nazionalità anno_nascita
nazionalità varchar(4),
748192 … … …
anno_nascita date,
837294 … … …
PRIMARY KEY (codice)
); 748192 … … …
Foreign Key
Il vincolo FOREIGN KEY è una chiave utilizzata per collegare due tabelle
insieme
● Una FOREIGN KEY è un campo in una tabella che fa riferimento alla
PRIMARY KEY in un'altra tabella
CREATE TABLE Regista ( CREATE TABLE Film (
id int(6) NOT NULL,
codice int(6) NOT NULL,
titolo varchar(128),
nome varchar(128),
anno varchar(4),
nazionalità varchar(4),
cod_reg int(6) NOT NULL,
anno_nascita, date,
PRIMARY KEY (id),
PRIMARY KEY (codice)
FOREIGN KEY (cod_reg) REFERENCES
); Regista(codice)
Foreign Key
Il vincolo FOREIGN KEY è una chiave utilizzata per collegare due tabelle
insieme
● Una FOREIGN KEY è un campo in una tabella che fa riferimento alla
PRIMARY KEY in un'altra tabella
REGISTA FILM
codice nome nazionalità anno_nascita id titolo anno cod_reg
748192 … … … 183793 … … 837294
837294 … … … 848201 … … 748192
876538 ... ... 837294
ITIS - ISTITUTO TECNICO INDUSTRIALE “N. MIRAGLIA” - classe VC
SQL - DML
Insert, Delete & Update
Linguaggi per il Database
SQL
instruction
DDL QL
DML
● Create ● Insert ● Select
● Alter ● Delete
● Drope ● Update
Popolazione
Attore ATTORE
Nome_Colonna Tipo codice nome nazionalità anno_nascita
codice int (6)
nome varchar (128)
nazionalità varchar (4) DML
anno_nascita date
ATTORE
codice nome nazionalità anno_nascita
Record { … … … …
My Record { ... … … …
Database
DML - Istruzioni
Il Data Manipulation Language (DML) definisce le istruzioni per inserire,
modificare ed eliminare le righe (record) di una tabella
L’istruzione definite sono:
● insert into è usata per inserire nuovi record in una tabella
INSERT INTO <nome_tabella> (colonna_1, colonna_2, colonna3) values (valore_1, valore_2, valore3);
● update è usata per modificare i record esistenti in una tabella
UPDATE <nome_tabella> SET colonna_1 = valore_1, colonna_2 = valore_2 ;
;
● delete è usata per eliminare i record esistenti in una tabella
DELETE FROM <nome_tabella> WHERE Condition ;
Insert - Esempio
INSERT INTO Attore ATTORE
(codice, nome, nazionalità, codice nome nazionalità anno_nascita
anno_nascita)
values
(‘21248’, ’Johnny Depp’,
’Statunitense’, ’1963-06-09’)
ATTORE
codice nome nazionalità anno_nascita
Record { 21248 Johnny Depp Statunitense 1963-06-09
ITIS - ISTITUTO TECNICO INDUSTRIALE “N. MIRAGLIA” - classe VC
SQL - QL
Select semplice
& Clausola Where
Linguaggi per il Database
SQL
instruction
DDL QL
DML
● Create ● Insert ● Select
● Alter ● Delete
● Drope ● Update
Interrogazione Voglio cercare i
film prodotti nel
2003...
SELECT * FROM Film WHERE anno = 2003;
Utente
Database DBMS Q Web
Browser
L
FILM
id titolo anno cod_reg Ecco la lista dei film del
2003:
… … … …
…..
… … … … ….
… ... ... …
QL - Istruzioni
Il Query Language (QL) definisce l’ istruzioni per interrogare il db
L’istruzione definite sono:
● select usata per selezionare i dati da un database.
SELECT <colonna_1>, <colonna_2> … FROM <nome_tabella> ;
I dati restituiti sono memorizzati in una tabella dei risultati, denominata set
di risultati
Per selezionare tutte le colonne di una tabella:
SELECT * FROM <nome_tabella> ;
Select - Esempio
SET RISULTATI
ATTORE
nome anno_nascita
codice nome nazionalità anno_nascita
Johnny Depp 1963-06-09
21248 Johnny Depp Statunitense 1963-06-09
93871 Monica Italiano 1964-09-30 Monica Bellucci 1964-09-30
Bellucci
83762 Carlo Italiano 1950-11-17 Carlo Verdone 1950-11-17
Verdone
Jim Carrey 1962-01-17
84712 Jim Carrey Canadese 1962-01-17
SELECT nome, anno_nascita FROM Attore;
Clausola Where
La clausola WHERE viene utilizzata
● per filtrare i record
● per estrarre solo i record che soddisfano una condizione specificata
SELECT <colonna_1>, <colonna_2>... FROM <nome_tabella> WHERE condition;
La clausola WHERE non è utilizzata solo nell'istruzione SELECT, è
anche utilizzata nelle istruzioni UPDATE, DELETE, ecc.!
Select+Where - Esempio
ATTORE
codice nome nazionalità anno_nascita
SET RISULTATI
21248 Johnny Depp Statunitense 1963-06-09
nome anno_nascita
93871 Monica Italiano 1964-09-30
Bellucci Monica Bellucci 1964-09-30
83762 Carlo Italiano 1950-11-17
Verdone Carlo Verdone 1950-11-17
84712 Jim Carrey Canadese 1962-01-17
SELECT nome, anno_nascita FROM Attore
WHERE nazionalità = ‘Italiano‘;
Clausola Where - Operatori
Tipo Operatore Descrizione
= Uguaglianza
> Più grande di
< Meno di
>= Maggiore o uguale
<= Minore o uguale
<> Non uguale. Nota: in alcune versioni di SQL questo
operatore può essere scritto come! =.
BETWEEN Tra un certo intervallo
LIKE Cerca un determinato pattern
IN Per specificare più valori possibili per una colonna
Clausola Where: AND / OR / NOT
La clausola WHERE può essere combinata con gli operatori AND, OR e NOT.
● Gli operatori AND e OR vengono utilizzati per filtrare i record in base a
più di una condizione:
○ L'operatore AND visualizza un record se tutte le condizioni separate da AND sono TRUE
○ L'operatore OR visualizza un record se una delle condizioni separate da OR è TRUE
SELECT <colonna_1>, <colonna_2> ... FROM <nome_tabella> WHERE condition1 AND|OR condition2 ...;
● L'operatore NOT visualizza un record se la/e condizione/i non è TRUE
SELECT <colonna_1>, <colonna_2> ... FROM <nome_tabella> WHERE NOT condition;
ITIS - ISTITUTO TECNICO INDUSTRIALE “N. MIRAGLIA” - classe VC
GameTime - SQL Island
Gioco online basato su SQL
SQL Island
SQL Island
http://wwwlgis.informatik.uni-
kl.de/cms/courses/informationssysteme/sqlisland
/
ITIS - ISTITUTO TECNICO INDUSTRIALE “N. MIRAGLIA” - classe VC
Homework
Esercizi di pratica da svolgere
Homework
➔ Prendere confidenza con le istruzioni SQL provando a giocare ad SQL
Island
◆ Se vi trovate in situazioni di difficoltà controllate la documentazione su come poter
impostare la query SQL
➔ Dato il seguente modello logico, progettare il modello fisico e definire le
istruzioni SQL di creazione delle tabelle
Riferimenti
➔ W3C School
◆ https://www.w3schools.com/sql/
➔ Libro di testo
◆ Basi di dati. Modelli e linguaggi di interrogazione - CAP 4 (McGraw-Hill
Education)
➔ SQL Island
◆ http://wwwlgis.informatik.uni-
kl.de/cms/courses/informationssysteme/sqlisland/