SQL per la modifica
di basi di dati
Data Manipulation Language
Introduciamo ora il Data Manipulation Language (DML)
ossia il linguaggio SQL che serve per inserire,
modificare e cancellare i dati del database, ma anche
per interrogare il database, ossia estrarre i dati dal
database.
Inizialmente descriveremo le istruzioni che servono a
inserire, cancellare e modificare i dati.
In seguito introdurremo le istruzioni per estrarre dal
database le informazioni che ci interessano.
05/06/2017
SQL per la modifica di basi di dati
2
SQL per modificare basi di
dati
I dati possono essere modificati mediante tre
istruzioni:



05/06/2017
Insert
Delete
Update
SQL per la modifica di basi di dati
3
Insert semplice
Supponiamo di volere inserire un nuovo dato in
una tabella. Tale operazione si realizza
mediante l’istruzione
INSERT INTO… VALUES
Sintassi:
INSERT INTO nome tabella
[(ListaAttributi)] VALUES (ListaDiValori) |
SQLSelect
05/06/2017
SQL per la modifica di basi di dati
4
Regole per l’inserimento
caratteri e date
I dati char, varchar, vanno inseriti tra apici
Una data deve essere inserita fra apici e deve essere
espressa nel formato di default di ORACLE.
Questa edizione di Oracle accetta il formato di data
italiano ossia giorno, mese, anno (dd-mon-aaaa),
inframezzati da / o da - , dove il mese va espresso con
le sue prime tre lettere (gen,feb,…) e l’anno per intero.
Esempio: ’15/giu/2004’ , ’21-gen-2007’
05/06/2017
SQL per la modifica di basi di dati
5
Insert, Esempio 1
Supponiamo di avere definito la tabella:
Esami
Corso Insegnante Matricola Voto
INSERT INTO Esami (Corso, Matricola, Voto)
VALUES (‘DB1’, ‘123456’, 27)
Corso Insegnante Matricola Voto
DB1
NULL
123456
27
Ai valori non attribuiti viene assegnato NULL, a meno che non sia
specificato un diverso valore di default.
L’inserimento fallisce se NULL non è permesso per gli attributi
mancanti.
05/06/2017
SQL per la modifica di basi di dati
6
Insert, Esempio 2
INSERT INTO Esami
VALUES (‘DB2’, ‘Verdi’, ‘123123’, 30)
Corso Insegnante
DB1
NULL
DB2
Verdi
Matricola
123456
123123
Voto
27
30
Non specificare gli attributi equivale a specificare tutte
le colonne della tabella.
NB: Si deve rispettare l’ordine degli attributi
05/06/2017
SQL per la modifica di basi di dati
7
Esercizio 1
Inserire nella tabella categorie i seguenti elementi
05/06/2017
Cat_cod
Cat_descrizione
L10
Libreria
M10
Mobile
M20
Armadio
S10
Sedia
T10
Tavolo
SQL per la modifica di basi di dati
8
Esercizio 1, soluzione
Insert into categorie
Values (‘L10’, ‘Libreria’)
Insert into Categorie
Values(‘T10’, ‘Tavolo’)
Insert into Categorie
Values(‘M10’, ‘Mobile’)
Insert into Categorie
Values(‘M20’, ‘Armadio’)
Insert into Categorie
Values(‘S10’, ‘Sedia’)
05/06/2017
SQL per la modifica di basi di dati
9
Esercizio 2
Inserire nella tabella Componenti i valori
Com_cod = 0010
Com_descrizione = Montante laterale 100 cm
Com_costo = 50.00
Lab_cod = 0010
05/06/2017
SQL per la modifica di basi di dati
10
Esercizio 2… Problemi?
Il DBMS si rifiuta di inserire questo dato? Perché secondo
voi?
La colonna lab_cod di Componenti fa riferimento alla
Colonna lab_cod della tabella Laboratori, i cui elementi non
sono ancora stati inseriti. In particolare, il valore ‘0010’
non è ancora presente nella colonna lab_cod della tabella
Laboratori, quindi il DBMS non sa a cosa si riferisce il
valore 0010 che si cerca di inserire nella colonna lab_cod
della tabella Componenti.
Occorre prima inserire i valori nella tabella Laboratori!
05/06/2017
SQL per la modifica di basi di dati
11
Esercizio 3
Inserire nella tabella Articoli la riga contenente i valori
Art_cod=L100
Cat_cod=L10
Art_descrizione=Libreria 100 cm x 120 cm
Art_prezzo=475.00
Art_IVA=20
Art_Spese_trasporto=48.00
Continuare con l’inserimento dei dati nel foglio di esercizi
05/06/2017
SQL per la modifica di basi di dati
12
Esercizio 4
Inserire i valori della tabella Laboratori, come figurano
nel foglio di esercitazione.
Quindi inserire i valori di Componenti!
05/06/2017
SQL per la modifica di basi di dati
13
Insert mediante SELECT
E’ possibile effettuare un insert prendendo i dati da
un’altra tabella. Questo è possibile mediante il comando di
interrogazione del database SELECT, che vedremo nelle
prossime lezioni. Parleremo in seguito di questo tipo
di inserimento di dati.
Con questo tipo di insert si possono effettuare tanti
inserimenti simultaneamente.
Esempio:
Tabella: Indirizzi_Studenti( Indirizzo, Telefono, Email)
INSERT INTO Indirizzi_Studenti (Indirizzo, Telefono)
SELECT Indirizzo, Telefono
FROM Studenti
05/06/2017
SQL per la modifica di basi di dati
14
Delete
Cancellazione di righe da tabelle
Sintassi:
DELETE FROM nome_tabella
[WHERE Condizione]
Per eliminare un elemento bisogna individuare quale.
Questo si può stabilire mediante la clausola WHERE, dove
viene stabilita una condizione che individua l’elemento (o gli
elementi) da cancellare.
Spesso un particolare elemento può essere individuato
mediante il suo valore nella chiave primaria.
05/06/2017
SQL per la modifica di basi di dati
15
Delete, esempio
Cancellare dalla tabella Esami i dati relativi allo studente il cui numero
di matricola è ‘123456’
DELETE FROM Esami
WHERE Matricola = ‘123456’
Operazione non reversibile
Se la condizione è omessa questa istruzione cancella l’intero
contenuto della tabella
(!!! Attenzione quindi !!!)
Lo schema invece non viene modificato. L’istruzione
DELETE FROM Esami
Restituisce la tabella Esami con l’istanza vuota
05/06/2017
SQL per la modifica di basi di dati
16
Esercizio
Cancellare dalla tabella Categorie la riga la cui descrizione
è ‘Sedia’
Delete from Categorie
Where cat_descrizione=‘Sedia’
05/06/2017
SQL per la modifica di basi di dati
17
Delete
La condizione del delete può essere una normale
condizione di SELECT (vedremo dopo)
Questa modalità di delete permette di cancellare più
righe con un’unica istruzione, purchè le righe soddisfino
la condizione.
Esempio:
Eliminare tutte le righe della tabella esami in cui il
numero di matricola non si trova nella tabella
Studenti
DELETE FROM Esami
WHERE Matricola NOT IN
(SELECT Matricola FROM Studenti)
05/06/2017
SQL per la modifica di basi di dati
18
Update
Inoltre è possibile aggiornare alcuni dati seguendo la
seguente sintassi:
UPDATE Tabella
SET Attributo = Espr
WHERE Condizione
05/06/2017
SQL per la modifica di basi di dati
19
Update, esempi
Esempio: Dalla tabella Aule modificare il numero dell’aula
da 3 a 7.
UPDATE Aule
SET Aula = 7
WHERE Aula = 3
Esempio: modificare il valore del reddito delle persone
più giovani di 30 anni attribuendo loro un aumento del
10%.
UPDATE Persone
SET Reddito = Reddito * 1.1
WHERE Eta < 30
05/06/2017
SQL per la modifica di basi di dati
20