SQL per la modifica di basi di dati. 29/01/2014SQL per la modifica di basi di dati2 Data...

20
SQL per la modifica di basi di dati

Transcript of SQL per la modifica di basi di dati. 29/01/2014SQL per la modifica di basi di dati2 Data...

Page 1: SQL per la modifica di basi di dati. 29/01/2014SQL per la modifica di basi di dati2 Data Manipulation Language Introduciamo ora il Data Manipulation Language.

SQL per la modifica di basi di

dati

Page 2: SQL per la modifica di basi di dati. 29/01/2014SQL per la modifica di basi di dati2 Data Manipulation Language Introduciamo ora il Data Manipulation Language.

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.

Page 3: SQL per la modifica di basi di dati. 29/01/2014SQL per la modifica di basi di dati2 Data Manipulation Language Introduciamo ora il Data Manipulation Language.

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

Page 4: SQL per la modifica di basi di dati. 29/01/2014SQL per la modifica di basi di dati2 Data Manipulation Language Introduciamo ora il Data Manipulation Language.

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

Page 5: SQL per la modifica di basi di dati. 29/01/2014SQL per la modifica di basi di dati2 Data Manipulation Language Introduciamo ora il Data Manipulation Language.

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’

Page 6: SQL per la modifica di basi di dati. 29/01/2014SQL per la modifica di basi di dati2 Data Manipulation Language Introduciamo ora il Data Manipulation Language.

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

Page 7: SQL per la modifica di basi di dati. 29/01/2014SQL per la modifica di basi di dati2 Data Manipulation Language Introduciamo ora il Data Manipulation Language.

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

Page 8: SQL per la modifica di basi di dati. 29/01/2014SQL per la modifica di basi di dati2 Data Manipulation Language Introduciamo ora il Data Manipulation Language.

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

Page 9: SQL per la modifica di basi di dati. 29/01/2014SQL per la modifica di basi di dati2 Data Manipulation Language Introduciamo ora il Data Manipulation Language.

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’)

Page 10: SQL per la modifica di basi di dati. 29/01/2014SQL per la modifica di basi di dati2 Data Manipulation Language Introduciamo ora il Data Manipulation Language.

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

Page 11: SQL per la modifica di basi di dati. 29/01/2014SQL per la modifica di basi di dati2 Data Manipulation Language Introduciamo ora il Data Manipulation Language.

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!

Page 12: SQL per la modifica di basi di dati. 29/01/2014SQL per la modifica di basi di dati2 Data Manipulation Language Introduciamo ora il Data Manipulation Language.

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

Page 13: SQL per la modifica di basi di dati. 29/01/2014SQL per la modifica di basi di dati2 Data Manipulation Language Introduciamo ora il Data Manipulation Language.

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!

Page 14: SQL per la modifica di basi di dati. 29/01/2014SQL per la modifica di basi di dati2 Data Manipulation Language Introduciamo ora il Data Manipulation Language.

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

Page 15: SQL per la modifica di basi di dati. 29/01/2014SQL per la modifica di basi di dati2 Data Manipulation Language Introduciamo ora il Data Manipulation Language.

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.

Page 16: SQL per la modifica di basi di dati. 29/01/2014SQL per la modifica di basi di dati2 Data Manipulation Language Introduciamo ora il Data Manipulation Language.

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

Page 17: SQL per la modifica di basi di dati. 29/01/2014SQL per la modifica di basi di dati2 Data Manipulation Language Introduciamo ora il Data Manipulation Language.

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’

Page 18: SQL per la modifica di basi di dati. 29/01/2014SQL per la modifica di basi di dati2 Data Manipulation Language Introduciamo ora il Data Manipulation Language.

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)

Page 19: SQL per la modifica di basi di dati. 29/01/2014SQL per la modifica di basi di dati2 Data Manipulation Language Introduciamo ora il Data Manipulation Language.

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

Page 20: SQL per la modifica di basi di dati. 29/01/2014SQL per la modifica di basi di dati2 Data Manipulation Language Introduciamo ora il Data Manipulation Language.

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