V. Moriggia Modelli di Base Dati Modelli di Base Dati 7 Il linguaggio SQL a.a. 2001/2002 7.1 V. Moriggia Modelli di Base Dati 7.2 © A GI IG OR M V. IlIl linguaggio linguaggio per per basi basi di di dati dati relazionali relazionali 02 20 Comandi per: ? definizione del data base (DDL) ? manipolazione dei dati (DML) ? associazione tra tabelle diverse e permessi (DCL) ? interrogazioni da parte degli utenti (QL) a.a. 2001/2002 7.2 V. Moriggia Modelli di Base Dati 7.3 © Caratteristiche Caratteristiche A GI IG OR M V. ? visione 02 20 tabellare dei dati ? non richiede la specificazione dei percorsi per ritrovare i dati ? opera su gruppi di righe o sull'intera tabella, anziché su una riga per volta ? uso di interfacce per l’utente (a menu o grafiche). a.a. 2001/2002 7.3 V. Moriggia Modelli di Base Dati 7.4 © IlIl linguaggio linguaggio SQL SQL A GI IG OR M V. 02 20 (Structured Query Language) Language) ? standard tra i linguaggi per la gestione di data base relazionali. ? Identificatori Identificatori:: nomi di tabelle e di colonne Per identificare il nome di una colonna: NomeTabella..NomeColonna NomeTabella (separati dal punto) a.a. 2001/2002 7.4 V. Moriggia Modelli di Base Dati 7.5 © Dati, Dati, costanti costanti ee operatori operatori A GI IG OR M V. ? Tipi 02 20 standard per gli attributi: CHARACTER, DATE, INTEGER, SMALLINT, FLOAT, ecc ecc.. ? Valore Null nelle colonne della tabella = valore non disponibile o non definito. ? Costanti stringa delimitate dagli apici ('') ? Operatori NOT, AND e OR nella scrittura delle condizioni. Costanti di data tra diesis (##). I nomi contenenti spazi vanno racchiusi tra parentesi quadre ([]). a.a. 2001/2002 7.5 V. Moriggia Modelli di Base Dati 7.6 © A GI IG OR M V. La La definizione definizione delle delle tabelle tabelle (DDL) (DDL) ? CREATE 02 20 TABLE per creare una nuova tabella (nome campi e tipo) ? ALTER TABLE per modificare la struttura della tabella ? DROP per eliminare una tabella Nota : queste operazioni sono eseguite nei prodotti DBMS moderni usando l’interfaccia grafica. a.a. 2001/2002 7.6 V. Moriggia Modelli di Base Dati 7.7 © II comandi comandi per per la la manipolazione manipolazione dei dei dati dati (DML) (DML) A GI IG OR M V. 02 20 ? INSERT INSERT:: inserire nuovi dati nelle righe della tabella ? UPDATE UPDATE:: aggiornare i valori nella tabella ? DELETE DELETE:: cancellare righe della tabella. Nota: le operazioni sono eseguite nei prodotti DBMS moderni usando l’interfaccia grafica a.a. 2001/2002 7.7 V. Moriggia Modelli di Base Dati 7.8 © Esempi Esempi di di creazione creazione delle delle tabelle tabelle A GI IG OR M V. a.a. 2001/2002 02 20 CREATE TABLE marche (codice INTEGER NOT NULL, casa TEXT, indirizzo TEXT, cap TEXT(5), città TEXT) ? CREATE TABLE modelli (nome TEXT NOT NULL, cc INTEGER, a120kmh SINGLE, urb SINGLE, lit CURRENCY, ggc SHORT, Cod_Marca Cod _Marca INTEGER NOT NULL, uso TEXT); ? CREATE TABLE classi (classe SHORT, inf NUMERIC, sup NUMERIC); ? 7.8 V. Moriggia Modelli di Base Dati 7.9 © Esempi Esempi di di inserimento inserimento dei dei dati dati ? ? a.a. 2001/2002 INSERT INTO marche (codice, casa, indirizzo, cap cap,, città) VALUES (0, 'Citroen' 'Citroen',, "rue "rue Mt Blanc ", 80800, 'Paris‘); INSERT INTO modelli (nome, cc cc,, a120kmh, urb urb,, lit lit,, ggc ggc,, Cod Cod_Marca, _Marca, uso) VALUES ("bx ("bx 19 trd diesel", 1905, 6.5, 6.5, 18233, NULL, 0, 'lusso‘); INSERT INTO modelli (nome, cc cc,, a120kmh, urb urb,, lit lit,, ggc ggc,, Cod Cod_Marca, _Marca, uso) VALUES (Modello, Cilindrata, [Consumo a 120 kmh kmh], ], [Consumo urbano], Costo, [Giorni di consegna], [Codice della casa produttrice], [Tipo di impiego]); DELETE FROM classi WHERE classe < 3; 02 20 ? A GI IG OR M V. ? 7.9 V. Moriggia Modelli di Base Dati 7.10 © Modifica Modifica di di un’intera un’intera tabella tabella A GI IG OR M V. ? CREATE 02 20 TABLE classi3 (classe SHORT, inf NUMERIC, sup NUMERIC); ? INSERT INTO classi3 (classe, inf inf,, sup ) SELECT classe, INT(inf INT( inf*1.10), *1.10), sup * 1.10 FROM classi; ? DROP TABLE classi; oppure ? UPDATE classi SET inf = inf inf*1.1, *1.1, sup = sup * 1.1; a.a. 2001/2002 7.10 V. Moriggia Modelli di Base Dati 7.11 © Comandi Comandi per per la la sicurezza sicurezza (DCL) (DCL) A GI IG OR M V. ? GRANT UPDATE 02 20 ON tabella TO utente1, utente2; ? REVOKE UPDATE ON tabella FROM utente1, utente2; GRANT REVOKE a.a. 2001/2002 ALL ALTER DELETE INDEX INSERT SELECT UPDATE 7.11 V. Moriggia Modelli di Base Dati 7.12 © Manuale Manuale di di riferimento riferimento A GI IG OR M V. 02 20 a.a. 2001/2002 7.12 V. Moriggia Modelli di Base Dati 7.13 © A GI IG OR M V. Modello Modello di di database database per per gli gli esempi esempi successivi successivi 02 20 Database con anagrafica e movimenti Riferito a Anagrafica Movimento Relativa a Tabelle derivate : ? Anagrafiche Anagrafiche((KCodice KCodice,, Nome, Indirizzo) ? Movimenti Movimenti((KNumero KNumero,, Descrizione, Data, Importo, Codice Codice)) a.a. 2001/2002 7.13 V. Moriggia Modelli di Base Dati 7.14 © A GI IG OR M V. IlIl comando comando Select Select (QL) (QL) ? attiva 02 20 le interrogazioni sulle relazioni: implementa le operazioni relazionali per ottenere nuove tabelle virtuali (view (view). ). Struttura Struttura generale generale del del comando comando Select Select:: SELECT SELECT …… …… FROM FROM …… …… Definizioni: invisibile : c’è ma non si vede virtuale : si vede ma non c’è a.a. 2001/2002 7.14 V. Moriggia Modelli di Base Dati 7.15 © Sintassi Sintassi di di Select Select A GI IG OR M V. 02 20 SELECT nomi delle colonne da elencare (tutti gli attributi = * ) FROM il nome o i nomi delle tabelle ? a.a. 2001/2002 SELECT DISTINCT DISTINCT... ... le righe duplicate nella tabella risultante vengono ridotte a una. 7.15 V. Moriggia Modelli di Base Dati 7.16 © La La vista vista dell’intera dell’intera tabella tabella A GI IG OR M V. 02 20 SELECT SELECT ** FROM NomeTabella; FROM NomeTabella NomeTabella;; a.a. 2001/2002 7.16 V. Moriggia Modelli di Base Dati 7.17 © Vista Vista dell’intera dell’intera tabella: tabella: esempi esempi A GI IG OR M V. 02 20 Elenco di tutte le colonne delle anagrafiche Vista di Anagrafiche SQL SQL Select * From Anagrafiche; Elenco dei movimenti Vista di Movimenti SQL SQL Select * From Movimenti; a.a. 2001/2002 7.17 V. Moriggia Modelli di Base Dati 7.18 © A GI IG OR M V. Le Le operazioni operazioni relazionali relazionali nel nel linguaggio linguaggio SQL SQL 02 20 selezione ? proiezione ? congiunzione ? Struttura Struttura generale generale del del comando comando Select Select:: SELECT SELECT …… …… FROM FROM …… …… WHERE WHERE …… …… Definizioni: invisibile : c’è ma non si vede virtuale : si vede ma non c’è a.a. 2001/2002 7.18 V. Moriggia Modelli di Base Dati 7.19 © Sintassi Sintassi di di Select Select A GI IG OR M V. 02 20 SELECT nomi delle colonne da elencare (tutti gli attributi = * ) FROM il nome o i nomi delle tabelle WHERE condizione da controllare sui valori delle righe (anche più condizioni con AND, OR e NOT). a.a. 2001/2002 7.19 V. Moriggia Modelli di Base Dati Le Le operazioni operazioni relazionali relazionali nel nel linguaggio linguaggio SQL SQL:: 7.20 © A GI IG OR M V. Selezione Selezione 02 20 SELECT SELECT ** FROM FROM NomeTabella NomeTabella WHERE WHERE Condizione Condizione;; a.a. 2001/2002 7.20 V. Moriggia Modelli di Base Dati 7.21 © Selezione: Selezione: esempio esempio A GI IG OR M V. 02 20 Elenco delle anagrafiche di Milano: Selezione di Anagrafiche per Indirizzo = ‘Milano’ ‘Milano’ SQL SQL Select * From Anagrafiche Where Indirizzo = ’Milano’; in generale : SQL SQL Select * From Anagrafiche Where Indirizzo = [Quale Indirizzo]; a.a. 2001/2002 7.21 V. Moriggia Modelli di Base Dati Le Le operazioni operazioni relazionali relazionali nel nel linguaggio linguaggio SQL SQL:: 7.22 © A GI IG OR M V. Proiezione Proiezione 02 20 SELECT SELECT Colonna1, Colonna1, Colonna2, Colonna2, … … FROM NomeTabella; FROM NomeTabella NomeTabella;; a.a. 2001/2002 7.22 V. Moriggia Modelli di Base Dati 7.23 © Proiezione: Proiezione: esempi esempi A GI IG OR M V. 02 20 Elenco dei codici e dei nomi delle anagrafiche Proiezione di Anagrafiche su Codice e Nome SQL SQL Select KCodice KCodice, , Nome From Anagrafiche; Elenco dei movimenti con data e importo Proiezione di Movimenti su Data e Importo SQL SQL Select Data, Importo From Movimenti; a.a. 2001/2002 7.23 V. Moriggia Modelli di Base Dati Le Le operazioni operazioni relazionali relazionali nel nel linguaggio linguaggio SQL SQL:: 7.24 © A GI IG OR M V. Congiunzione Congiunzione 02 20 SELECT SELECT ** FROM FROM Tabella1, Tabella1,Tabella2 Tabella2 WHERE Tabella1.Attrib1 Tabella2.Attrib2 WHERE Tabella1.Attrib1==Tabella2.Attrib2; Tabella2.Attrib2;; a.a. 2001/2002 7.24 V. Moriggia Modelli di Base Dati 7.25 © Congiunzione: Congiunzione: esempio esempio A GI IG OR M V. 02 20 Elenco dei movimenti con i dati anagrafici ad essi relativi Congiunzione di Anagrafiche su Codice e di Movimenti su Codice SQL SQL Select * From Anagrafiche, Movimenti Where Anagrafiche. Anagrafiche.KCodice KCodice= = Movimenti.Codice; a.a. 2001/2002 7.25 V. Moriggia Modelli di Base Dati 7.26 © Uso Uso di di più più operatori operatori A GI IG OR M V. 02 20 SELECT SELECTColonna1, Colonna1, Colonna2, Colonna2, ... ... FROM FROM Tabella1, Tabella1,Tabella2 Tabella2 WHERE Tabella1.Attrib1 WHERE Tabella1.Attrib1==Tabella2.Attrib2 Tabella2.Attrib2 AND Condizione; AND Condizione Condizione;; a.a. 2001/2002 7.26 V. Moriggia Modelli di Base Dati 7.27 © Uso Uso di di più più operatori: operatori: esempio esempio A GI IG OR M V. 02 20 Elenco dei movimenti con Nome e Importo riferiti alle anagrafiche aventi un indirizzo prefissato 1. Selezione di Anagrafiche per Indirizzo = prefissato 2. Congiunzione della tabella ottenuta su Codice e di Movimenti su Codice 3. Proiezione della tabella ottenuta su Nome e Importo SQL SQL Select Nome, Importo From Anagrafiche, Movimenti Where Anagrafiche. Anagrafiche.KCodice KCodice= = Movimenti.Codice And Indirizzo = [Quale Indirizzo]; a.a. 2001/2002 7.27 V. Moriggia Modelli di Base Dati 7.28 © Esercizi Esercizi A GI IG OR M V. 02 20 Anagrafica e Movimento: interrogazioni, specificando le operazioni relazionali, e codifica nel linguaggio SQL ? Elenco dei movimenti relativi a un codice prefissato. ? Elenco dei movimenti con codice, data e importo. ? Elenco con Nome anagrafico e Numero di registrazione dei movimenti. ? Data dei movimenti con Indirizzo dell’anagrafica. ? Numero di registrazione dei movimenti riferiti all’anagrafica avente un Nome prefissato. ? Nome anagrafico, Data e Importo dei movimenti riferiti a un indirizzo prefissato. a.a. 2001/2002 7.28