Insegnamento di Informatica CdS Scienze Giuridiche A.A. 2007/8 Il trattamento dei dati database: il linguaggio SQL prima parte Prof. Valle – D.ssa Folgieri Lez8 8.11.07 Trattamento dati. Database: il linguaggio SQL-prima parte 1 Linguaggi per database •Permettono l’accesso ai dati. Vi sono vari tipi di linguaggi: • testuali interattivi • con comandi immersi in un linguaggio ospite (comandi di interrogazione riportati in linguaggi come il Pascal, il C, il Cobol, ecc…) • con comandi immersi in un linguaggio ad hoc e tool (strumenti) vari • con interfacce friendly (si può sviluppare anche senza conoscere un linguaggio) Lez8 8.11.07 Trattamento dati. Database: il linguaggio SQL-prima parte 2 1 SQL • SQL sta per Structured Query Language (linguaggio di interrogazione strutturato) • è un linguaggio interattivo, si può trovare immerso in altri linguaggi (es. Visual Basic), immerso in linguaggi ad hoc (es. Oracle PL/SQL), o gestito da interfacce friendly (es. Microsoft Access) • reso molto noto dalla Oracle Inc., attualmente lo standard utilizzato da quasi tutti gli RDBMS (Relational DataBase Management Systems) • è un linguaggio completo per la gestione di una base dati.L’SQL include inoltre anche funzionalità di DDL (Data Description Language) e di DML (Data Management Language). Lez8 8.11.07 Trattamento dati. Database: il linguaggio SQL-prima parte 3 DDL e DML •Stanno per: • DDL (data definition language): funzionalità per la definizione di schemi (logici, esterni e fisici – tre livelli ANSI/SPARC) e altre operazioni generali • DML (data manipulation language): funzionalità per l’interrogazione e l’aggiornamento di dati Lez8 8.11.07 Trattamento dati. Database: il linguaggio SQL-prima parte 4 2 I tipi di dati in SQL •Ogni linguaggio definisce i dati (e la sintassi) che può gestire. I tipi di dati in SQL possono essere: • stringhe di caratteri • numeri • tipi data/ora • costanti (numeriche, stringa e data/ora) •Note sulla nomenclatura: anche se nelle istruzioni del linguaggio talvolta alcune parole si scrivono in maiuscolo, per evidenziare le parole chiave, SQL non fa distinzione tra maiuscole e minuscole (in gergo si dice che è “case insensitive”. Lez8 8.11.07 Trattamento dati. Database: il linguaggio SQL-prima parte 5 Operatori •Per poter effettuare operazioni e confronti logici e aritmetici, vengono utilizzati: • Operatori aritmetici • Operatori di confronto • Operatori logici •Ne abbiamo già visto qualcuno negli argomenti già trattati nel corso, vediamo nel dettaglio quelli utilizzati da SQL: Lez8 8.11.07 Trattamento dati. Database: il linguaggio SQL-prima parte 6 3 Operatori aritmetici Operatori/oper andi Descrizione - < oper> Effettua l’inversione dell’operando (da negativo a positivo e viceversa) Somma tra due operandi. < oper1> + < oper2> < oper1> < oper2> < oper1> * < oper2> < oper1> / < oper2> < oper1> % < oper2> Lez8 8.11.07 Sottrazione tra due operandi. Moltiplicazione di due operandi. Divisione tra due operandi Modulo, ovvero l’operazione fornisce il resto della divisione tra il primo e il secondo operando. Trattamento dati. Database: il linguaggio SQL-prima parte 7 Operatori aritmetici Operatori/oper andi - < oper> < oper1> + < oper2> < oper1> < oper2> < oper1> * < oper2> < oper1> / < oper2> < oper1> % < oper2> Lez8 8.11.07 Esempio (siano A=10 e B=2 due variabili, ovvero due “contenitori” di valori) -A fornisce il risultato -10 A+B fornisce il risultato 12 A-B fornisce il risultato 8 A*B fornisce il risultato 20 A/B fornisce il risultato 5 A % B fornisce il risultato 0 (il resto della divisione tra i due operandi) Trattamento dati. Database: il linguaggio SQL-prima parte 8 4 Operatori di confronto Operatori/operandi Descrizione < oper1> = < oper2> Vero quando gli operandi si equivalgono. < oper1> <> < oper2> < oper1> < < oper2> Vero quando gli operandi sono differenti. < oper1> > < oper2> Vero quando il primo operando è maggiore del secondo. < oper1> <= < oper2> Vero quando il primo operando è minore o uguale al secondo. < oper1> >= < oper2> Vero quando il primo operando è maggiore o uguale al secondo. Vero quando il primo operando è minore del secondo. Lez8 8.11.07 Trattamento dati. Database: il linguaggio SQL-prima parte 9 Operatori di confronto Operatori/operandi Esempio (siano A=10 e B=2 due variabili, ovvero due “contenitori” di valori) < oper1> = < oper2> A=B risultato: Falso < oper1> <> < oper2> < oper1> < < oper2> A<>B risultato: Vero A<B risultato: Falso < oper1> > < oper2> A>B risultato: Vero < oper1> <= < oper2> A<=B risultato: Falso < oper1> >= < oper2> A>=B risultato: Vero Lez8 8.11.07 Trattamento dati. Database: il linguaggio SQL-prima parte 10 5 Operatori di confronto i confronti si possono fare anche tra valori alfanumerici (in questo caso il minore ha significato di ordine alfabetico), sebbene, vedremo, per tali variabili vi sono operatori specifici. Operatori/operandi Esempio (siano A=mela e B=pera due variabili, ovvero due “contenitori” di valori) A=B risultato: Falso < oper1> <> < oper2> A<>B risultato: Vero < oper1> = < oper2> < oper1> < < oper2> A<B risultato: Vero (la “m” viene prima della “p”) < oper1> > < oper2> A>B risultato: Falso < oper1> <= < oper2> A<=B risultato: Vero < oper1> >= < oper2> A>=B risultato: Falso Lez8 8.11.07 Trattamento dati. Database: il linguaggio SQL-prima parte 11 Operatori logici Operatori/operandi Descrizione NOT <oper> Inverte il risultato logico dell'operando. < oper1> AND < oper2> Vero se tutti e due operandi restituiscono il valore Vero. < oper1> OR < oper2> Vero se almeno uno degli operandi restituisce il valore Vero. Lez8 8.11.07 Trattamento dati. Database: il linguaggio SQL-prima parte 12 6 Operatori logici Operatori/operandi Esempio (siano A=10 e B=2 due variabili, ovvero due “contenitori” di valori) NOT <oper> NOT A < oper1> AND < oper2> (A<11) AND (B<3) Risultato: Vero In questo caso gli operandi sono solitamente operazioni di confronto < oper1> OR < oper2> (A<11) AND (B>3) Risultato: Vero In questo caso gli operandi sono solitamente operazioni di confronto Lez8 8.11.07 Risultato: -10 Trattamento dati. Database: il linguaggio SQL-prima parte 13 Operatori logici anche in questo caso, talvolta si possono usare variabili alfanumeriche anche se, vedremo, per tali variabili vi sono operatori specifici. Operatori/operandi Esempio (siano A=mela e B=pera due variabili, ovvero due “contenitori” di valori) NOT <oper> Per le stringhe non ha senso! < oper1> AND < oper2> (A<zucca) AND (B<uva) Risultato: Vero In questo caso gli operandi sono solitamente operazioni di confronto < oper1> OR < oper2> (A<zucca) AND (B>uva) Risultato: Vero In questo caso gli operandi sono solitamente operazioni di confronto Lez8 8.11.07 Trattamento dati. Database: il linguaggio SQL-prima parte 14 7 Operatori di confronto per le stringhe Per le stringhe possono essere usati operatori di confronto specifici: Espressioni Descrizione <stringa1> IS LIKE < stringa2> < stringa1> IS NOT LIKE < stringa2> Restituisce Vero quando la stringa1 corrisponde alla stringa2 Restituisce Vero quando la stringa1 non corrisponde alla stringa2 _ Rappresenta un carattere singolo qualsiasi. Rappresenta una sequenza indeterminata di caratteri. % Lez8 8.11.07 Trattamento dati. Database: il linguaggio SQL-prima parte 15 Operatori di confronto per le stringhe Per le stringhe possono essere usati operatori di confronto specifici: Espressioni Esempio (abbiamo i soliti A=mela e B= pera) <stringa1> IS LIKE < stringa2> < stringa1> IS NOT LIKE < stringa2> A IS LIKE B restituisce FALSO _ Rappresenta un carattere singolo qualsiasi. Rappresenta una sequenza indeterminata di caratteri. % Lez8 8.11.07 A IS NOT LIKE B restituisce VERO Trattamento dati. Database: il linguaggio SQL-prima parte 16 8 Operatori per il controllo delle espressioni Operatori Descrizione <espressione> IS NULL Restituisce Vero se l'espressione genera un risultato indeterminato. <espressione> IS NOT NULL Restituisce Vero se l'espressione non genera un risultato indeterminato. Lez8 8.11.07 Trattamento dati. Database: il linguaggio SQL-prima parte 17 Operatori per il controllo delle espressioni Operatori Esempio (siano A= 10, B=2 e Stringa1=mela, Stringa2=pera) <espressione> IS NULL (A+B) IS NULL restituisce FALSO <espressione> IS NOT NULL Lez8 8.11.07 Con le stringhe ha senso se, per esempio, ho un programma che mette una stringa trovata in una variabile o non vi mette nulla se non trovo quel che cerco. (B/0) B diviso zero genera un risultato indeterminato, quindi il risultato è FALSO (A/B) restituisce il valore VERO (il risultato non è indeterminato Per le stringhe vale il discorso fatto sopra Trattamento dati. Database: il linguaggio SQL-prima parte 18 9 Operatori “di appartenenza” Alcuni operatori permettono di verificare se un valore appartiene o meno ad un intervallo o a un elenco di valori: Operatori/operandi Descrizione <oper1> IN (<elenco>) Vero se il primo operando è presente nell'elenco. < oper1> NOT IN (<elenco>) Vero se il primo operando non è presente nell'elenco. < oper1> BETWEEN < oper2> AND < oper3> Vero se il primo operando è compreso nell’intervallo indicato dal secondo e dal terzo. < oper1> NOT BETWEEN < oper2> AND < oper3> Vero se il primo operando non è compreso nell'intervallo indicato. Lez8 8.11.07 Trattamento dati. Database: il linguaggio SQL-prima parte 19 Operatori “di appartenenza” Alcuni operatori permettono di verificare se un valore appartiene o meno ad un intervallo o a un elenco di valori: Operatori/operandi Esempio (sia elenco l’insieme dei valori: mela, pera, arancia e A= mela, B= pera, C= pesca) <oper1> IN (<elenco>) A IN elenco VERO, perché la parola mela è presente nell’insieme elenco < oper1> NOT IN (<elenco>) C NOT IN elenco VERO, perché la parola pesca non è presente nell’insieme elenco < oper1> BETWEEN < oper2> AND < oper3> B between A and C VERO, perché la parola PERA è compresa (ordine alfabetico) tra le parole MELA e PESCA < oper1> NOT BETWEEN < oper2> AND < oper3> A between B and C VERO, perché la parola MELA non è compresa (ordine alfabetico) tra le parole PERA e PESCA Lez8 8.11.07 Trattamento dati. Database: il linguaggio SQL-prima parte 20 10 Operatori “di appartenenza” Il between si presta ovviamente molto bene all’utilizzo con variabili numeriche Operatori/operandi Esempio (sia A= 10, B= 2, C= 7) < oper1> BETWEEN < oper2> AND < oper3> C between B and A VERO, perché il 7 si colloca tra 2 e 10 < oper1> NOT BETWEEN < oper2> AND < oper3> A not between B and C VERO, perché il 10 non si colloca tra 2 e 7 Lez8 8.11.07 Trattamento dati. Database: il linguaggio SQL-prima parte 21 UTILITA’ DEGLI OPERATORI Gli operatori servono ad utilizzare al meglio le sintassi di SQL per manipolare i dati di un database. Infatti, una volta “immagazzinati” (in Inglese “stored”) i dati, occorre potervi effettuare varie operazioni, ad esempio di confronto, logiche, ma anche di ricerca (search) e di estrazione dei dati (retreiving dei dati). Occorre cioè effettuare delle query, cioè delle “interrogazioni” per estrarre i dati che cerchiamo per poi poterli elaborare. Combinando tra loro gli operatori si possono formulare espressioni complesse per la ricerca, il mantenimento, l’inserimento e in generale il trattamento dei dati immagazzinati. Lez8 8.11.07 Trattamento dati. Database: il linguaggio SQL-prima parte 22 11 I 5 verbi di SQL Per poter formulare operazioni di mantenimento dei dati in un database, occorre disporre di istruzioni che lo consentano. In SQL i comandi che consentono tali operazioni sono: CREATE INSERT DELETE SELECT UPDATE Cui si aggiungono funzioni e procedure standard messi a disposizione del linguaggio. Nella prossima lezione cominceremo ad analizzare le sintasssi dei comandi appena elencati. Lez8 8.11.07 Trattamento dati. Database: il linguaggio SQL-prima parte 23 12