Sei sulla pagina 1di 46

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/