Insegnamento di Informatica Il trattamento dei dati

Insegnamento di Informatica
CdS Scienze Giuridiche
A.A. 2006/7
Il trattamento dei dati
database: il linguaggio SQL
seconda parte
Prof. Valle – D.ssa Folgieri
Lez9 15.11.06
Trattamento dati. Database: il linguaggio SQL-prima parte
1
SQL: azioni sui dati
Nella scorsa lezione abbiamo visto gli operatori aritmetici, di
confronto e logici.
Ora completiamo l’argomento con i comandi che sono necessari per
comporre istruzioni in SQL per “maneggiare” i dati.
Vediamo, cioè, i VERBI di SQL, poiché le espressioni principali
sono proprio costituite da cinque comandi che corrispondono ad
azioni che si possono compiere sui dati.
Si suole dire, per ricordarli meglio, che i verbi di SQL sono 5. Essi
corrispondono alle operazioni possibili sui dati.
Lez9 15.11.06
Trattamento dati. Database: il linguaggio SQL-prima parte
2
I 5 verbi di SQL
I seguenti comandi consentono di effettuare, se combinati
adeguatamente con gli operatori già visti, tutte le operazioni
principali per trattare i dati:
• CREATE – per creare le strutture (tabelle) che conterranno i dati
in un database
• INSERT – per inserire i valori nei campi delle tabelle create
• DELETE – per cancellare i valori nei campi delle tabelle create
• SELECT – per selezionare (ricercare) i dati rispondenti a
determinati criteri (cioè per effettuare una query, ovvero
un’interrogazione)
• UPDATE – per aggiornare i valori dei dati secondo un
determinato criterio
Lez9 15.11.06
Trattamento dati. Database: il linguaggio SQL-prima parte
3
Traduzione del modello E/R
in struttura fisica del database
Riprendiamo alcuni concetti circa la corrispondenza tra il modello
E/R e la struttura fisica (implementazione) di una base di dati.
Ricordate che:
• Le entità diventano le tabelle
• Gli attributi diventano i campi (colonne) delle tabelle
• Le relazioni sono indicate tramite le chiavi (primarie ed esterne)
Lez9 15.11.06
Trattamento dati. Database: il linguaggio SQL-prima parte
4
Tabelle e relazioni
In un database, dunque, una tabella corrisponde ad un’entità.
Gli attributi saranno i campi (le colonne) della tabella e le relazioni
si specificano utilizzando le chiavi.
Si dice grado della tabella il numero di colonne che la costituisce.
La singola riga di dati (cioè le informazioni relative ad una istanza)
si dice record.
Codice
targa
Codice
Lez9 15.11.06
Trattamento dati. Database: il linguaggio SQL-prima parte
5
Creare una tabella - 1
Per collezionare i dati in un database, occorre innanzitutto creare
la struttura atta a contenerli.
Occorre cioè creare una tabella (entità) contenente i
corrispondenti campi (attributi).
Per fare ciò, si usa il comando CREATE TABLE.
La sintassi è:
CREATE TABLE <nome-tabella>(<specifiche>)
Tra parentesi vengono posti i nomi dei campi.
Per ogni campo è specificato il tipo di dato e le sue dimensioni.
Alcuni elementi di specifica sono opzionali: per esempio si può
decidere se porre o meno dei vincoli sui campi (es. “non deve
essere nullo”)… lo vedremo nei prossimi esempi
Lez9 15.11.06
Trattamento dati. Database: il linguaggio SQL-prima parte
6
Creare una tabella - 2
Ricordiamo la sintassi del comando CREATE TABLE:
CREATE TABLE <nome-tabella>(<specifiche>)
Tra parentesi vengono posti i nomi dei campi.
Esempio:
CREATE TABLE Anagrafica (
identificativo
integer,
cognome
char(40),
nome
char(40),
indirizzo
varchar(60),
telefono
varchar(40)
)
Per ogni campo è specificato il nome (a sinistra), il tipo di dato (a
destra) e le sue dimensioni (tra parentesi, ad esempio char(40) che
significa tipo di dato alfanumerico che può essere lungo al massimo
40 caratteri).
Lez9 15.11.06
Trattamento dati. Database: il linguaggio SQL-prima parte
7
Creare una tabella - 3
Si possono aggiungere anche alcuni vincoli, ad esempio dire:
- se un valore deve essere inserito per forza (NOT NULL)
- se è previsto un valore preimpostato, che l’utente può sempre
cambiare (DEFAULT)
- inoltre si può specificare quale sia la chiave primaria
Esempio (i vincoli sono posti a destra della dimensione):
CREATE TABLE Anagrafica (
identificativo
char(16),
cognome
char(40)
nome
char(40)
indirizzo
varchar(60)
telefono
varchar(40)
PRIMARY KEY(identificativo)
)
NOT NULL,
NOT NULL,
DEFAULT ‘sconosciuto’,
NOT NULL,
NOTATE che ogni riga, sia in questo che nell’esempio precedente,
tranne l’ultima prima della parentesi, deve terminare con una virgola.
Lez9 15.11.06
Trattamento dati. Database: il linguaggio SQL-prima parte
8
Creare
una
tabella
4
Analizziamo quanto abbiamo scritto:
CREATE TABLE Anagrafica (
identificativo
char (16),
cognome
char(40)
nome
char(40)
indirizzo
varchar(60)
telefono
varchar(40)
PRIMARY KEY(identificativo)
)
NOT NULL,
Abbiamo creato la
NOT NULL,
struttura (non vi
DEFAULT ‘sconosciuto’,
NOT NULL,
abbiamo ancora
immesso i dati) di
una tabella Anagrafica che contiene:
• Il campo identificativo (la chiave primaria, potrebbe essere anche il codice fiscale)
che distingue un nominativo da un altro
• Il campo cognome e il campo nome, entrambi non nulli e di lunghezza massima
40
• Il campo indirizzo, di lunghezza massima 60, che propone per default, in
immissione, la dicitura “sconosciuto”
• Il campo telefono, di lunghezza massima 40, che non può essere nullo.
• Alla fine dell’elenco dei campi, prima della parentesi di chiusura, abbiamo
specificato che il campo identificativo è la variabile primaria, ovvero nella tabella
non sono ammessi due record (due nominativi) diversi con lo stesso identificativo
(così posso distinguere eventuali omonimie).
Lez9 15.11.06
Trattamento dati. Database: il linguaggio SQL-prima parte
9
Modificare la struttura di una tabella -1
Una volta creata una tabella, potremmo aver bisogno di
modificarne la struttura.
Non è necessario cancellare la tabella e crearne un’altra, poiché
si possono utilizzare alcuni comandi che agiscono sulla struttura
aggiungendo, cancellando, o modificando una colonna (ovvero
un campo).
Nella prossima slide vedremo come.
Lez9 15.11.06
Trattamento dati. Database: il linguaggio SQL-prima parte
10
Modificare la struttura di una tabella -2
Sintassi del comando che consente di aggiungere una colonna:
ALTER TABLE <nome-tabella>(
ADD COLUMN<nome-colonna><tipo>|<<altre caratteristiche>|
)
Comando per cancellare una colonna:
ALTER TABLE <nome-tabella> (
DROP COLUMN <nome-colonna>
)
Comando per modificare una colonna (es. aggiungere dei vincoli o
cancellarli):
ALTER TABLE <nome-tabella> (
ALTER COLUMN <nome-colonna> DROP DEFAULT
)
ALTER TABLE <nome-tabella> (
ALTER COLUMN <nome-colonna> SET DEFAULT <valore-predefinito>
)
Lez9 15.11.06
Trattamento dati. Database: il linguaggio SQL-prima parte
11
Modificare la struttura di una tabella
- esempi Per aggiungere una colonna:
ALTER TABLE Anagrafica (
email
char(50)
)
NOT NULL
abbiamo aggiunto alla tabella Anagrafica il campo email lungo al
massimo 50 caratteri e con il vincolo NOT NULL, cioè deve essere
sempre compilato in fase di immissione – non può essere nullo
Lez9 15.11.06
Trattamento dati. Database: il linguaggio SQL-prima parte
12
Modificare la struttura di una tabella
- esempi Per cancellare una colonna:
ALTER TABLE Anagrafica (
DROP COLUMN telefono
)
Abbiamo cancellato la colonna telefono dalla tabella Anagrafica (e,
se avevamo già immesso i dati, anche tutti i dati contenuti nel campo!)
Lez9 15.11.06
Trattamento dati. Database: il linguaggio SQL-prima parte
13
Modificare la struttura di una tabella
- esempi Per modificare una colonna possiamo, ad esempio, togliere i valori di default. Ad
esempio, avevamo impostato il campo indirizzo in modo che per default,
all’immissione, proponesse il valore ‘sconosciuto’. Con il seguente comando,
facciamo in modo che, all’immissione, non vengano proposti valori di default:
ALTER TABLE Anagrafica (
ALTER COLUMN indirizzo DROP DEFAULT
)
Se invece volessimo impostare un valore di default, per esempio imporre che il
campo telefono proponesse il prefisso +39 (Italia) all’immissione, dovremmo
scrivere:
ALTER TABLE Anagrafica (
ALTER COLUMN telefono SET DEFAULT ‘+39’
)
Lez9 15.11.06
Trattamento dati. Database: il linguaggio SQL-prima parte
14
Come eliminare una tabella - 1
Infine vediamo come eliminare una tabella dal database.
Il comando DROP permette di eliminare interamente una tabella
(compresi i dati in essa contenuti!).
La sintassi è:
DROP TABLE <nome-tabella>
Esempio:
DROP TABLE Anagrafica
Lez9 15.11.06
Trattamento dati. Database: il linguaggio SQL-prima parte
15
Come eliminare una tabella - 2
ATTENZIONE: l’eliminazione di una tabella è consentita solo
all’utente che l’ha creata
Se creo un database sul mio pc e lo metto poi a disposizione di altri
utenti che vi accedono (in rete) da altre macchine, le tabelle potranno
essere cancellate sempre (e solo) da me, mentre agli altri utenti potrò
dare permessi di lettura, inserimento, modifica o cancellazione dei
dati.
Vedremo nella prossima lezione come assegnare a differenti utenti i
diversi permessi…
Lez9 15.11.06
Trattamento dati. Database: il linguaggio SQL-prima parte
16
INSERT - 1
Ora che abbiamo creato una tabella, vediamo come inserire i valori.
Ovviamente qui parliamo di SQL standard, quindi dovremo usare i
comandi.
Non abbiamo cioè a disposizione interfacce, come avviene in molti
RDBMS quali, ad esempio, Microsoft Access, cui faremo cenno
nelle prossime lezioni.
Per inserire i dati si usa il comando INSERT.
Lez9 15.11.06
Trattamento dati. Database: il linguaggio SQL-prima parte
17
INSERT - 2
Permette di inserire una riga di valori (un record) in una tabella.
Sintassi:
INSERT INTO <nome-tabella> VALUES (<espressione1>[,...<espressione-N>])
Facciamo un esempio:
INSERT INTO Anagrafica
VALUES (
‘DPPPPO20D74S919X’,
'Pippo',
'De Pippis',
'Via Topolinia 13',
'0111,111111‘
‘[email protected]‘
)
I dati, per essere inseriti, vanno posti tra apice singolo.
Lez9 15.11.06
Trattamento dati. Database: il linguaggio SQL-prima parte
18
INSERT - 3
Qualche nota su quel che abbiamo scritto:
INSERT INTO Anagrafica
VALUES (
‘DPPPPO20D74S919X’,
'Pippo',
'De Pippis',
'Via Topolinia 13',
'0111,111111‘
‘[email protected]‘
)
Come avrete sicuramente notato, i dati vanno posti nello stesso
ordine dei campi.
Per non sbagliare e dimenticarne qualcuno, è buona norma far
precedere l’elenco di valori dall’elenco dei campi, come
nell’esempio della prossima slide.
Lez9 15.11.06
Trattamento dati. Database: il linguaggio SQL-prima parte
19
INSERT - 4
Far precedere l’elenco di valori dall’elenco dei campi:
Elenco dei campi
Sintassi:
INSERT INTO <nome-tabella> (<colonna-1>[,...<colonna-N>])]
VALUES (<espressione-1>[,...<espressione-N>]);
Elenco dei valori assegnati ai campi
Adottando questa sintassi è difficile dimenticare di inserirne
qualcuno.
Nella slide successiva vedremo l’esempio corrispondente…
Lez9 15.11.06
Trattamento dati. Database: il linguaggio SQL-prima parte
20
INSERT - esempio
Esempio:
INSERT INTO Anagrafica (
Identificativo,
Cognome,
Nome,
Indirizzo,
Telefono
)
VALUES (
01,
'Pippo',
'De Pippis',
'Via Topolinia 13',
'0111,111111'
)
Lez9 15.11.06
Elenco dei campi
Elenco dei valori
assegnati ai campi
Trattamento dati. Database: il linguaggio SQL-prima parte
21