IL LINGUAGGIO SQL Structured Query Language", Contiene sia il DDL sia il DML, quindi consente di: Definire e creare il database Effettuare l’inserimento, la cancellazione, l’aggiornamento dei record di un archivio Interrogare il database Ne esistono varie versioni Le interrogazioni con SQL sono un’estensione di quelle che si possono realizzare con sequenze di operazioni relazionali (si possono effettuare calcoli, raggruppamenti e ordinamenti) 2 Identificatori Nomi di tabelle e di attributi costituiti da sequenze di max 18 caratteri. Possono contenere il carattere “_” nel caso di nomi composti. Il nome di un attributo è identificato con la notazione: NomeTabella.NomeAttributo Il nome della tabella può essere omesso se non ci sono ambiguità nell’identificazione dell’attributo. Nella dichiarazione della struttura della tabella occorre specificare il tipo dei dati scelto per gli attributi. 3 Tipi di dati standard BOOLEAN valore logico True, False CHARACTER(N) Stringa di lunghezza n N da 1 a 15000 Date MM/GG/AA Time HH:MM INTEGER(p) p: max numero di cifre p da 1 a 45 SMALLINT 16 bit p =5 INTEGER 32 bit p =10 DECIMAL(p,s) p da 1 a 45 s da 0 a p REAL Mantissa di precisione 7 FLOAT o DOUBLE PRECISION Mantissa di precisione 15 FLOAT(p) Mantissa di precisione p p da 1 a 45 4 Considerazioni Le diverse versioni del linguaggio SQL differiscono dallo standard sia nel tipo dei dati sia nella sintassi delle istruzioni: verificare sempre nel manuale per l’utente o nell’help in linea. Le costanti sono delimitate dai caratteri ‘ o “. Il delimitatore standard è l’apice. Gli attributi con valore non disponibile o non definito assumono il valore Null. Null non è mai uguale a nessun altro valore: è diverso da 0 per i dati numerici e dalla stringa vuota per i dati alfanumerici. Le costanti numeriche possono avere o non avere il segno. Il separatore decimale è il punto. 5 Le operazioni relazionali Le operazioni relazionali consentono di effettuare le interrogazioni alla base di dati estraendo da una tabella una sottotabella, oppure combinando tra loro più tabelle e generando così nuove relazioni Operatori dell’algebra relazionale: Unione, intersezione, differenza Selezione Proiezione join (join naturale, prodotto cartesiano, theta-join) 6 Unione 7 Intersezione 8 Differenza 9 Selezione e proiezione 10 Selezione produce un risultato che ha lo stesso schema dell'operando contiene un sottoinsieme delle ennuple dell'operando Contiene solo le ennuple che soddisfano la condizione indicata Grado: la relazione ottenuta ha lo stesso grado (le stesse colonne) di quella di partenza 11 Esempio Impiegati che guadagnano più di 50 e lavorano a Milano SELStipendio > 50 AND Filiale = 'Milano' (Impiegati) 12 Proiezione produce un risultato che ha parte degli attributi dell'operando contiene ennuple cui contribuiscono tutte le ennuple dell'operando Semantica: il risultato contiene le ennuple ottenute da tutte le ennuple dell'operando ristrette agli attributi nella lista 13 Le interrogazioni in SQL Il comando SELECT consente di estrarre dal database le informazioni desiderate La struttura base del comando è: SELECT Colonne FROM Tabelle WHERE Condizioni; 14 Esempi SELECT Cognome, Nome, Citta FROM Impiegato WHERE Dipart=‘medicina’; SELECT Cognome, Nome, Citta FROM Impiegato WHERE Dipart=‘medicina’ AND Citta=‘Torino’; SELECT * FROM Impiegato WHERE Citta=‘Torino’; 15 Predicati ALL e DISTINCT SELECT ALL * FROM Impiegato WHERE Citta=‘Torino’; Trova tutte le righe che soddisfano alla condizione (si può omettere, ALL è un predicato di default) SELECT DISTINCT Citta FROM Impiegato; Produce l’elenco di tutte le città senza duplicati 16 Abbreviazioni 17 Clausola DISTINCT 18 Clausola AS 19 Selezione senza proiezione Nome,età, reddito delle persone con meno di 30 anni 20 Condizione LIKE Persone il cui nome inizia con A e hanno d come terza lettera 21 Gestione dei valori nulli Impiegati la cui età è maggiore di 40 oppure non è specificata 22