Nel seguito del capitolo faremo riferimento al seguente database di esempio.

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Nel seguito del capitolo faremo riferimento al seguente database di esempio."

Transcript

1 1 Introduzione Il linguaggio SQL (Structured Query Language) è nato con lo scopo di poter eseguire con facilità: la definizione e la creazione di un database relazionale; le diverse operazioni di gestione dei dati, quali l inserimento, la cancellazione e la variazione dei record di un archivio; l interrogazione del database a scopo informativo. Il linguaggio è basato su costrutti semplici e facili da imparare. Le sue caratteristiche, infine, sono standardizzate in modo che un utente, cambiando DBMS, non debba apprendere un nuovo linguaggio per usare la base di dati. Le interrogazioni che si costruiscono con SQL sono un estensione di quelle che si realizzano con sequenze di operazioni relazionali, in quanto con SQL è possibile, come nelle query di Access, effettuare calcoli, raggruppamenti e ordinamenti. Come abbiamo visto nel precedente capitolo, Access permette di costruire una query in modalità QBE e di visualizzarne il corrispondente codice SQL. È anche possibile costruire l interrogazione in SQL e, passando alla Visualizzazione Struttura, esaminare la versione QBE della query. Per imparare il linguaggio è molto utile passare da una modalità all altra e osservare come una frase di SQL viene rappresentata in QBE oppure come una query QBE, di cui si conoscono gli effetti, viene tradotta in SQL. La conoscenza di SQL è di grande importanza anche nello sviluppo di applicazioni direttamente con Access in modalità QBE per le seguenti ragioni: ci sono interrogazioni che non si riescono a sviluppare con le QBE di Access; come si vedrà più avanti nel capitolo, per scrivere interrogazioni annidate in modalità QBE bisogna inserire un comando SQL nella riga dei criteri; per inserire in una maschera una casella combinata che permetta la scelta da un elenco di dati estratti da una tabella, bisogna scrivere un interrogazione SQL da inserire tra le proprietà della casella; scritta un interrogazione in modalità QBE e dovendola modificare, è spesso più facile e rapido modificare il codice SQL dell interrogazione che la versione QBE originale. Nel seguito del capitolo faremo riferimento al seguente database di esempio. Un azienda è articolata in un certo numero di dipartimenti. I dipendenti sono assegnati ai diversi dipartimenti che hanno a capo un manager responsabile della gestione. Le entità individuate sono: Impiegato con le informazioni sui dipendenti: un codice identificativo (chiave primaria), nome, cognome, residenza e stipendio. Stipendio e codice identificativo sono attributi di tipo numerico, gli altri sono di tipo carattere. Dipartimento con le informazioni sui dipartimenti: un codice che individua il dipartimento (la chiave primaria), il nome del dipartimento e il suo indirizzo. Tutti gli attributi sono di tipo carattere. Tra Impiegato e Dipartimento si individuano le due associazioni Comprendere e Coordinare come è mostrato nel diagramma E/R in figura IL LINGUAGGIO SQL

2 Modello E/R Comprendere è un associazione uno a molti tra Dipartimento e Impiegato: un impiegato è compreso in un solo dipartimento, un dipartimento è composto da molti impiegati. Partecipazione facoltativa per Dipartimento, nell ipotesi che ci siano dipartimenti senza dipendenti assegnati. Lettura del modello Ogni impiegato deve essere compreso in un solo dipartimento; ogni dipartimento può comprendere uno o più impiegati. Coordinare mette in relazione un dipartimento con il dipendente che lo dirige. È un associazione uno a molti perché un dipendente può essere a capo di più di un dipartimento, mentre un dipartimento ha un solo manager. Impiegato ID {PK} Nome Cognome Residenza Stipendio N Comprendere 1 1 Coordinare N Partecipazione facoltativa di Impiegato in quanto solo alcuni dipendenti sono manager. Dipartimento Codice {PK} Descrizione Sede Lettura del modello Ogni impiegato può coordinare uno o più dipartimenti; ogni dipartimento deve essere coordinato da un solo impiegato. Il passaggio dal modello concettuale al modello relazionale porta al seguente schema di database dove, come al solito, gli attributi sottolineati rappresentano le chiavi primarie, mentre le chiavi esterne sono indicate in corsivo. Dipartimento contiene il codice del dipartimento di appartenenza di un dipendente e modella l associazione uno a molti Comprendere e Impiegato. Impiegati (ID, Nome, Cognome, Residenza, Stipendio, Dipartimento) Dipartimenti (Codice, Descrizione, Sede, Manager) Manager rappresenta l associazione Coordinare e contiene il valore della chiave primaria del dipendente che dirige il dipartimento. Nella seguente figura sono mostrate le tabelle Impiegati e Dipartimenti con alcuni dati di esempio. L impiegato con ID = 6 lavora nel dipartimento Magazzino, diretto da Margherita Colombi. L impiegato con ID = 5 non è assegnato ad alcun dipartimento. Si tratta di un dipendente appena assunto e non ancora assegnato ad alcun dipartimento. Margherita Colombi (ID=10) è a capo sia del Magazzino che della Produzione. 5. IL LINGUAGGIO SQL 209

3 2 Caratteristiche generali del linguaggio SQL Il linguaggio SQL è un linguaggio non procedurale che è diventato uno standard tra i linguaggi per la gestione di database relazionali. La natura non-procedurale (o dichiarativa) del linguaggio SQL è stata già sottolineata nel Capitolo 1: con SQL l interrogazione al database si esegue precisando solamente dove stanno i dati e cosa si vuole ottenere, cioè definendo solo quali sono l input e l output desiderato. Dopo una prima versione introdotta da IBM alla fine degli anni 70 per un prototipo di ricerca denominato System R, negli anni 80 fu adottato con il nome attuale come linguaggio per i software DBMS prodotti dalla IBM (DB2 e SQL/DS). Nel 1986 l ANSI (American National Standards Institute) pubblicò il primo standard del linguaggio SQL, al quale seguì lo standard dell ISO (International Standards Organization) pubblicato nel Successivamente le specifiche del linguaggio vennero precisate e ampliate: gli aggiornamenti degli standard portarono alla versione, detta SQL2, pubblicata nel 1992 da ISO (ISO 9075) e alla successiva, indicata come SQL3, pubblicata nel 1999 da ISO come ISO Oggi il linguaggio SQL viene usato in tutti i prodotti DBMS come linguaggio di comandi per l utente della base di dati (ricordiamo Oracle, MySQL, SQLServer, Access). Le diverse versioni del linguaggio SQL sono in genere aderenti agli standard internazionali, ma ci sono sicuramente delle differenze che possono essere individuate attraverso la documentazione fornita con gli specifici software. Le parole-chiave che costituiscono i comandi del linguaggio SQL possono essere usate in modo interattivo, scrivendole direttamente sulla tastiera nel momento in cui si vogliono attivare. Tuttavia in molti ambienti i comandi possono essere inviati al sistema attraverso un interfaccia grafica, che utilizza menu, finestre e icone per guidare l utente nella costruzione dell istruzione SQL. La terminologia del linguaggio SQL è analoga a quella di Access dove un database è costituito da tabelle, che rappresentano le relazioni; gli attributi sono le colonne della tabella e i record sono le righe della tabella. Il linguaggio SQL consente all utente di: Definire il database, la struttura delle tabelle che lo compongono, gli indici, le associazioni tra le tabelle e le viste logiche. Un elenco di comandi SQL che assolvono a funzioni di Data Definition Language (DDL) è presentato nel Paragrafo 4. Modificare i dati contenuti nel database, con le operazioni di inserimento, variazione e cancellazione, ed effettuare le interrogazioni. I comandi Insert, Update, Delete e Select, che appartengono al Data Manipulation Language (DML) di SQL, sono discussi nei Paragrafi 5 e 6. Definire gli utenti e controllare gli accessi al database. I comandi Grant e Revoke, che appartengono alle funzioni di Data Control Language (DCL) di SQL, sono presentati nel Paragrafo 13. Gestire e controllare le transazioni con un sottoinsieme del linguaggio che prende il nome di Transaction Control Language (TCL). I comandi Commit e Rollback, che sono stati introdotti nel Capitolo 1, saranno approfonditi nel Capitolo 6, con esempi relativi al software MySQL. Il linguaggio SQL fornisce inoltre gli opportuni comandi per definire in modo facile i tabulati di uscita dei risultati (report), per recuperare i dati quando accade un interruzione del programma, un guasto nei supporti magnetici o un malfunzionamento del sistema, per definire le viste degli utenti sul database, per garantire la sicurezza dei dati nei confronti degli accessi di più utenti IL LINGUAGGIO SQL

4 3 Identificatori e tipi di dati Il linguaggio SQL utilizza i caratteri alfabetici, le cifre decimali, gli operatori aritmetici e di confronto (+ - / * = < >), più altri caratteri che assumono particolari significati nella sintassi delle istruzioni e che verranno descritti nel seguito. Gli identificatori (nomi di tabelle e di attributi) sono costituiti da sequenze di caratteri di lunghezza massima uguale a 18 caratteri: devono iniziare con una lettera e possono anche contenere il carattere _. Il nome di un attributo, ovvero di una colonna di una tabella, è identificato per mezzo della notazione abituale: NomeTabella.NomeAttributo nella quale il nome della tabella e il nome dell attributo vengono separati da un punto. Il nome della tabella può essere omesso se non ci sono ambiguità nell identificazione dell attributo. Nella dichiarazione della struttura di una tabella occorre specificare il tipo dei dati scelto per gli attributi. I tipi standard del linguaggio SQL sono: BOOLEAN Valore logico True, False CHARACTER(n) Stringa di lunghezza n n da 1 a DATE TIME Data nella forma MM/GG/AA Ora nella forma HH:MM INTEGER(p) Numero intero con precisione p p da 1 a 45 SMALLINT Numero intero con precisione 5 da a INTEGER Numero intero con precisione 10 da a DECIMAL(p,s) Numero decimale con precisione p da 1 a 45 e s da 0 a p p e s cifre decimali REAL Numero reale con mantissa valore 0 oppure valore di precisione 7 assoluto da 1E-38 a 1E+38 FLOAT (o DOUBLE Numero reale con mantissa valore 0 oppure valore PRECISION) di precisione 15 assoluto da 1E-308 a 1E+308 FLOAT(p) Numero reale con mantissa p da 1 a 45 di precisione p Per i dati numerici la precisione p indica il numero massimo di cifre che il numero può contenere, esclusi il segno e il punto decimale. Per i numeri decimali il valore s indica il numero di cifre che seguono il punto decimale. I dati numerici floating point sono memorizzati in forma esponenziale; la precisione riguarda solo le cifre della mantissa e indica il numero di cifre significative del dato. La parola NUMERIC può essere usata al posto di DECIMAL. La parola CHARACTER è equivalente a CHARACTER(1), e può essere abbreviata con CHAR. DECIMAL è equivalente a DECIMAL(15,0). Altre abbreviazioni sono: CHAR(n) invece di CHARACTER(n); INT(p) invece di INTEGER(p); DEC(p,s) invece di DECIMAL(p,s). 5. IL LINGUAGGIO SQL 211

5 Occorre osservare che alcune versioni di SQL in specifici ambienti DBMS differiscono dallo standard nell indicazione dei tipi di dati. Le stesse considerazioni valgono anche per le successive istruzioni del linguaggio: in diverse versioni del linguaggio SQL ci possono essere varianti nella sintassi e nei termini utilizzati. Per risolvere questi problemi è opportuno sempre controllare gli esempi presentati nei manuali per l utente o nell help in linea del linguaggio. Le costanti stringa sono delimitate dai caratteri ' o ". Il delimitatore standard è l apice '. Nelle colonne della tabella gli attributi che hanno un valore non disponibile, o non definito, assumono il valore Null. Il valore Null non è mai uguale a nessun altro valore: è diverso dal valore zero per i dati numerici e dalla stringa vuota (") per i dati alfanumerici. Negli ordinamenti il valore Null compare, di norma, all inizio delle sequenze crescenti e alla fine delle sequenze decrescenti. Le costanti numeriche possono avere o non avere il segno + oppure. Nei numeri decimali la parte intera è separata dalle cifre decimali attraverso il punto. I numeri in floating point possono essere rappresentati in forma esponenziale, per esempio 1.2E+7. Nelle operazioni di confronto i numeri sono controllati in accordo con il loro valore algebrico, mentre le stringhe sono confrontate carattere per carattere a partire da sinistra secondo il loro valore lessicale, cioè secondo il codice ASCII e ignorando la differenza tra caratteri maiuscoli e minuscoli (non case-sensitive). Nelle scrittura delle condizioni possono essere usati gli operatori NOT, AND e OR. Tutti i risultati di confronti numerici o stringa che riguardano attributi con valore Null sono considerati sconosciuti, perché Null non è uguale, maggiore o minore di nessun altro valore. Il linguaggio SQL può solo controllare la presenza o l assenza di Null in una colonna. 4 Comandi DDL di SQL: la definizione delle tabelle Le tabelle vengono definite con il comando CREATE TABLE, seguito dal nome della tabella seguito, tra parentesi, dall elenco degli attributi. Per ogni attributo occorre specificare il nome e il tipo di dato. Gli attributi possono essere qualificati mediante diverse clausole che permettono di definire: la chiave primaria, le chiavi esterne, l obbligatorietà e il valore di default di un campo. Creazione delle tabelle Impiegati e Dipartimenti. ID è chiave primaria della tabella. ESEMPIO 1 Campi obbligatori: non sono ammessi valori nulli in Nome e Cognome. CREATE TABLE Impiegati( ID smallint primary key, Il valore da attribuire a Nome char(20) not null, Residenza in caso di Cognome char(30) not null, valore nullo. Residenza char(20) default '*** Manca Residenza', Stipendio decimal(9,2), Dipartimento char(5) references Dipartimenti(Codice), UNIQUE(Cognome, Nome, Dipartimento) ); Ogni comando SQL termina con il punto e virgola. Vieta la presenza di valori duplicati in una colonna o in un insieme di colonne: non ci possono essere due dipendenti con identico nome e cognome nello stesso dipartimento. Dipartimento è chiave esterna associata a Codice. Crea un vincolo di integrità referenziale con Dipartimenti IL LINGUAGGIO SQL

6 Le clausole PRIMARY KEY e REFERENCES possono essere inserite, come la clausola UNIQUE, in righe isolate: questa caratteristica permette di dichiarare chiavi primarie o chiavi esterne formate da più campi. Nella definizione di una chiave esterna si può anche precisare cosa deve fare il DBMS nel caso di cancellazione di una riga nella tabella collegata o di variazione del valore della chiave primaria associata alla chiave esterna. Un esempio è mostrato nel seguente comando per creare la tabella Dipartimenti. CREATE TABLE Dipartimenti( Codice char(5), Descrizione char(20) not null, Sede char(20), Manager smallint, Primary Key (Codice), Unique (Descrizione), Foreign Key (Manager) references Impiegati(ID) On Delete set null On Update cascade ); L aggiornamento di un ID associato a Manager si riflette a catena sui valori di Manager. Codice è chiave primaria della tabella. Nella colonna Descrizione non ci possono essere valori duplicati. Descrizione identifica univocamente una riga della tabella. Manager è chiave esterna associata al campo ID della tabella Impiegati. La cancellazione di una riga di Impiegati implica che i valori di Manager associati all ID di quella riga assumano valore nullo. Secondo la precedente dichiarazione, se nella tabella Impiegati si cancella il record con ID=10, cioè il record di Margherita Colombi, il campo Manager dei record di Dipartimenti con valore 10 (cioè i dipartimenti Magazzino e Produzione) assume il valore nullo. Se a Margherita Colombi viene assegnato un nuovo valore di ID esso viene attribuito anche al campo Manager nelle righe dei dipartimenti Magazzino e Produzione. Foreign Key (Manager) references Impiegati(ID) On Delete no action On Update no action Dichiarazione di default: le due dichiarazioni si equivalgono. Foreign Key (Manager) references Impiegati(ID) Foreign Key (Manager) references Impiegati(ID) On Delete cascade On Update cascade Impedisce di cancellare un record di Impiegati correlato alla chiave esterna di Dipartimenti o di modificare il valore della chiave primaria di un record di Impiegati (ID) se tale valore compare nel campo Manager di Dipartimenti. Equivale alle opzioni Access: Elimina record correlati a catena, Aggiorna campi collegati a catena che si possono operare nella definizione delle associazioni tra tabelle. La struttura di una tabella può essere modificata in un secondo tempo con il comando ALTER TABLE, per aggiungere una nuova colonna (ADD) a quelle già esistenti, oppure per togliere una colonna (DROP). Esempio ALTER TABLE Impiegati ADD Nascita date; ALTER TABLE Impiegati DROP Residenza; Inserisce in Impiegati una nuova colonna di nome Nascita per registrare la data di nascita del dipendente. Elimina da Impiegati la colonna di nome Residenza: il comando elimina anche i dati contenuti nella colonna. 5. IL LINGUAGGIO SQL 213

7 L istruzione CREATE INDEX viene utilizzata per creare un nuovo indice su una tabella esistente, indicando il nome della tabella e il nome dell attributo o degli attributi ai quali associare l indice. Se non si vuole che ci siano valori duplicati per l attributo associato all indice, occorre usare la clausola UNIQUE. Una tabella o un indice possono essere eliminati con il comando DROP, seguito dal nome della tabella o dell indice. Esempio CREATE UNIQUE INDEX IndiceImpiegati ON Impiegati(Cognome, Nome); Crea l indice IndiceImpiegati sui campi Cognome e Nome di Impiegati: non ci possono essere dipendenti con lo stesso cognome e lo steso nome. DROP INDEX IndiceImpiegati ON Impiegati; Cancella l indice IndiceImpiegati da Impiegati. DROP TABLE Impiegati; Elimina struttura e dati della tabella Impiegati. I comandi illustrati rappresentano la parte del linguaggio SQL che fa riferimento alla categoria dei comandi definiti con la sigla DDL (Data Definition Language), cioè il linguaggio che consente di implementare il modello logico dei dati sulle memorie di massa del computer. Occorre osservare che nelle versioni moderne dei prodotti DBMS le operazioni di creazione di tabelle e di indici, oltre che di modifica alla struttura della tabella o di cancellazione di tabelle e indici, vengono effettuate, come in Access, attraverso un interfaccia interattiva che facilita il lavoro dell utente, il quale può anche non conoscere la sintassi dei comandi sopra illustrati. 5 I comandi per la manipolazione dei dati I valori degli attributi nelle righe della tabella possono essere inseriti, aggiornati o cancellati rispettivamente con i comandi INSERT, UPDATE e DELETE. È importante notare che nei comandi Update e Delete compare la clausola Where per effetto della quale è possibile operare su molte righe, anziché su una sola riga per volta: basta indicare dopo Where una condizione che deve essere verificata dalle righe che si vogliono modificare o cancellare. ESEMPIO 2 Eseguire operazioni di manipolazione sulla tabella Impiegati. INSERT INTO Impiegati (ID, Nome, Cognome, Residenza, Stipendio, Dipartimento) VALUES(20, 'Mario', 'Rossini', 'Caserta', 31500, 'Mag'); Inserimento di una riga nella tabella Impiegati. UPDATE Impiegati SET Dipartimento = 'Prod' WHERE ID = 20; Assegnamento del dipendente con ID=20 al dipartimento Produzione. DELETE WHERE ID = 20; Cancellazione del dipendente con ID=20 dalla tabella Impiegati. UPDATE Impiegati SET Stipendio = Stipendio * 1.05 WHERE Dipartimento = 'Prod'; Aumenta del 5% lo stipendio ai dipendenti del dipartimento Produzione IL LINGUAGGIO SQL

8 DELETE WHERE Dipartimento = 'R&S'; DELETE ; Cancella i dipendenti del dipartimento Ricerca & Sviluppo. Manca la clausola WHERE: il comando svuota la tabella Impiegati dai dati, ma rimane la sua struttura. Come già detto a proposito della creazione delle tabelle, nell uso pratico del linguaggio, le operazioni di inserimento, così come quelle di modifica e di cancellazione, vengono facilitate mediante l uso di maschere video che guidano l utente nelle operazioni di trattamento dei dati, all interno di un ambiente software basato sull uso di interfacce grafiche amichevoli. Si pensi, nel caso di Access, all uso delle maschere e alla possibilità di manipolare dati agendo direttamente sulla Visualizzazione Foglio dati di una tabella. Quindi i comandi di tipo DML (Data Manipulation Language) del linguaggio SQL rimangono nascosti all utente che può effettuare le operazioni di manipolazione senza conoscere la sintassi delle istruzioni. ESERCIZI da 1 a 2 pag. 249 e da da 40 a 41 pag Interrogazioni con SQL: il comando Select Un importante caratteristica del linguaggio SQL è la sua capacità di estrarre le informazioni desiderate dal database mediante interrogazioni. Queste funzionalità sono fornite dal comando SELECT che è semplice da usare e allo stesso tempo molto potente. Il comando Select riflette la natura dichiarativa del linguaggio SQL, e le interrogazioni sulle tabelle del database sono eseguite specificando solo cosa si vuole ottenere, senza doversi preoccupare di problemi quali: le modalità di rappresentazione dei dati e i percorsi per ritrovarli nelle memorie di massa. La struttura base del comando Select è descritta nel seguente schema: SELECT Elenco di espressioni FROM Tabelle Un elenco di espressioni, che coinvolgono le colonne, da mostrare. * per indicare tutte le colonne. La tabella, o le tabelle, usate nell interrogazione. WHERE Condizioni ; Una espressione logica che specifica quali righe considerare. Espressione booleana ottenuta componendo confronti con gli operatori AND OR e NOT. Esempio: interrogazioni su una sola tabella. Cognome, nome e residenza dei dipendenti del dipartimento di codice Prod. SELECT Cognome, Nome, Residenza WHERE Dipartimento = 'Prod'; SELECT ID, Cognome, Nome WHERE Dipartimento = 'Prod' AND Residenza = 'Torino'; ID, Cognome, Nome dei dipendenti che lavorano alla produzione e risiedono a Torino. 5. IL LINGUAGGIO SQL 215

9 Tutti i dati dei dipendenti che abitano a Roma. SELECT * WHERE Residenza = 'Roma'; Il comando Select possiede i due predicati ALL e DISTINCT. Con il predicato ALL si richiede che nel risultato dell interrogazione siano incluse tutte le righe, anche se duplicate, che soddisfano alle condizioni contenute nel comando. Questo predicato è di default ed in genere è omesso. SELECT * SELECT ALL * I due comandi si equivalgono. WHERE Residenza = 'Milano'; WHERE Residenza = 'Milano'; Se viene specificato il predicato DISTINCT le righe duplicate nella tabella risultante sono ridotte a una. Per esempio, se si desidera ottenere l elenco di tutte le località di residenza dei dipendenti, senza duplicati, si deve usare la clausola DISTINCT prima dell indicazione dell attributo. SELECT DISTINCT Residenza ; SELECT Residenza ; La presenza del predicato DISTINCT in un comando Select impone che una riga sia inclusa nella tabella risultante solo se non c è un altra riga con gli stessi valori. Come si è anticipato nel Capitolo 3, i DBMS commerciali, per ragioni di efficienza, non rispettano strettamente il modello relazionale, che non ammette la presenza di righe duplicate in una tabella. Il predicato DISTINCT fa in modo che un comando Select produca una tabella coerente con tale modello. La tabella che si ottiene come risultato dell interrogazione ha di norma un intestazione delle colonne che riporta i nomi degli attributi; se si vuole modificare tale intestazione, occorre rinominare la colonna usando la clausola AS. SELECT ID AS Matricola, Nome, Cognome ; Elenco degli impiegati con ID, Nome e Cognome, ma usando Matricola come intestazione della colonna ID. Con il comando SELECT si può richiedere il calcolo di espressioni basate sugli attributi della tabella; la tabella risultante contiene delle colonne con i risultati del calcolo per ogni riga. Tali colonne possono avere un intestazione opportuna utilizzando la parola AS. In assenza di AS l intestazione della colonna con l espressione viene costruita dal sistema in modo differente a seconda dell implementazione. Nel caso di Access il nome è Espr1 per la prima espressione, Espr2 per la seconda espressione e così via IL LINGUAGGIO SQL

10 Gli impiegati del magazzino con l importo dello stipendio e quello del nuovo stipendio se fosse aumentato del 5%. SELECT Cognome, Nome, Stipendio AS Attuale, Stipendio*1.05 AS Nuovo WHERE Dipartimento = 'Mag'; Gli importi di Stipendio in Impiegati non sono modificati. SELECT Cognome, Nome, Residenza, Stipendio WHERE Stipendio >= 55000; Elenca i dipendenti con retribuzione di almeno euro SELECT Cognome, Nome, Residenza, Stipendio WHERE Stipendio >= [Retribuzione minima?]; Interrogazione parametrica: lo stipendio minimo è scelto dall utente al momento dell interrogazione. Si osservi che per controllare la presenza di valori nulli si deve usare il predicato IS NULL, mentre è errato ricercare tali valori in altro modo, come è mostrato di seguito. Si ricorda, a proposito, che il dipendente con ID=5 non è assegnato ad alcun dipartimento. SELECT ID AS Matricola, Cognome, Nome WHERE Dipartimento IS NULL; Per elencare i dipendenti senza dipartimento di assegnazione, si devono riconoscere le righe con valori nulli nel campo Dipartimento. SELECT ID AS Matricola, Cognome, Nome WHERE Dipartimento = ''; Ricerca una stringa vuota in Dipartimento. L interrogazione produce un elenco vuoto perché in Impiegati non ci sono righe con una stringa di caratteri vuota in Dipartimento. Per scrivere un interrogazione in SQL nell ambiente di Access, bisogna creare una nuova query accedendo alla Visualizzazione Struttura, e chiudere la finestra di dialogo Mostra tabella senza scegliere alcuna tabella. Poi si deve fare clic sulla scelta che è diventata la proposta del pulsante Visualizza. 5. IL LINGUAGGIO SQL 217

11 Appare una finestra come quella in figura che permette di scrivere l interrogazione desiderata. Le istruzioni del linguaggio SQL sono a formato libero e terminano con il carattere punto e virgola: un comando SQL può essere scritto liberamente su una o più righe e le parole chiave del linguaggio possono essere scritte indifferentemente a caratteri maiuscoli o minuscoli. In un comando SQL possono comparire commenti, con la convenzione che si considera un commento tutto quello che compare in una riga di seguito alla sequenza di caratteri --. Per esempio, i due comandi SELECT mostrati di seguito sono entrambi corretti e sono sintatticamente identici; sono stati anche inseriti: un commento che occupa parte di una riga e tre commenti che occupano un intera riga. SELECT Matricola, Cognome, Nome -- Esempio di commento FROM Studenti WHERE Provincia = 'BO'; Il seguente comando SELECT è identico al precedente -- Select Matricola, Cognome, Nome From Studenti Where Provincia = 'BO'; 7 Le operazioni relazionali nel linguaggio SQL Le operazioni fondamentali dell algebra relazionale sono realizzate in SQL con il comando Select, secondo le diverse forme consentite dalla sintassi del comando. Se si vuole rispettare una delle regole del modello relazionale, che non consente la presenza di righe uguali all interno della stessa tabella, basta porre accanto alla parola Select la clausola Distinct: con questa specificazione la tabella ottenuta non conterrà righe duplicate. La selezione, che estrae da una relazione solo le righe che soddisfano a una certa condizione, viene realizzata nel linguaggio SQL specificando la condizione di selezione nella clausola Where del comando Select. Esempio σ P Impiegati Selezione di Impiegati per Stipendio < SELECT * WHERE Stipendio < 31000; L elenco con tutti i dati dei dipendenti con stipendio minore di euro, si ottiene con una selezione sulla tabella Impiegati estraendo le righe per le quali: Stipendio < L operazione di proiezione, che permette di ottenere una relazione contenente solo alcuni attributi della relazione di partenza, si realizza scrivendo l elenco degli attributi richiesti dopo la parole Select IL LINGUAGGIO SQL

12 Esempio Π L Impiegati Proiezione di Impiegati su Cognome, Nome, ID SELECT Cognome, Nome, ID ; L elenco di tutti i dipendenti con cognome, nome e matricola, si ottiene con una proiezione di Impiegati sulle colonne richieste. La congiunzione di tabelle. Il comando Select può operare su più tabelle, specificandone i nomi, (separati da virgola) nella clausola From e scrivendo la condizione di congiunzione (cioè la condizione che fa corrispondere le righe di una tabella con quelle dell altra) nella clausola Where. Nella quasi totalità dei casi si vogliono costruire degli equi-join, per cui la condizione da scrivere nella clausola Where consiste nell uguaglianza tra attributi di due tabelle. Esempio Impiegati FK Dipartimenti PK Congiunzione di Impiegati su Dipartimento e Dipartimenti su Codice SELECT *, Dipartimenti WHERE Dipartimento = Codice; L elenco di tutti i dipendenti con i dati del dipartimento dove lavorano, si ottiene con la congiunzione delle tabelle Impiegati e Dipartimenti secondo gli attributi comuni Dipartimento e Codice. SELECT *, Dipartimenti WHERE Impiegati.Dipartimento = Dipartimenti.Codice; Condizione di uguaglianza tra attributi: esempio di equi-join. Sono combinate solo le righe che soddisfano alla condizione. Per maggiore chiarezza, o se ci sono attributi con il medesimo nome nelle due tabelle, si usa la dot notation, specificando oltre al nome dell attributo anche quello della tabella alla quale appartengono. Nella versione di SQL adottata da Access il join viene indicato, in accordo con la terminologia introdotta nel Capitolo 3, come inner join. Se la precedente interrogazione viene realizzata con Access in modalità QBE e, successivamente, si accede alla query in visualizzazione SQL, si legge (una volta ripulito dalle parentesi inutili) il seguente comando: SELECT Impiegati.*, Dipartimenti.* FROM Dipartimenti INNER JOIN Impiegati ON Dipartimenti.Codice = Impiegati.Dipartimento; INNER-JOIN definisce la congiunzione. La condizione di congiunzione è scritta nella stessa clausola FROM dopo ON. La sintassi adottata da Access è una delle sintassi ammesse fra gli standard di SQL2, mentre il modo di costruire le congiunzioni presentato all inizio del paragrafo è quello dello standard di base del linguaggio. Va precisato che Access (come tutti gli SQL che ammettono tale ultima sintassi) accetta ed esegue correttamente le interrogazioni costruite secondo lo standard di base. Naturalmente, quando il comando Select è costruito direttamente da Access partendo da una QBE, l interrogazione è realizzata secondo gli standard tipici dell implementazione. 5. IL LINGUAGGIO SQL 219

13 Impiegati JOIN Dipartimenti Nella congiunzione si può avere perdita di informazioni: mancano i dati del dipendente con ID=5 (manca il dipartimento di assegnazione) e del dipartimento di codice Pers (senza dipendenti ad esso assegnati). Come si è anticipato nel Capitolo 3, gli strumenti per recuperare le informazioni sulle righe che non hanno corrispondenti nella congiunzione sono i join esterni e, in particolare, il left join che è presentato a fine paragrafo. Interrogazioni in SQL Dopo aver visto come si rappresentano nel linguaggio SQL le operazioni fondamentali del modello relazionale, impariamo a costruire interrogazioni composte da una sequenza di operazioni relazionali. Esempio Per ottenere l elenco dei dipendenti che lavorano in un dipartimento con sede a Roma, con cognome, nome e descrizione del dipartimento, occorre dapprima operare una selezione su Dipartimenti per Sede = Roma ; poi si deve effettuare una congiunzione della tabella ottenuta con la tabella Impiegati e, infine, applicare una proiezione sugli attributi Cognome, Nome, Descrizione sulla nuova tabella risultante. 1. σ P Dipartimenti Temp1=Selezione di Dipartimenti per Sede = Roma 2. Temp1 PK Impiegati FK Temp2=Congiunzione di Temp1 su Codice e Impiegati su Dipartimento 3. Π L Temp2 Proiezione di Temp2 su Cognome, Nome, Descrizione SELECT Cognome, Nome, Descrizione, Dipartimenti WHERE Dipartimento=Codice AND Sede = 'Roma'; Dipartimento=Codice è la clausola di congiunzione Sede= Roma è la clausola di selezione. SELECT Impiegati.Cognome, Impiegati.Nome, Dipartimenti.Descrizione, Dipartimenti Per evitare ogni ambiguità WHERE Impiegati.Dipartimento = Dipartimenti.Codice AND si può precisare il nome Dipartimenti.Sede = 'Roma'; delle tabelle oltre a quello degli attributi. Per semplificare la scrittura del comando Select è possibile fare ricorso agli alias per il nome della tabella, specificando dopo il nome originale della tabella la parola AS seguita dal nuovo nome IL LINGUAGGIO SQL

14 Si potrebbe, per esempio, indicare la tabella Impiegati con I e la tabella Dipartimenti con D, limitando il numero di caratteri da digitare, scrivendo così comandi più compatti, più semplici da leggere ma ugualmente significativi. La precedente interrogazione, scritta nelle due diverse sintassi introdotte, è riportata di seguito. SELECT I.Cognome, I.Nome, D.Descrizione AS I, Dipartimenti AS D WHERE I.Dipartimento = D.Codice AND D.Sede = 'Roma'; AS è opzionale nella ridenominazione di tabelle. SELECT I.Cognome, I.Nome, D.Descrizione I INNER JOIN Dipartimenti D ON I.Dipartimento = D.Codice WHERE D.Sede = 'Roma'; Risulta evidente la maggior chiarezza dell ultima interrogazione rispetto alle precedenti: la sintassi adottata da Access ha il pregio di separare nettamente la condizione di congiunzione, che viene espressa nella parte From dell interrogazione, dalle condizioni di selezione, che sono espresse nella parte Where della query. Per sopperire alla minor chiarezza delle interrogazioni scritte nella versione base di SQL è opportuno scrivere la parte Where dell interrogazione su più righe, come nell esempio precedente, riportando prima le condizioni per la congiunzione delle tabelle e poi le condizioni che esprimono la selezione. Dagli esempi precedenti si può osservare come nel linguaggio SQL con poche parole di codice sia possibile estrarre da una base di dati tutte le informazioni che si desiderano. Le stesse operazioni, formulate attraverso le istruzioni di un linguaggio di programmazione tradizionale, richiederebbero un elevato numero di righe di codice, oltre che lunghi processi di ricerca sui file e di confronti tra i campi dei record. Il self-join si attua quando si congiunge una tabella con se stessa. Come si è osservato nel Capitolo 3, questa esigenza si presenta nel caso delle associazioni ricorsive, per esempio nel caso di una gerarchia aziendale o della distinta base che descrive oggetti composti da diverse parti. Esempio Mostriamo come si possa realizzare un self-join su una tabella. Si consideri l associazione esistente tra l entità Oggetto di attributi: ID, Descrizione e Qta, e le sue parti (che sono altri oggetti). La tabella che rappresenta gli oggetti e tale associazione ha lo schema sotto riportato assieme a un istanza della tabella Oggetti. Oggetti (ID, Descrizione, Qta, ComponenteDi) Importante: se si definisce una alias nella clausola From, non si può usare il nome originale della tabella. Il bottone (ID=4 ) è una componente della camicia (ID=1 ) e in una camicia ci sono 10 bottoni. L oggetto camicia è composto da: 1 colletto, 2 maniche, 10 bottoni, 1 taschino e altri oggetti. 5. IL LINGUAGGIO SQL 221

15 Se si vogliono ottenere le informazioni delle diverse parti che compongono un oggetto, per esempio la camicia, bisogna congiungere la tabella Oggetti con se stessa, cioè operare un selfjoin. Per esprimere la condizione che una riga di Oggetti deve essere abbinata a una riga, sempre di Oggetti, con il valore di ID uguale a quello di ComponenteDi nell altra, occorre usare gli alias per il nome della tabella. AS Parti AS Composto L interrogazione SQL che elenca le parti che compongono la camicia è mostrata in figura assieme alla tabella visualizzata al momento dell esecuzione della query. SELECT Parti.Descrizione AS Componente, Parti.Qta, Composto.Descrizione AS Prodotto FROM Oggetti AS Parti, Oggetti AS Composto WHERE Parti.ComponenteDi = Composto.ID AND Composto.Descrizione = 'Camicia'; La ridenominazione di Oggetti precisa il differente ruolo giocato dalla tabella Oggetti nell associazione ricorsiva. I join esterni: oltre ai join interni il linguaggio SQL permette di costruire dei join che includono nella congiunzione anche quelle righe di una delle due tabelle che non hanno corrispondenti nell altra. Si tratta dei join esterni e, come si è già detto, corrispondono alle operazioni di left join, right join, full join dell algebra relazionale. Tra i join esterni consideriamo il left join e mostriamo la sua utilità nella soluzione di un tipico problema di assenza: elencare i dipartimenti che non hanno dipendenti loro assegnati. Per farlo congiungiamo la tabella Dipartimenti e la tabella Impiegati con un left join. Il left join include comunque tutte le righe della tabella a sinistra (Dipartimenti) anche in mancanza di record associati. La riga del dipartimento Personale è stata completata con valori nulli nei campi Nome e Cognome perché non ci sono dipendenti ad esso assegnati. SELECT Descrizione, Nome, Cognome FROM Dipartimenti D LEFT JOIN Impiegati I ON D.Codice = I.Dipartimento; SELECT Descrizione FROM Dipartimenti D LEFT JOIN Impiegati I ON D.Codice = I.Dipartimento WHERE Cognome IS NULL; I dipartimenti senza impiegati si riconoscono per la presenza di valori nulli nei campi che provengono da Impiegati. Per il controllo si usa il predicato IS NULL. TEST 5.1 pag. 247 ESERCIZI da 3 a 12 pag e da 42 a 49 pag. 251 CONTENUTI DIGITALI INTEGRATIVI 1. Tipi di join esterni e operazioni insiemistiche IL LINGUAGGIO SQL

16 8 Le funzioni di aggregazione Nel comando Select si possono usare funzioni predefinite che agiscono sui valori contenuti in insiemi di righe di una tabella e che, per questo motivo, si chiamano funzioni di aggregazione. Le funzioni di aggregazione agiscono sui valori di una colonna e restituiscono un solo valore come, per esempio, il massimo o il minimo dei valori considerati. Le righe considerate per l aggregazione sono quelle prodotte dall interrogazione e quindi, in presenza di una clausola Where, sono le sole righe che soddisfano la condizione specificata. Le funzioni di aggregazione possono comparire solo nelle clausole Select ed Having (che sarà spiegata nel riquadro alla fine del prossimo paragrafo). La presenza di una funzione di aggregazione nella clausola Select provoca un intestazione che dipende dall implementazione di SQL. Nel caso di Access l intestazione è del tipo EXPR1000, EXPR1001, ecc. Funzione COUNT La funzione COUNT conta il numero di occorrenze selezionate dall interrogazione. La sintassi del linguaggio SQL richiede di specificare come argomento della funzione il nome di un attributo oppure il carattere * (asterisco). Nel primo caso sono conteggiati i valori non nulli nella colonna considerata; nel secondo caso, la funzione Count(*) calcola il numero di righe nella tabella. SELECT COUNT (*) ; Conta le righe della tabella Impiegati: Restituisce 12. SELECT COUNT (Dipartimento) ; Conta il numero dei dipendenti di Impiegati che sono assegnati a un dipartimento. Restituisce 11 perché non sono considerati i valori nulli. SELECT COUNT(*) WHERE Residenza = 'Roma'; Conta il numero dei dipendenti residenti a Roma. Restituisce 2. SELECT COUNT(*), COUNT(*) AS ResidentiRoma WHERE Residenza = 'Roma'; Con le funzioni di aggregazione è opportuno rinominare le colonne per evitare la presenza di intestazioni poco significative. Funzione SUM La funzione SUM restituisce la somma dei valori contenuti in una colonna, specificata come argomento della funzione: naturalmente l attributo utilizzato nel calcolo deve essere di tipo numerico; i valori nulli sono trascurati dalla funzione Sum. SELECT SUM (Stipendio) WHERE Dipartimento = 'Amm'; La somma degli stipendi dei dipendenti del dipartimento Amministrazione. Restituisce IL LINGUAGGIO SQL 223

17 SELECT SUM (Stipendio) AS StipendiAmm, SUM (Stipendio*1.03) AS NuoviStipendiAmm WHERE Dipartimento = 'Amm'; L ammontare degli stipendi del reparto Amministrazione e il nuovo totale dopo un loro incremento del 3%. L argomento di Sum può essere un espressione. Funzione AVG La funzione AVG (dall inglese average = media), calcola la media dei valori (numerici) contenuti in una colonna di una tabella. L argomento della funzione può essere un espressione aritmetica anziché il nome di un attributo. La media calcolata dalla funzione Avg è la media aritmetica, cioè la somma dei valori diviso il numero dei valori. La funzione Avg non include nel calcolo i valori Null presenti nella colonna. SELECT AVG(Stipendio), Dipartimenti WHERE Dipartimento = Codice AND Sede = 'Torino'; Calcola lo stipendio medio dei dipendenti che lavorano a Torino. Restituisce 46916,67. Funzioni MIN e MAX Le funzioni MIN e MAX restituiscono rispettivamente il valore minimo e il valore massimo tra quelli assunti dalla colonna specificata come argomento della funzione; le funzioni Min e Max consentono di determinare i valori minimi e massimi anche per campi di tipo carattere. Anche le funzioni Min e Max ignorano i campi con valore Null e possono avere come argomento un espressione anziché il nome di un attributo. SELECT MIN(Stipendio), MAX(Stipendio) ; Calcola lo stipendio minimo e massimo dei dipendenti. Restituisce e SELECT MIN(Cognome), MAX(Cognome) ; Primo e ultimo cognome (secondo l ordine alfabetico) dei dipendenti. Restituisce Bianco e Volpi. 9 Ordinamenti e raggruppamenti Nel comando Select si può inserire la clausola ORDER BY per ottenere i risultati di un interrogazione ordinati secondo i valori contenuti in una o più colonne, che vengono specificate di seguito alla clausola Order By. L indicazione delle colonne da considerare nell ordinamento avviene precisando il nome della colonna oppure la posizione che essa occupa nella lista che segue la parola Select: 1 per la prima posizione, 2 per la seconda, e così via. L ordinamento può essere crescente (le stringhe dalla A alla Z e i numeri dal minore al maggiore) oppure decrescente (le stringhe dalla Z alla A e i numeri dal maggiore al minore): i due tipi di ordinamento sono precisati usando le parole chiave ASC per crescente e DESC per decrescente. L ordinamento è crescente per default e quindi va specificata la parola Desc solo se si desidera l ordinamento decrescente IL LINGUAGGIO SQL

18 Negli ordinamenti il valore Null compare, di norma, all inizio delle sequenze crescenti e alla fine delle sequenze decrescenti. La clausola Order By, se presente, deve essere l ultimo elemento di un comando Select. Esempio SELECT Cognome, Nome, Residenza ORDER BY Cognome, Nome; Elenco alfabetico dei dipendenti per Cognome e, a parità di cognome, per Nome. SELECT Cognome, Stipendio ORDER BY Stipendio DESC, Cognome; Elenco dei dipendenti in ordine decrescente di stipendio e, a parità di stipendio, in ordine (crescente) di cognome. Si consideri una tabella di fatture che contiene, per ogni fattura, la descrizione del prodotto, il suo prezzo unitario e la quantità ordinata SELECT NomeProdotto, PrezUnit, Qta, PrezUnit*Qta FROM Fatture ORDER BY 4 DESC; Elenco ordinato per valori decrescenti dell espressione: PrezUnit*Qta (campo 4 della clausola Select). Forma sconsigliata perché non simbolica. SELECT NomeProdotto, PrezUnit, Qta, PrezUnit*Qta AS Totale FROM Fatture ORDER BY Totale DESC; Forma raccomandata perché simbolica. Non supportata da Access. SELECT NomeProdotto, PrezUnit, Qta, PrezUnit*Qta AS Totale FROM Fatture ORDER BY PrezUnit*Qta DESC; Forma raccomandata con Access. Con le funzioni di aggregazione si condensano le informazioni di una tabella in un solo valore come, per esempio, la somma degli stipendi di tutti i dipendenti. Spesso è però utile sintetizzare i valori per classi omogenee, secondo opportuni criteri di raggruppamento, per esempio per produrre la somme parziali degli stipendi nei diversi dipartimenti. La clausola GROUP BY ha questo scopo, in quanto permette di raggruppare un insieme di righe aventi lo stesso valore nelle colonne indicate dalla clausola. L opzione produce una riga di risultati per ogni raggruppamento. Se nel comando viene inserita una funzione di aggregazione, come Sum o Count, per ciascuna riga della tabella risultante viene prodotto un valore di raggruppamento. I valori Null sono raggruppati, ma non vengono valutati da nessuna delle funzioni di aggregazione ad eccezione di Count(*). Importante: con i raggruppamenti nella clausola Select possono comparire solo i campi presenti in Group By e funzioni di aggregazione. SELECT Dipartimento, COUNT(ID) AS Dipendenti, SUM(Stipendio) AS Stipendi GROUP BY Dipartimento; Elenco dei dipartimenti con la somma degli stupendi e il numero di addetti per dipartimento. 5. IL LINGUAGGIO SQL 225

19 L interrogazione è eseguita secondo i due passi indicati in figura. 1 Le righe sono raggruppate per dipartimento. 2 Le funzioni di aggregazione sono applicate separatamente ai singoli raggruppamenti. Se nell elenco si desidera che compaia, invece del codice, il nome per esteso del dipartimento, bisogna effettuare il raggruppamento sul campo Descrizione della tabella Dipartimenti. SELECT Descrizione, COUNT(*) AS Dipendenti, SUM(Stipendio) AS Stipendi, Dipartimenti WHERE Impiegati.Dipartimento = Dipartimenti.Codice GROUP BY Descrizione; Nell elenco sono esclusi i dipendenti che non sono inquadrati in alcun dipartimento (come il dipendente con ID =5 dell esempio) che scompaiono nella congiunzione. Condizioni sui raggruppamenti La struttura del comando Select con raggruppamenti può essere ulteriormente ampliata con la clausola HAVING con la quale è possibile sottoporre al controllo di una o più condizioni i gruppi creati con la clausola Group by. La condizione scritta dopo Having in genere controlla il valore restituito dalle funzioni di aggregazione (Count, Sum, Avg, Min, Max). Si noti che la clausola Having deve essere usata insieme a Group By: dopo che Group By ha formato i raggruppamenti di righe, Having serve a visualizzare i soli raggruppamenti che soddisfano alle condizioni scritte accanto a Having. SELECT Dipartimento, COUNT(ID) AS Dipendenti, SUM(Stipendio) AS Stipendi GROUP BY Dipartimento Numero degli addetti e la somma degli stipendi HAVING COUNT(ID) > 2; per i dipartimenti con più di 2 dipendenti. Se l istruzione Select contiene la clausola Where, i valori vengono raggruppati dopo aver operato la selezione sulle righe che rispettano le condizioni scritte accanto a Where. SELECT Descrizione, COUNT(ID) AS Dipendenti, SUM(Stipendio) AS Stipendi FROM Dipartimento D INNER JOIN Impiegati I ON D.Codice = I.Dipartimento WHERE Sede = 'Torino' GROUP BY Descrizione HAVING COUNT(ID) > 1; HAVING: condizioni sui raggruppamenti. WHERE: condizioni sulle righe delle tabelle. Numero degli addetti e somma degli stipendi per i dipartimenti di Torino con più di 1 addetto IL LINGUAGGIO SQL

20 Per realizzare l ultima interrogazione con Access in modalità QBE bisogna trovare il modo di esprimere nella griglia posta nella parte inferiore della QBE sia le condizioni sui raggruppamenti (in Having) sia le condizioni sulle righe (clausola Where). Operando come descritto nel Capitolo 4, si fa clic sul pulsante Totali per attivare la riga Formula nella griglia QBE e si definiscono nei diversi campi raggruppamenti, conteggi, somme in base alle richieste del problema. 2 Il segno di spunta nella casella Mostra è deselezionato automaticamente. Le condizioni scritte nella riga Criteri della QBE sono interpretate come condizioni sui raggruppamenti: clausola Having. Le condizioni scritte nella riga Criteri della QBE sono interpretate come condizioni sulle righe: clausola Where. 3 1 Selezionare Dove nel menu a discesa della riga Formula. Sintetizziamo in un unico quadro le diverse clausole che possono apparire nel comando Select: SELECT FROM WHERE GROUP BY HAVING ORDER BY Elenco espressioni da mostrare Tabelle da cui estrarre le righe Condizioni sulle righe estratte Campi da considerare per i raggruppamenti Condizioni sui raggruppamenti Ordinamenti sulle espressioni elencate nella clausola SELECT È opportuno fare le seguenti precisazioni: Si possono scrivere comandi del tipo: Select Now(); oppure Select 3*4; nei quali compare la sola clausola Select. Per estrarre dati da una tabella le uniche clausole che devono comparire obbligatoriamente sono Select e From mentre le altre sono facoltative. Le clausole utilizzate devono essere elencate rispettando l ordine del precedente elenco: Select deve precedere From,..., Having deve precedere Order by. Le interrogazioni che si possono costruire con le operazioni relazionali si esprimono con le sole clausole Select, From e Where. Il DBMS esegue il comando elaborando le clausole nel seguente ordine: From Where Group by Having Select Order by CONTENUTI DIGITALI INTEGRATIVI 2. Query di comando e query di servizio in Access 5. IL LINGUAGGIO SQL 227

Structured Query Language

Structured Query Language 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

Dettagli

Caratteristiche dei linguaggi per Database

Caratteristiche dei linguaggi per Database IL LINGUAGGIO Caratteristiche dei linguaggi per Database I linguaggi per basi di dati relazionali possiedono i comandi per: definizione del data base; manipolazione dei dati; associazione tra tabelle diverse;

Dettagli

QL (Query Language) Alice Pavarani

QL (Query Language) Alice Pavarani QL (Query Language) Alice Pavarani QL Query Language Linguaggio di interrogazione dei dati, permette di: Interrogare la base di dati per estrarre informazioni Elaborare i dati Il risultato di un interrogazione

Dettagli

Linguaggio SQL seconda parte

Linguaggio SQL seconda parte Linguaggio SQL seconda parte A. Lorenzi, E. Cavalli INFORMATICA PER SISTEMI INFORMATIVI AZIENDALI Copyright Istituto Italiano Edizioni Atlas Le condizioni di ricerca 2 Le condizioni di ricerca Usate nelle

Dettagli

Corso di Informatica Linguaggio SQL prima parte

Corso di Informatica Linguaggio SQL prima parte Corso di Informatica Linguaggio SQL prima parte Anno Accademico 2018-2019 Linguaggio SQL (Structured Query Language) 2 Il linguaggio SQL Un linguaggio per DBMS (DataBase Management System) deve permettere

Dettagli

SQL: le funzioni di aggregazione

SQL: le funzioni di aggregazione SQL: le funzioni di aggregazione funzioni predefinite che agiscono sui valori contenuti in insiemi di righe della tabella: Conteggi Somme Medie Massimi, minimi Funzione Count La funzione COUNT conta il

Dettagli

Select From Where...

Select From Where... Select From Where... SELECT Le colonne che saranno mostrate e in che ordine. Calcoli su colonne FROM La tabella o le tabelle usate dall interrogazione WHERE Condizione che deve essere soddisfatta dalle

Dettagli

SISTEMI INFORMATIVI E TELEMEDICINA INFORMATICA MEDICA. 3. Panoramica su SQL Prof. Mauro Giacomini

SISTEMI INFORMATIVI E TELEMEDICINA INFORMATICA MEDICA. 3. Panoramica su SQL Prof. Mauro Giacomini SISTEMI INFORMATIVI E TELEMEDICINA INFORMATICA MEDICA 3. Panoramica su SQL Prof. Mauro Giacomini Sommario Introduzione Istruzione SELECT Tipi di Join Subquery Comandi DML Creazione delle tabelle Introduzione

Dettagli

Structured. Language. Basi di Dati. Introduzione. DDL: Data Definition Language. Tipi di dato. Query. Modifica dei Dati

Structured. Language. Basi di Dati. Introduzione. DDL: Data Definition Language. Tipi di dato. Query. Modifica dei Dati Basi di Dati Matteo Longhi Structured Query Language Introduzione Standard creato nel 1976 da IBM Aggiornato (versione 2 nel 1992 (ANSI X3.135 e ISO 9075 Consente di: DDL: definire la struttura del DB

Dettagli

SQL quick reference. piccolo manuale di riferimento dei principali comandi SQL (prof. Claudio Maccherani, Perugia, 2013)

SQL quick reference. piccolo manuale di riferimento dei principali comandi SQL (prof. Claudio Maccherani, Perugia, 2013) SQL quick reference piccolo manuale di riferimento dei principali comandi SQL (prof. Claudio Maccherani, Perugia, 2013) I tipi dei dati di SQL sono: delimitatori delle costanti: TEXT(n) stringa di caratteri

Dettagli

Manuale SQL. Manuale SQL - 1 -

Manuale SQL. Manuale SQL - 1 - Manuale SQL - 1 - Istruzioni DDL Creazione di una tabella : CREATE TABLE Il comando CREATE TABLE consente di definire una tabella del database specificandone le colonne, con il tipo di dati ad esse associate,

Dettagli

IL LINGUAGGIO SQL LE BASI

IL LINGUAGGIO SQL LE BASI IL LINGUAGGIO SQL LE BASI DB DI RIFERIMENTO PER GLI ESEMPI 2 ESPRESSIONI NELLA CLAUSOLA SELECT La SELECT list può contenere non solo attributi, ma anche espressioni: Le espressioni possono comprendere

Dettagli

Le query di comando e di servizio in Access

Le query di comando e di servizio in Access Le query di comando e di servizio in Access In questa parte sono presentate alcune query di Access che permettono di: creare nuove tabelle, aggiungere o eliminare righe in una tabella, modificare il contenuto

Dettagli

Queries su più tabelle

Queries su più tabelle Informatica Generale (AA 07/08) Corso di laurea in Scienze della Comunicazione Facoltà di Lettere e Filosofia Università degli Studi di Salerno : SQL (2) Tabelle mult., variabili, aggreg, group Prof. Alberto

Dettagli

Manuale Comandi SQL SQL. Sito per esercitarsi (on line) SQL

Manuale Comandi SQL SQL. Sito per esercitarsi (on line) SQL Manuale Comandi SQL Sito per esercitarsi (on line)... 1 SQL... 1 Convenzioni e simboli usati... 2 Query Language... 2 Comando Select... 2 Order By:... 3 Sintassi generale:... 3 Ordinamanto su PIU campi...

Dettagli

<Nome Tabella>.<attributo>

<Nome Tabella>.<attributo> Informatica Generale (AA 07/08) Corso di laurea in Scienze della Comunicazione Facoltà di Lettere e Filosofia Università degli Studi di Salerno : SQL (2) Tabelle mult., variabili, aggreg, group Prof. Alberto

Dettagli

Corso di. Basi di Dati I. 9. Esercitazioni in SQL: Check, asserzioni, viste

Corso di. Basi di Dati I. 9. Esercitazioni in SQL: Check, asserzioni, viste Corso di Basi di Dati 9. Esercitazioni in SQL: Check, asserzioni, viste A.A. 2016 2017 Check Come abbiamo visto, SQL permette di specificare vincoli sugli attributi e le tabelle attraverso il comando check

Dettagli

Interrogare una base di dati: algebra relazionale e SQL. Savino Castagnozzi Giorgio Macauda Michele Meomartino Salvatore Picerno Massimiliano Sartor

Interrogare una base di dati: algebra relazionale e SQL. Savino Castagnozzi Giorgio Macauda Michele Meomartino Salvatore Picerno Massimiliano Sartor Interrogare una base di dati: algebra relazionale e SQL Savino Castagnozzi Giorgio Macauda Michele Meomartino Salvatore Picerno Massimiliano Sartor Contesto didattico Il seguente materiale didattico è

Dettagli

MODULO 2. Query normali e parametriche Query di:

MODULO 2. Query normali e parametriche Query di: MODULO 2 TITOLO DBMS e SQL In questo Modulo si affronta lo studio dei DBMS Access e MySQL. In particolare per Access, si descrive come progettare, impostare e modificare gli strumenti di lavoro (tabelle,

Dettagli

V. Moriggia Modelli di Base Dati. Modelli di Base Dati. a.a. 2001/

V. Moriggia Modelli di Base Dati. Modelli di Base Dati. a.a. 2001/ Modelli di Base Dati 8 L aggregazione e il raggruppamento in SQL a.a. 2001/2002 8.1 SQL: le funzioni di aggregazione 8.2 funzioni predefinite che agiscono sui valori contenuti in insiemi di righe della

Dettagli

PRODOTTO CARTESIANO Caso Generale

PRODOTTO CARTESIANO Caso Generale PRODOTTO CARTESIANO Caso Generale Vincoli di integrità dei dati Un database non deve solamente memorizzare i dati, ma garantire che i dati memorizzati siano corretti; se i dati sono imprecisi o incoerenti,

Dettagli

Archivi e basi di dati - ing. M. Cossentino. Settore. Traccia 1. Traccia 200. Settore non polarizzato

Archivi e basi di dati - ing. M. Cossentino. Settore. Traccia 1. Traccia 200. Settore non polarizzato Settore Traccia 1 Traccia 200 Settore non polarizzato '! " # $ % & ( ) * + + ' ' ' !"#"$%, & &'(("% '&)'' ''"* - -. / / / 0/!- "-, (0 #- / / / 0/ --- + 1 ' # $ + 2 13 ,, - 4 '. & 56 2 '/!!! "7&% 8, 9 /'"'0'1'&'

Dettagli

Linguaggio SQL. Prof. Giuseppe Tandoi

Linguaggio SQL. Prof. Giuseppe Tandoi Caratteristiche generali SQL è uno strumento per organizzare gestire recuperare dati memorizzati in DataBase organizzati su base Relazionale. Caratteristiche generali SQL è l'acronimo di Structured Query

Dettagli

SQL. SQL: "storia. Sviluppato nella metà degli anni settanta (1974) presso il laboratorio di ricerca IBM di S.Josè. Dal 1983 ca. "standard di fatto"

SQL. SQL: storia. Sviluppato nella metà degli anni settanta (1974) presso il laboratorio di ricerca IBM di S.Josè. Dal 1983 ca. standard di fatto SQL SQL: "storia Sviluppato nella metà degli anni settanta (194) presso il laboratorio di ricerca IBM di S.Josè Dal 1983 ca. "standard di fatto" E il linguaggio di riferimento per l interrogazione di DBMS

Dettagli

SQL DDL. Create database. Alter database. Drop database

SQL DDL. Create database. Alter database. Drop database SQL In informatica, SQL (Structured Query Language) è un linguaggio standardizzato per database basati sul modello relazionale (RDBMS), progettato per le seguenti operazioni: creare e modificare schemi

Dettagli

Sistemi di Elaborazione delle Informazioni

Sistemi di Elaborazione delle Informazioni SCUOLA DI MEDICINA E CHIRURGIA Università degli Studi di Napoli Federico II Corso di Sistemi di Elaborazione delle Informazioni Dott. Francesco Rossi a.a. 2017/2018 1 Sesta parte Interrogazione di una

Dettagli

Il linguaggio SQL: DDL di base

Il linguaggio SQL: DDL di base Il linguaggio SQL: DDL di base Sistemi Informativi T Versione elettronica: 04.1.SQL.DDLbase.pdf SQL: caratteristiche generali SQL (Structured Query Language) è il linguaggio standard de facto per DBMS

Dettagli

SQL SQL. Definizione dei dati. Domini. Esistono 6 domini elementari:

SQL SQL. Definizione dei dati. Domini. Esistono 6 domini elementari: SQL SQL (pronunciato anche come l inglese sequel): acronimo di Structured Query Language (linguaggio di interrogazione strutturato) Linguaggio completo che presenta anche proprietà di: DDL (Data Definition

Dettagli

ESERCITAZIONI ACCESS

ESERCITAZIONI ACCESS ESERCITAZIONI ACCESS MS Access 2000 Struttura di riferimento: Studente (Matricola, Cognome, Nome) Esame (Matricola, Materia, Voto, Data) CREARE LE TABELLE IN SQL: Create table STUDENTE ( matricola char(6)

Dettagli

Basi di Dati: Corso di laboratorio

Basi di Dati: Corso di laboratorio Basi di Dati: Corso di laboratorio Lezione 4 Raffaella Gentilini 1 / 46 Sommario 1 Join di Tabelle Join Naturale Theta Join Join Esterno 2 3 Funzioni d aggregazione La Clausola GROUP BY La Clausola HAVING

Dettagli

INFORMATICA GENERALE Prof. Alberto Postiglione Dipartimento Scienze della Comunicazione Università degli Studi di Salerno

INFORMATICA GENERALE Prof. Alberto Postiglione Dipartimento Scienze della Comunicazione Università degli Studi di Salerno : SQL (3) Tabelle multiple, variabili, operatori di aggregazione QUERIES SU PIU TABELLE Queries su più tabelle 17 mar 010 Dia 3 17 mar 010 Dia 4 Per formulare un interrogazione su più tabelle, la clausola

Dettagli

Domande utili alla preparazione dell orale di Informatica all Esame di Stato

Domande utili alla preparazione dell orale di Informatica all Esame di Stato Domande utili alla preparazione dell orale di Informatica all Esame di Stato 1.Al livello fisico un database si appoggia ai files per contenere i suoi dati? 2.Esistono altri modelli di organizzazione oltre

Dettagli

SQL - Structured Query Language

SQL - Structured Query Language SQL - Structured Query Language Lab 05 Alessandro Lori Università di Pisa 27 Aprile 2012 Riepilogo esercitazione precedente Operatori insiemistici (UNION, INTERSECT, EXCEPT) Riepilogo esercitazione precedente

Dettagli

Basi di Dati: Corso di laboratorio

Basi di Dati: Corso di laboratorio Basi di Dati: Corso di laboratorio Lezione 3 Raffaella Gentilini 1 / 52 Sommario 1 Il DML di SQL: Interrogazione di una BD 2 / 52 Data Manipulation Language (DML) Istruzioni del DML Le istruzioni del DML

Dettagli

V. Moriggia Modelli di Base Dati. Modelli di Base Dati. a.a. 2001/2002 4.1

V. Moriggia Modelli di Base Dati. Modelli di Base Dati. a.a. 2001/2002 4.1 Modelli di Base Dati 4 Un DBMS: Access a.a. 2001/2002 4.1 DBMS 4.2 DBMS = Data Base Management System Software per la costruzione e la gestione di una base dati Esempi di DBMS: Oracle, MySQL, SQLServer,

Dettagli

Il linguaggio SQL: raggruppamenti

Il linguaggio SQL: raggruppamenti Il linguaggio SQL: raggruppamenti Sistemi Informativi T Versione elettronica: 04.3.SQL.gruppi.pdf Informazioni di sintesi Quanto sinora visto permette di estrarre dal DB informazioni che si riferiscono

Dettagli

CORSO ACCESS PARTE IV

CORSO ACCESS PARTE IV Creazione di un database / gestione tabelle Per creare un nuovo database Menu File Selezionare Nuovo Scegliere Database vuoto nella scheda Generale e confermare con Ok Impostare il nome e il percorso nella

Dettagli

Database parte 2. Database azienda

Database parte 2. Database azienda Database parte 2 Esercizio azienda SQL Ing. Lucia Vaira lucia.vaira@unisalento.it Database azienda L azienda è organizzata in dipartimenti Ciascun dipartimento ha un codice, un nome e un impiegato che

Dettagli

MODULO 5 - USO DELLE BASI DI DATI 2 FINALITÁ

MODULO 5 - USO DELLE BASI DI DATI 2 FINALITÁ PATENTE EUROPEA DEL COMPUTER 5.0 MODULO 5 Database (Microsoft Access 2007) Parte 3 A cura di Mimmo Corrado Gennaio 2012 MODULO 5 - USO DELLE BASI DI DATI 2 FINALITÁ Il Modulo 5, richiede che il candidato

Dettagli

Il linguaggio SQL. è di fatto lo standard tra i linguaggi per la gestione di data base relazionali.

Il linguaggio SQL. è di fatto lo standard tra i linguaggi per la gestione di data base relazionali. (Structured Query Language) : Il linguaggio è di fatto lo standard tra i linguaggi per la gestione di data base relazionali. prima versione IBM alla fine degli anni '70 per un prototipo di ricerca (System

Dettagli

Laboratorio di Basi di Dati

Laboratorio di Basi di Dati Laboratorio di Basi di Dati Docente: Alberto Belussi Lezione 2 Vincoli di integrità Proprietà che devono essere soddisfatte da ogni istanza della base di dati. Il soddisfacimento è definito rispetto al

Dettagli

Informatica documentale Laurea in Scienze della Comunicazione Prova scritta del 25 giugno Cognome e nome: Matricola:

Informatica documentale Laurea in Scienze della Comunicazione Prova scritta del 25 giugno Cognome e nome: Matricola: Informatica documentale Laurea in Scienze della Comunicazione Prova scritta del 25 giugno 2012 Cognome e nome: Matricola: Parte prima Domanda 1 Domanda 2 Domanda 3 Totale Istruzioni: È vietato portare

Dettagli

Prof. Alberto Postiglione Dipartimento di Scienze della Comunicazione Università degli Studi di Salerno

Prof. Alberto Postiglione Dipartimento di Scienze della Comunicazione Università degli Studi di Salerno Informatica Generale (AA 07/08) Corso di laurea in Scienze della Comunicazione Facoltà di Lettere e Filosofia Università degli Studi di Salerno : SQL (1) Interrogazioni semplici Prof. Alberto Postiglione

Dettagli

DISPENSA ACCESS (OFFICE 2010 BETA)

DISPENSA ACCESS (OFFICE 2010 BETA) DISPENSA ACCESS (OFFICE 2010 BETA) 2. LE RELAZIONI. Una relazione può essere definita come un legame tra due tabelle basato sul valore di uno o più campi di ciascuna delle due tabelle. Di solito i campi

Dettagli

Basi di Dati: Corso di laboratorio

Basi di Dati: Corso di laboratorio Basi di Dati: Corso di laboratorio Lezione 4 Raffaella Gentilini 1 / 48 Sommario 1 Join di Tabelle Join Naturale Theta Join Join Esterno 2 La Clausola HAVING 3 2 / 48 Join Naturale Theta Join Join Esterno

Dettagli

Corso di Basi di Dati

Corso di Basi di Dati Corso di Basi di Dati Il Linguaggio SQL Home page del corso: http://www.cs.unibo.it/~difelice/dbsi/ Il Linguaggio SQL SQL (Structured Query Language) è il linguaggio di riferimento per le basi di dati

Dettagli

Filtri. Microsoft Access. Filtri. Filtri

Filtri. Microsoft Access. Filtri. Filtri Filtri Microsoft Access Filtri, query Un filtro è una funzione che provoca la visualizzazione dei soli record contenenti dati che rispondono a un certo requisito Per applicare un filtro a una tabella è

Dettagli

Principi di Progettazione del Software a.a Il linguaggio SQL. Il Linguaggio SQL

Principi di Progettazione del Software a.a Il linguaggio SQL. Il Linguaggio SQL Principi di Progettazione del Software a.a. 2017-2018 Ing. Università del Salento Il Linguaggio SQL Due componenti principali: Ø DDL (Data Definition Language) Contiene i costrutti necessari per la creazione/modifica

Dettagli

Microsoft Access (parte 5) Query. Query. Query. Query. Creare una query

Microsoft Access (parte 5) Query. Query. Query. Query. Creare una query Microsoft Access (parte 5) Anno accademico: 2008-2009 Per estrarre informazioni da un database si utilizzano delle query : procedure di interrogazione Si può creare più query per ogni tabella Occorre avere

Dettagli

Gestione delle informazioni. Tot. h 10. Base di Dati. Tot. h 56. Grafica in C# - Laboratorio- Tot. h 40. Dipartimento Informatica Materia Informatica

Gestione delle informazioni. Tot. h 10. Base di Dati. Tot. h 56. Grafica in C# - Laboratorio- Tot. h 40. Dipartimento Informatica Materia Informatica Dipartimento Informatica Materia Informatica Classe 5 Tec Ore/anno 198 A.S. 2018-2019 MODULI COMPETENZE UNITA di APPRENDIMENTO Gestione delle informazioni Tot. h 10 Base di Dati Tot. h 56 Grafica in C#

Dettagli

Operatori aggregati. Operatori aggregati. Interrogazioni con raggruppamento. Interrogazioni con raggruppamento

Operatori aggregati. Operatori aggregati. Interrogazioni con raggruppamento. Interrogazioni con raggruppamento Operatori aggregati In algebra relazionale le espressioni vengono valutate sulle singole tuple in successione. Talvolta però possono essere necessarie informazioni derivabili dall esame di tutte le tuple

Dettagli

Query. Query (Interrogazioni) SQL SQL. Significato dell interrogazione. Sintassi

Query. Query (Interrogazioni) SQL SQL. Significato dell interrogazione. Sintassi Informatica della Facoltà di Lingue e Letterature dell Università degli Studi di Torino. Qualsiasi altro Query (Interrogazioni) SQL Materiale aggiuntivo per il corso di laurea in Lingue e Culture per il

Dettagli

Sistemi di Elaborazione delle Informazioni

Sistemi di Elaborazione delle Informazioni SCUOLA DI MEDICINA E CHIRURGIA Università degli Studi di Napoli Federico II Corso di Sistemi di Elaborazione delle Informazioni Dott. Francesco Rossi a.a. 2017/2018 1 Settima parte Interrogazione di una

Dettagli

Corso di Access. Prerequisiti. Modulo L2 A (Access) Le query

Corso di Access. Prerequisiti. Modulo L2 A (Access) Le query Corso di Access Modulo L2 A (Access) 2.3.1 Le query 1 Prerequisiti Concetto di database relazionale Utilizzo elementare del computer Concetti fondamentali di basi di dati Interrogazione di un DB 2 1 Introduzione

Dettagli

Universita di Milano Bicocca Corso di Basi di dati 1 in elearning C. Batini 6. SQL DDL 6.2 Data Description Language - 2

Universita di Milano Bicocca Corso di Basi di dati 1 in elearning C. Batini 6. SQL DDL 6.2 Data Description Language - 2 Universita di Milano Bicocca Corso di Basi di dati 1 in elearning C. Batini 6. SQL DDL 6.2 Data Description Language - 2 Vincoli di integrita 2 Cosa e un vincolo di integrita E una proprieta sempre valida

Dettagli

Microsoft Access. Relazioni e query SQL. Domenico Fabio Savo

Microsoft Access. Relazioni e query SQL. Domenico Fabio Savo Microsoft Access Relazioni e query SQL Domenico Fabio Savo Outline Base di dati di esempio Le relazioni Le query Outline Base di dati di esempio Le relazioni Le query Contratti telefonici (requisiti) Si

Dettagli

Appunti su SQL. Query Language. Comando Select

Appunti su SQL. Query Language. Comando Select Appunti su SQL Query Language... 1 Comando Select... 1 Select con campi ordinati: order By... 3 Sintassi generale:... 3 Ordinamanto su PIU campi... 3 DML (Data Manipulation Language per inserimento e modifica

Dettagli

Laboratorio di Basi di Dati

Laboratorio di Basi di Dati Laboratorio di Basi di Dati Esercitazione PostgreSQL Dopo aver lanciato il client grafico pgadmin III di PostgreSQL svolgere le operazioni descritte nel seguito, tenendo presenti i suggerimenti forniti

Dettagli

Informatica Grafica. Basi di dati parte 2

Informatica Grafica. Basi di dati parte 2 Informatica Grafica Corso di Laurea in Ingegneria Edile Architettura Basi di dati parte 2 Michele Lombardi su materiale originario di Paolo Torroni Dipartimento di Elettronica, Informatica e Sistemistica

Dettagli

PROGETTAZIONE DI DATABASE Linguaggio SQL

PROGETTAZIONE DI DATABASE Linguaggio SQL PROGETTAZIONE DI DATABASE Linguaggio SQL Modello Concettuale (Modellazione del mondo reale) Modello Logico (Definizione del tipo e del formato dei dati) Modello Fisico (Implementazione fisica su supporti

Dettagli

SQL. Università degli Studi di Salerno. Corso di Laurea in Scienze della Comunicazione Informatica generale (matr. Dispari) Docente: Angela Peduto

SQL. Università degli Studi di Salerno. Corso di Laurea in Scienze della Comunicazione Informatica generale (matr. Dispari) Docente: Angela Peduto SQL Università degli Studi di Salerno Corso di Laurea in Scienze della Comunicazione Informatica generale (matr. Dispari) Docente: Angela Peduto A.A. 2005/2006 Select La forma di select cui siamo arrivati

Dettagli

SQL. SQL come Data Manipulation Language - Inserimento, cancellazione e aggiornamento di righe

SQL. SQL come Data Manipulation Language - Inserimento, cancellazione e aggiornamento di righe SQL SQL come Data Manipulation Language - Inserimento, cancellazione e aggiornamento di righe Operazioni di aggiornamento Abbiamo visto come creare tabelle e come interrogarle. Vedremo ora come popolarle

Dettagli

Viste come strumenti di programmazione

Viste come strumenti di programmazione Viste come strumenti di programmazione Trovare gli impiegati che hanno lo stesso capo di Rossi Senza vista: PROJ Impiegato ((Afferenza JOIN Direzione) JOIN REN ImpR,RepR Impiegato,Reparto ( SEL Impiegato='Rossi'

Dettagli

Corso di Access Modulo L2 A (Access) I tipi di query

Corso di Access Modulo L2 A (Access) I tipi di query Corso di Access Modulo L2 A (Access) 2.3.2 I tipi di query 1 Prerequisiti Concetto di database relazionale Utilizzo elementare del computer Concetti fondamentali di basi di dati Interrogazione di un DB

Dettagli

Il sistema informativo deve essere di tipo centralizzato e accessibile mediante un computer server installato nella rete locale dell albergo.

Il sistema informativo deve essere di tipo centralizzato e accessibile mediante un computer server installato nella rete locale dell albergo. PROBLEMA. Un albergo di una grande città intende gestire in modo automatizzato sia le prenotazioni sia i soggiorni e realizzare un database. Ogni cliente viene individuato, tra l altro, con i dati anagrafici,

Dettagli

CORSO ACCESS 2000 PARTE VI

CORSO ACCESS 2000 PARTE VI Le Query Le Query selezionano dati, da una o più tabelle in un database, che soddisfano determinati requisiti e visualizzano i risultati in un foglio dati. I dati richiesti vengono visualizzati in un recordset

Dettagli

Stringhe di caratteri

Stringhe di caratteri Domini primitivi In SQL sono disponibili alcune famiglie di domini elementari attraverso le quali è possibile definire i domini di appartenenza dei campi. Stringhe di caratteri CHARACTER [VARYING] [(NumeroCaratteri)]

Dettagli

Access. P a r t e t e r z a

Access. P a r t e t e r z a Access P a r t e t e r z a 1 Query: Concetti generali (2) Query 1 Tabella Query 2 Le query rappresentano viste differenti sul DB (possono coinvolgere una o più tabelle) 2 Creazione (1) Diverse possibilità,

Dettagli

SQL. Il nome sta per Structured Query Language Le interrogazioni SQL sono dichiarative

SQL. Il nome sta per Structured Query Language Le interrogazioni SQL sono dichiarative SQL SQL Il nome sta per Structured Query Language Le interrogazioni SQL sono dichiarative l utente specifica quale informazione è di suo interesse, ma non come estrarla dai dati Le interrogazioni vengono

Dettagli

Il linguaggio SQL: raggruppamenti

Il linguaggio SQL: raggruppamenti Il linguaggio SQL: raggruppamenti Sistemi Informativi L-A Home Page del corso: http://www-db.deis.unibo.it/courses/sil-a/ Versione elettronica: SQLb-gruppi.pdf Sistemi Informativi L-A Informazioni di sintesi

Dettagli

Il linguaggio SQL: raggruppamenti. Versione elettronica: SQLb-gruppi.pdf

Il linguaggio SQL: raggruppamenti. Versione elettronica: SQLb-gruppi.pdf Il linguaggio SQL: raggruppamenti Versione elettronica: SQLb-gruppi.pdf Informazioni di sintesi Quanto sinora visto permette di estrarre dal DB informazioni che si riferiscono a singole tuple (eventualmente

Dettagli

DDL (Data Definition Language) schemi DML (Data Manipulation Language) DQL (Data Query Language) DCL (Data Control Language)

DDL (Data Definition Language) schemi DML (Data Manipulation Language) DQL (Data Query Language) DCL (Data Control Language) o o o o o DDL (Data Definition Language): consente di creare e modificare schemi di database; DML (Data Manipulation Language): consente di inserire, modificare e gestire i dati memorizzati; DQL (Data

Dettagli

A.A. 2018/2019. Introduzione a SQL FONDAMENTI DI INFORMATICA E PROGRAMMAZIONE. Docente Prof. Raffaele Pizzolante

A.A. 2018/2019. Introduzione a SQL FONDAMENTI DI INFORMATICA E PROGRAMMAZIONE. Docente Prof. Raffaele Pizzolante A.A. 2018/2019 Introduzione a SQL Docente Prof. Raffaele Pizzolante FONDAMENTI DI INFORMATICA E PROGRAMMAZIONE Le Origini di SQL Principali Versioni Anni 70 1986 SEQUEL Structured English QUEry Language

Dettagli

Laboratorio di Basi di Dati

Laboratorio di Basi di Dati Laboratorio di Basi di Dati Docente: Alberto Belussi Lezione 1 SQL Structured Query Language SQL è stato definito nel 1973 ed è oggi il linguaggio più diffuso per i DBMS relazionali Il linguaggio SQL è

Dettagli

Interpretazione delle query nidificate

Interpretazione delle query nidificate Interpretazione delle query nidificate Per analizzare il risultato di una interrogazione nidificata si può supporre di valutare prima il risultato dell interrogazione nidificata (query interna) per poi

Dettagli

SQL [2] Concetti avanzati di SQL. Esempi di interrogazioni

SQL [2] Concetti avanzati di SQL. Esempi di interrogazioni SQL [2] Concetti avanzati di SQL 2 Esempi di interrogazioni 3 Esempi di interrogazioni 4 Esempi di interrogazioni 5 Confronti che coinvolgono NULL NULL può voler dire: valore sconosciuto (esiste ma non

Dettagli

SQL. Lezione 1. Docente: Alberto Belussi

SQL. Lezione 1. Docente: Alberto Belussi LaboratoriodiBasidiDatieWeb Docente: Alberto Belussi Lezione 1 SQL Structured Query Language SQL è stato definito nel 1973 ed è oggi il linguaggio più diffuso per i DBMS relazionali Il linguaggio SQL è

Dettagli

BASI di DATI. SQL: concetti fondamentali

BASI di DATI. SQL: concetti fondamentali BASI di DATI SQL: concetti fondamentali 1 SQL-92 >> Sommario Concetti Fondamentali Introduzione Creazione ed eliminazione di bd Creazione ed eliminazione di tabelle Inserimenti di ennuple Interrogazioni

Dettagli

Basi di dati 8 settembre 2015 Esame Compito A Tempo a disposizione: due ore. Libri chiusi.

Basi di dati 8 settembre 2015 Esame Compito A Tempo a disposizione: due ore. Libri chiusi. Basi di dati 8 settembre 2015 Esame Compito A Tempo a disposizione: due ore. Libri chiusi. Cognome: Nome: Matricola: Domanda 1 (15%) Considerare la base di dati relazionale contenente le seguenti relazioni:

Dettagli

Basi di Dati. Concetti Fondamentali SQL-92 25/02/2004. Concetti Fondamentali. Introduzione. Interrogazioni. Creazione ed eliminazione di bd

Basi di Dati. Concetti Fondamentali SQL-92 25/02/2004. Concetti Fondamentali. Introduzione. Interrogazioni. Creazione ed eliminazione di bd Basi di Dati SQL-92 Concetti Fondamentali SQL-92 >> Sommario Introduzione Creazione ed eliminazione di bd Creazione ed eliminazione di tabelle Inserimenti di ennuple Concetti Fondamentali Interrogazioni

Dettagli

Corso di. Basi di Dati I. 7. Esercitazioni in SQL: Definizione e manipolazione dei dati

Corso di. Basi di Dati I. 7. Esercitazioni in SQL: Definizione e manipolazione dei dati Corso di Basi di Dati 7. Esercitazioni in SQL: Definizione e manipolazione dei dati A.A. 2016 2017 Collegarsi a MySQL, caricare e salvare basi di dati Per collegarsi a mysql, aprire un terminale e inserire

Dettagli

Esercitazione query in SQL L esercitazione viene effettuata sul database viaggi e vacanze che prevede il seguente modello E/R:

Esercitazione query in SQL L esercitazione viene effettuata sul database viaggi e vacanze che prevede il seguente modello E/R: Esercitazione query in SQL L esercitazione viene effettuata sul database viaggi e vacanze che prevede il seguente modello E/R: Si consiglia di creare il data base, inserire i dati nelle tabelle, provare

Dettagli

Corso di Laurea in Ingegneria Informatica Fondamenti di Informatica II Modulo Basi di dati a.a

Corso di Laurea in Ingegneria Informatica Fondamenti di Informatica II Modulo Basi di dati a.a Corso di Laurea in Ingegneria Informatica Fondamenti di Informatica II Modulo Basi di dati a.a. 2012-2013 2013 Docente: Gigliola Vaglini Docenti laboratorio: Francesco Pistolesi, Antonio Virdis Lezione

Dettagli

Basi di Dati SQL-92. Concetti Fondamentali

Basi di Dati SQL-92. Concetti Fondamentali Basi di Dati SQL-92 Concetti Fondamentali SQL-92 >> Sommario Concetti Fondamentali Introduzione Interrogazioni clausola SELECT Creazione ed eliminazione clausola FROM di bd clausola WHERE clausola ORDER

Dettagli

I.I.S. G. COSSALI - ORZINUOVI DATABASE. Marzo 2017 Prof. Dario Tomasoni 1

I.I.S. G. COSSALI - ORZINUOVI DATABASE. Marzo 2017 Prof. Dario Tomasoni 1 I.I.S. G. COSSALI - ORZINUOVI DATABASE Marzo 2017 Prof. Dario Tomasoni 1 IMPOSTAZIONE 60 min = Database concetti + Esercizi; 10 min = pausa; 30 min = Linguaggio SQL; 30 min = Database prove LibreOffice

Dettagli

SQL: DDL, VI, Aggiornamenti e Viste

SQL: DDL, VI, Aggiornamenti e Viste SQL: DDL, VI, Aggiornamenti e Viste 1 SQL è più di un semplice linguaggio di interrogazione v Linguaggio di definizione dati (Data-definition language, DDL): Crea/distrugge/modifica relazioni e viste Definisce

Dettagli

Istruzione SELECT: fondamenti Interrogazioni nidificate Operatori insiemistici Istruzioni di aggiornamento Gestione delle tabelle

Istruzione SELECT: fondamenti Interrogazioni nidificate Operatori insiemistici Istruzioni di aggiornamento Gestione delle tabelle 2007 Politecnico di Torino 1 DB M B G Linguaggio SQL: fondamenti Introduzione Istruzione SELECT: fondamenti Interrogazioni nidificate Operatori insiemistici Istruzioni di aggiornamento Gestione delle tabelle

Dettagli

Lezioni di Laboratorio sui Data Base

Lezioni di Laboratorio sui Data Base Lezioni di Laboratorio sui Data Base Informatica per l'impresa Docente Tutor: Dott. Gianluigi Roveda OBIETTIVO: Rivedere come attività di laboratorio le query di tipo select scritte in SQL ma con le variazioni

Dettagli

Linguaggio SQL: fondamenti D B M G

Linguaggio SQL: fondamenti D B M G Linguaggio SQL: fondamenti D B M G Introduzione Introduzione al linguaggio SQL Istruzioni del linguaggio Notazione D B M G 2 Il linguaggio SQL Linguaggio per gestire le basi di dati relazionali Structured

Dettagli

SQL Matteo Magnani, Danilo Montesi Università di Bologna SQL. Linguaggio di interrogazione per basi di dati relazionali

SQL Matteo Magnani, Danilo Montesi Università di Bologna SQL. Linguaggio di interrogazione per basi di dati relazionali SQL Linguaggio di interrogazione per basi di dati relazionali SQL Structured Query Language Linguaggio di interrogazione per basi di dati relazionali. Permette di comunicare con diversi sistemi tramite

Dettagli

2.3.2 I tipi di query MODULO L2

2.3.2 I tipi di query MODULO L2 Dare una breve descrizione dei termini introdotti: (A) CONOSCENZA TERMINOLOGICA Query di selezione Query di comando Query di creazione tabella Query di aggiornamento Query di eliminazione Query di accodamento

Dettagli

Microsoft Access. Nozioni di base. Contatti: Dott.ssa Silvia Bonfanti

Microsoft Access. Nozioni di base. Contatti: Dott.ssa Silvia Bonfanti Microsoft Access Nozioni di base Contatti: Dott.ssa Silvia Bonfanti silvia.bonfanti@unibg.it Introduzione In questa lezione vedremo lo strumento Microsoft Access ed impareremo come realizzare con esso

Dettagli

Relazioni. Microsoft Access. Relazioni. Relazioni

Relazioni. Microsoft Access. Relazioni. Relazioni Relazioni Microsoft Access Relazioni In Access, le relazioni non sono le relazioni del modello relazionale! Relazioni: legate ai concetti di Join Integrità referenziale Relazioni I tipi di relazione possono

Dettagli

SQL. Dott.ssa Elisa Quintarelli

SQL. Dott.ssa Elisa Quintarelli Corso Basi di Dati Dott.ssa Elisa Quintarelli SQL Structured Query Language SQL è stato definito nel 1973 ed è oggi il linguaggio universale dei sistemi relazionali È un linguaggio con varie funzionalità:

Dettagli

SQL e algebra relazionale

SQL e algebra relazionale SQL e algebra relazionale Il linguaggio SQL consente una maggiore espressività dell algebra relazionale grazie a costrutti che permettono: di definire join più sofisticati di ordinare le righe dei risultati

Dettagli

SQL (STRUCTURED QUERY LANGUAGE)

SQL (STRUCTURED QUERY LANGUAGE) SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D Alpaos & Prof. Andrea Borghesan SQL DDL Data Definition Language DML Data Manipulation Language DCL Data Control Language DDL Obiettivo: Definire la struttura

Dettagli

Appunti su SQL. Query Language. Comando Select

Appunti su SQL. Query Language. Comando Select Appunti su SQL Query Language... 1 Comando Select... 1 Select con campi calcolati e order By... 4 campi calcolati Sintassi generale:... 4 order By Sintassi generale:... 4 Select con Join (due tabelle)...

Dettagli

SQL: "storia" 31/05/2006 2

SQL: storia 31/05/2006 2 SQL originariamente "Structured Query Language", ora "nome proprio" linguaggio con varie funzionalità: contiene sia il DDL sia il DML ne esistono varie versioni vediamo gli aspetti essenziali, non i dettagli

Dettagli

Il linguaggio SQL. Il linguaggio SQL. Il linguaggio SQL. Il linguaggio SQL. Il linguaggio SQL: fondamenti. Il linguaggio SQL

Il linguaggio SQL. Il linguaggio SQL. Il linguaggio SQL. Il linguaggio SQL. Il linguaggio SQL: fondamenti. Il linguaggio SQL : fondamenti Linguaggio per gestire le basi di dati relazionali Structured Query Language SQL possiede istruzioni per definire lo schema di una base di dati relazionale leggere e scrivere i dati definire

Dettagli