SQL per la modifica di basi di dati. 29/01/2014SQL per la modifica di basi di dati2 Data...
-
Upload
isaia-festa -
Category
Documents
-
view
214 -
download
0
Transcript of SQL per la modifica di basi di dati. 29/01/2014SQL per la modifica di basi di dati2 Data...
SQL per la modifica di basi di
dati
11/04/23 SQL per la modifica di basi di dati 2
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.
11/04/23 SQL per la modifica di basi di dati 3
SQL per modificare basi di dati
I dati possono essere modificati mediante tre
istruzioni:
Insert Delete Update
11/04/23 SQL per la modifica di basi di dati 4
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
11/04/23 SQL per la modifica di basi di dati 5
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’
11/04/23 SQL per la modifica di basi di dati 6
Insert, Esempio 1
INSERT INTO Esami (Corso, Matricola, Voto)VALUES (‘DB1’, ‘123456’, 27)
Corso
Insegnante
Matricola
Voto
Supponiamo di avere definito la tabella:
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.
Esami
11/04/23 SQL per la modifica di basi di dati 7
Insert, Esempio 2
INSERT INTO EsamiVALUES (‘DB2’, ‘Verdi’, ‘123123’, 30)
Corso
Insegnante Matricola Voto
DB1 NULL 123456 27
DB2 Verdi 123123 30
Non specificare gli attributi equivale a specificare tutte le colonne della tabella. NB: Si deve rispettare l’ordine degli attributi
11/04/23 SQL per la modifica di basi di dati 8
Esercizio 1
Inserire nella tabella categorie i seguenti elementi
Cat_cod Cat_descrizione
L10 Libreria
M10 Mobile
M20 Armadio
S10 Sedia
T10 Tavolo
11/04/23 SQL per la modifica di basi di dati 9
Esercizio 1, soluzione
Insert into categorieValues (‘L10’, ‘Libreria’)
Insert into CategorieValues(‘M10’, ‘Mobile’)
Insert into CategorieValues(‘M20’, ‘Armadio’)
Insert into CategorieValues(‘S10’, ‘Sedia’)
Insert into CategorieValues(‘T10’, ‘Tavolo’)
11/04/23 SQL per la modifica di basi di dati 10
Esercizio 2
Inserire nella tabella Componenti i valori
Com_cod = 0010Com_descrizione = Montante laterale 100 cmCom_costo = 50.00Lab_cod = 0010
11/04/23 SQL per la modifica di basi di dati 11
Esercizio 2… Problemi?Il DBMS si rifiuta di inserire questo dato? Perché secondovoi?
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!
11/04/23 SQL per la modifica di basi di dati 12
Esercizio 3
Inserire nella tabella Articoli la riga contenente i valori
Art_cod=L100Cat_cod=L10Art_descrizione=Libreria 100 cm x 120 cmArt_prezzo=475.00Art_IVA=20Art_Spese_trasporto=48.00
Continuare con l’inserimento dei dati nel foglio di esercizi
11/04/23 SQL per la modifica di basi di dati 13
Esercizio 4
Inserire i valori della tabella Laboratori, come figurano nel foglio di esercitazione.
Quindi inserire i valori di Componenti!
11/04/23 SQL per la modifica di basi di dati 14
Insert mediante SELECTE’ 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 tipodi 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, TelefonoFROM Studenti
11/04/23 SQL per la modifica di basi di dati 15
DeleteCancellazione 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.
11/04/23 SQL per la modifica di basi di dati 16
Delete, esempioCancellare dalla tabella Esami i dati relativi allo studente il cui numero di matricola è ‘123456’
DELETE FROM EsamiWHERE Matricola = ‘123456’
Operazione non reversibileSe 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
11/04/23 SQL per la modifica di basi di dati 17
Esercizio
Cancellare dalla tabella Categorie la riga la cui descrizione è ‘Sedia’
Delete from CategorieWhere cat_descrizione=‘Sedia’
11/04/23 SQL per la modifica di basi di dati 18
DeleteLa 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 ilnumero di matricola non si trova nella tabellaStudenti
DELETE FROM EsamiWHERE Matricola NOT IN(SELECT Matricola FROM Studenti)
11/04/23 SQL per la modifica di basi di dati 19
Update
Inoltre è possibile aggiornare alcuni dati seguendo la
seguente sintassi:
UPDATE TabellaSET Attributo = Espr WHERE Condizione
11/04/23 SQL per la modifica di basi di dati 20
Update, esempiEsempio: Dalla tabella Aule modificare il numero
dell’aulada 3 a 7.
UPDATE AuleSET Aula = 7WHERE Aula = 3
Esempio: modificare il valore del reddito delle persone
più giovani di 30 anni attribuendo loro un aumento del
10%.
UPDATE PersoneSET Reddito = Reddito * 1.1WHERE Eta < 30