INFORMATICA MEDICA
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
<strong>INFORMATICA</strong> <strong>MEDICA</strong><br />
3. Panoramica su SQL<br />
Prof. Mauro Giacomini
Sommario<br />
• Introduzione<br />
• Istruzione SELECT<br />
• Tipi di Join<br />
• Subquery<br />
• Comandi DML<br />
• Creazione delle tabelle<br />
Inf. Med.- 3. Panoramica su SQL -<br />
A.A. 2013-14
Introduzione<br />
• SQL: linguaggio di interrogazione standard per DBMS<br />
relazionali<br />
• Consente anche: manipolazione dati, riorganizzazione<br />
dati, esecuzione di comandi amministrativi<br />
• Non è un linguaggio di programmazione completo<br />
• Utilizzabile in ambienti di programmazione<br />
• Sono disponibili shell di interpretazione dei comandi<br />
• Nato nei primi anni ’80 sulla spinta di IBM che ne ha<br />
curato anche la standardizzazione, l’ultima versione è<br />
ISO/IEC 9075-2:2003<br />
Inf. Med.- 3. Panoramica su SQL -<br />
A.A. 2013-14
Istruzione SELECT<br />
• Molto flessibile<br />
• Restituisce una tabella temporanea<br />
• Sintassi<br />
• SELECT [ALL|DISTINCT]<br />
• FROM <br />
• [WHERE ]<br />
• [GROUP BY ]<br />
• [HAVING ]<br />
• [ORDER BY [ASC|DESC]]<br />
Inf. Med.- 3. Panoramica su SQL -<br />
A.A. 2013-14
Istruzione SELECT (2)<br />
• SELECT: attributi da selezionare<br />
• FROM: tabelle che contengono gli attributi<br />
di cui sopra<br />
• WHERE: condizione di scelta fra le righe<br />
• GROUP BY: modo di raggruppamento<br />
• HAVING: condizione sui gruppi<br />
• ORDER BY: attributi di ordinamento ASC<br />
cerscente DESC decrescente<br />
Inf. Med.- 3. Panoramica su SQL -<br />
A.A. 2013-14
Proiezione<br />
• Scelta di alcuni attributi da una tabella (*)<br />
• Possibile ridenominazione (AS)<br />
Inf. Med.- 3. Panoramica su SQL -<br />
A.A. 2013-14
Restrizione<br />
• Opera sulle righe<br />
• Ottiene un sottoinsieme delle righe della<br />
tabella<br />
• Dipende dalle condizioni specificate nel<br />
WHERE<br />
• Operatori (, ) e<br />
connettori logici (AND, OR, NOT)<br />
• Operatori BETWEEN, IN, IS NULL<br />
Inf. Med.- 3. Panoramica su SQL -<br />
A.A. 2013-14
LIKE<br />
• Operatore per ricerche flessibili sulle stringhe<br />
• Da usarsi con caratteri speciali<br />
• % una qualsiasi sequenza di caratteri o (*)<br />
• _ un singolo carattere qualsiasi o (?)<br />
Inf. Med.- 3. Panoramica su SQL -<br />
A.A. 2013-14
Operazioni sulle colonne<br />
• Nella lista delle colonne<br />
• Operatori matematici<br />
• Concatenazione di stringhe | o & o +<br />
Inf. Med.- 3. Panoramica su SQL -<br />
A.A. 2013-14
Funzioni scalari di gruppo<br />
• Restituiscono un singolo valore e sono<br />
applicate su insiemi di righe<br />
• Max | Min |AVG | SUM (attributo)<br />
• COUNT ( * | Espressione) con * tutte le<br />
righe, con Espressione conta solo quelle in<br />
cui Espressione è NULL<br />
Inf. Med.- 3. Panoramica su SQL -<br />
A.A. 2013-14
Raggruppamenti<br />
• GROUP BY: raggruppa righe secondo la<br />
lista degli attributi specificata<br />
• HAVING: specifica delle condizioni sui<br />
gruppi formati dagli attributi della<br />
clausola GROUP BY<br />
Inf. Med.- 3. Panoramica su SQL -<br />
A.A. 2013-14
Join<br />
• Prodotto Cartesiano (CROSS JOIN)<br />
• SELECT <br />
• FROM ,<br />
• Giunzione Naturale (NATURAL JOIN)<br />
• SELECT <br />
• FROM ,<br />
• WHERE = <br />
Inf. Med.- 3. Panoramica su SQL -<br />
A.A. 2013-14
Inner Join<br />
• INNER JOIN <br />
• [ON ]<br />
• Non è limitato solo alle connessioni fra<br />
le chiavi<br />
• Non è solo di uguaglianza<br />
• Non è limitato alle sole tabelle connesse<br />
in fasi di costruzione dello schema<br />
Inf. Med.- 3. Panoramica su SQL -<br />
A.A. 2013-14
Outer Join<br />
• SELECT <br />
• FROM [LEFT | RIGHT] JOIN<br />
<br />
• ON <br />
<br />
• = < | > | = | =<br />
• Fornisce tutte le righe anche quelle che<br />
non hanno corrispondenze dal lato<br />
indicato<br />
Inf. Med.- 3. Panoramica su SQL -<br />
A.A. 2013-14
Self Join<br />
• Join che lega due occorrenze presenti<br />
nella stessa tabella<br />
• Come i precedenti, solo che ha bisogno<br />
di due istanze della stessa tabella nel<br />
FROM con la ridenominazione<br />
Inf. Med.- 3. Panoramica su SQL -<br />
A.A. 2013-14
Join su più tabelle<br />
• Come quello su due tabelle<br />
• Non serve che siano collegate<br />
logicamente<br />
• Bastano dei domini comuni a due a due<br />
Inf. Med.- 3. Panoramica su SQL -<br />
A.A. 2013-14
Subquery scalari (1)<br />
• Esempio: selezione di righe sulla base del risultato di<br />
un’altra query<br />
• Def. : una query racchiusa da parentesi () che può<br />
essere inserita in un’altra istruzione SQL,<br />
principalmente come parametro di una sezione di<br />
WHERE<br />
• SELECT matricola, cognome, nome, eta<br />
• FROM Studente<br />
• WHERE eta > (SELECT AVG(eta) FROM studente)<br />
Inf. Med.- 3. Panoramica su SQL -<br />
A.A. 2013-14
Subquery scalari (2)<br />
• Condizioni di uso<br />
• Deve restituire un solo valore<br />
• Deve comparire a destra dell’operatore di<br />
confronto<br />
• Non si possono confrontare due subquery<br />
• Nella subquery non si possono usare<br />
(GROUP BY e HAVING)<br />
Inf. Med.- 3. Panoramica su SQL -<br />
A.A. 2013-14
Subquery e IN (1)<br />
• Con la clausola IN si può controllare in un<br />
insieme, quindi possiamo usare subquery che<br />
restituiscono un vettore (colonna) di dati<br />
• SELECT * FROM Impiegato<br />
• WHERE Impiegato.matricola IN<br />
• (SELECT DISTINCT Familiare.matricola<br />
FROM Familiare Where eta
Subquery e IN (2)<br />
• SELECT DISTINCT *<br />
• FROM Impiegato, Familiare<br />
• WHERE Impiegato.matricola =<br />
Familiare.matricola and<br />
Familiare.eta
Subquery annidate<br />
• SELECT Filiale.*<br />
• FROM Filiale<br />
• WHERE codice IN<br />
• (SELECT codice_filiale<br />
• FROM Tariffa<br />
• WHERE codice_categoria =<br />
• (SELECT codice<br />
• FROM Categoria<br />
• WHERE descrizione = ‘Lusso’)<br />
• AND prezzo
Tipi di linguaggi per il DBMS<br />
• Data Manipulation Language (DML): comandi<br />
per inserire, modificare, cancellare occorrenze<br />
in una tabella<br />
• Data Definition Language (DDL): comandi per<br />
la struttura del DB (creazione/eliminazione di<br />
tabelle/attributi/vincoli/viste)<br />
• Data Control Language (DCL): comandi per il<br />
controllo sui dati, gestione degli utenti, diritti<br />
Inf. Med.- 3. Panoramica su SQL -<br />
A.A. 2013-14
INSERT (1)<br />
• Inserimento di righe in tabelle<br />
• Dati specificati nell’istruzione<br />
• INSERT INTO <br />
• [lista_colonne]<br />
• VALUES <br />
• Es:<br />
• INSERT INTO Studente<br />
• (matricola, cognome, nome)<br />
• VALUES (2523789, ‘Rossi’,’Mario’)<br />
• Corrispondenza 1 a 1 fra lista colonne e lista valori<br />
• Campi non presenti nella lista messi a NULL<br />
• Se non c’è la lista colonne, i valori saranno assegnati ai campi<br />
nell’ordine in cui compaiono nella tabella<br />
• Il valore della chiave primaria deve sempre essere assegnato<br />
Inf. Med.- 3. Panoramica su SQL -<br />
A.A. 2013-14
INSERT (2)<br />
• Accoppiata con una SELECT per<br />
ottenere i dati da inserire<br />
• INSERT INTO Studente_Laureato<br />
• (SELECT * FROM Studente<br />
• WHERE laureato = ‘S’)<br />
• La tabella Studente_Laureato deve<br />
essere già presente e deve avere la<br />
stessa struttura di Studente<br />
Inf. Med.- 3. Panoramica su SQL -<br />
A.A. 2013-14
UPDATE<br />
• Modifica i dati già presenti<br />
• Sintassi<br />
• UPDATE <br />
• SET =<br />
• [{,=}]<br />
• [WHERE ]<br />
• L’espressione può essere anche una<br />
subquery scalare<br />
Inf. Med.- 3. Panoramica su SQL -<br />
A.A. 2013-14
DELETE<br />
• Elimina tutte le righe che rispettano la<br />
condizione scritta nella clausola WHERE<br />
• Sintassi:<br />
• DELETE FROM <br />
• [WHERE ]<br />
Inf. Med.- 3. Panoramica su SQL -<br />
A.A. 2013-14
CREATE TABLE<br />
• Comando per la creazione di tabelle<br />
• Sintassi:<br />
• CREATE TABLE <br />
• ( { <br />
[NOT NULL | CONSTRAINT <br />
PRIMARY KEY | UNIQUE ] [,] } )<br />
Inf. Med.- 3. Panoramica su SQL -<br />
A.A. 2013-14
Tipi di dati<br />
• CHAR (n): sequenza alfanumerica di n caratteri<br />
• CHAR VARYING (n): come sopra ma qui n è un<br />
valore massimo<br />
• DECIMAL (t,f) numero decimale di t cifre di cui f<br />
decimali<br />
• INTEGER numero intero (4 byte)<br />
• SMALLINT intero corto (2 byte)<br />
• FLOAT (n) numero a virgola mobile a precisione<br />
variabile<br />
• REAL / DOUBLE numeri a virgola mobile a precisione<br />
fissa<br />
• DATE<br />
Inf. Med.- 3. Panoramica su SQL -<br />
A.A. 2013-14
Vincoli di integrità<br />
• NOT NULL: attributo obbligatorio<br />
(specificabile anche senza il predicato<br />
CONSTRAINT)<br />
• UNIQUE: valore che deve essere<br />
diverso in tutte le righe<br />
• PRIMARY KEY: indica la chiave primaria<br />
della relazione, indicabile una sola volta<br />
nella creazione della tabella<br />
Inf. Med.- 3. Panoramica su SQL -<br />
A.A. 2013-14
Vincoli di integrità di tabella<br />
• Chiave primaria composta di più attributi<br />
• Da indicarsi alla fine della CREATE TABLE<br />
• CONSTRAINT PRIMARY KEY (<br />
{ [,] } )<br />
• Chiavi esterne<br />
• CONSTRAINT FOREIGN KEY<br />
({ [,] })<br />
REFERENCES <br />
({ [,] })<br />
Inf. Med.- 3. Panoramica su SQL -<br />
A.A. 2013-14