Domini elementari in SQL

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Domini elementari in SQL"

Transcript

1 SQL SQL è un acronimo per Structured Query Language. Fu sviluppato originalmente come linguaggio per il DBMS System R dall IBM Research Laboratory (San Jose, California) nei tardi anni settanta. Al giorno d oggi è ormai considerato uno standard per i database relazionali. SQL fornisce le primitive sia di un DDL che di un DML. L ANSI (American National Standards Institute) e l ISO (International Standardization Organization) hanno provveduto a definire una versione di riferimento di SQL fin dal Da allora vi sono le seguenti versioni: SQL-89 (1989): versione ormai obsoleta con funzionalità minimali SQL-2 (1992): è la versione di riferimento per i sistemi commerciali SQL-3 (1999): include nuove caratteristiche frutto di ricerca recente SQL è considerata la lingua franca dei DBMS, i.e., è l unico linguaggio che fornisce la garanzia di poter interagire con un database relazionale in modo indipendente dalle particolarità dell interfaccia di quest ultimo.

2 SQL SQL-2 è un linguaggio molto complesso e non esiste ancora un sistema commerciale che lo implementi perfettamente. Esistono quindi vari gradi di compatibilità: Entry SQL (similare a SQL-89) Intermediate SQL (sono incluse le caratteristiche che meglio si adattano alla richiesta del mercato) Full SQL (sono implementate tutte le caratteristiche dello standard) D altra parte molti sistemi commerciali presentano caratteristiche che non sono contemplate nello standard. In generale tutti i sistemi sono molto aderenti allo standard per quanto riguarda gli aspetti consolidati di SQL, mentre differiscono fra loro e rispetto a SQL-2 quando si considerano le caratteristiche più avanzate ed innovative.

3 Domini elementari in SQL Il dominio character permette di rappresentare singoli caratteri o stringhe: character [varying] [(lunghezza)] [character set nome] Esempi: 1) stringhe composte da 20 caratteri: character (20) 2)stringhe composte da al più 100 caratteri dell alfabeto russo: character varying (100) character set Cyrillic Al posto di character e character varying si possono usare le forme compatte var e varchar. Il dominio bit permette di rappresentare attributi (flag) che specificano se un oggetto ha o meno una certa proprietà; infatti un attributo con dominio bit può assumere soltanto il valore 0 o il valore 1. E anche possibile avere come domini stringhe bi bit tramite la sintassi seguente: bit [varying] [(lunghezza)] Esempi: 1) stringhe di 20 bit: bit (20) 2) stringhe di al più 35 bit: bit varying (35) o varbit(35)

4 Domini elementari in SQL Domini numerici esatti: numeric [(Precisione [,Scala])] decimal [(Precisione [,Scala])] integer smallint Esempi: 1) Valori da 99 a +99: decimal (2) 2) Valori da a : numeric (5,2) Domini numerici approssimati (numeri a virgola mobile): float [(Precisione)] double precision real

5 Domini elementari in SQL In SQL-2 sono stati introdotti dei domini specifici al fine di rappresentare informazioni temporali: date time [(Precisione)] [with time zone] timestamp [(Precisione)] [with time zone] Ognuno dei domini precedenti è costituito da campi: year, month e day per date hour, minute, second per time year, month, day, hour, minute, second per timestamp La precisione rappresenta il numero di cifre decimali destinate a rappresentare le frazioni di secondo. Nel caso venga specificata una time zone, si hanno a disposizione due ulteriori campi (timezone_hour e timezone_minute) che rappresentano la differenza fra l ora locale e quella di Greenwich (Universal Coordinated Time).

6 Domini elementari in SQL Gli intervalli temporali sono un tipo di dominio che permette di rappresentare informazioni corrispondenti alla durata di un azione, i.e., intervalli di tempo. La sintassi è la seguente: interval PrimaUnitàTemporale [to UltimaUnitàTemporale] La PrimaUnitàTemporale può essere accompagnata dalla precisione che indica il numero di cifre in base 10 che possono essere usate nella rappresentazione. Quando l unità temporale più piccola è second, si può specificare il numero di cifre decimali che possono occorrere dopo la virgola. Esempi: 1) intervalli fino a 99 anni e 11 mesi: interval year to month 2) intervalli fino a anni e 11 mesi: interval year(5) to month 3) intervalli fino a 9999 giorni, 23 ore, 59 minuti e 59, secondi: interval day(4) to second(6)

7 Definizione di schemi In SQL uno schema è un insieme di domini, indici, tabelle, asserzioni, viste e privilegi. La sintassi per creare un nuovo schema è la seguente: create schema [NomeSchema] [[authorization] Autorizzazione] {DefElementoSchema} dove autorizzazione indica il nome dell utente proprietario dello schema (se non specificato si assume che sia l utente che ha lanciato il comando). NomeSchema è opzionale e, nel caso in cui non venga specificato, si assume il nome del proprietario. DefElementoSchema rappresenta gli elementi che compongono lo schema (non è necessario specificarli tutti al momento della creazione di quest ultimo).

8 Definizione di tabelle La sintassi per la creazione di una tabella è la seguente: create table NomeTabella (NomeAttributo Dominio [ValoreDiDefault] [Vincoli] {, NomeAttributo Dominio [ValoreDiDefault] [Vincoli]} {AltriVincoli} ) Quindi una tabella è costituita da un insieme ordinato di attributi con i rispettivi domini (ed eventuali valori di default) e da un insieme (eventualmente vuoto) di vincoli. L insieme denotato da AltriVincoli si riferisce a quei vincoli definiti su più attributi della tabella. Esempio: create table Dipartimento (Nome varchar (20) primary key, Indirizzo varchar(50), CodicePostale char(5) )

9 Domini definiti dall utente SQL permette all utente di definire dei nuovi domini a partire da quelli elementari tramite la sintassi seguente: create domain NomeDominio as DominioEsistente [ValoreDiDefault] [Vincoli] Quindi un dominio definito dall utente associa NomeDominio con il dominio DominioEsistente (può essere predefinito o definito in precedenza dall utente), un eventuale valore di default ed eventuali vincoli. L utilità di questi domini derivati è che permettono di associare un nome con un insieme di vincoli. In tal modo si può usarli ripetutamente nella definizione delle tabelle con il vantaggio che un eventuale cambiamento nella definizione originale si propaga automaticamente in tutti i punti in cui quest ultima è stata utilizzata.

10 Valori di default I valori di default che compaiono nelle definizioni dei domini ed in quelle delle tabelle specificano i valori che devono assumere gli attributi corrispondenti quando, al momento dell inserimento di una nuova riga (tupla), non vengono specificati dei valori per essi. Esempio: NumeroDipendenti smallint default 0 Se non si specifica un valore di default, il sistema assume che esso sia NULL. Nel caso in cui siano stati specificati contemporaneamente un valore di default per il dominio ed uno per l attributo corrispondente all interno della definizione di una tabella, quest ultimo ha la precedenza.

11 Vincoli intra-relazionali Not null: un attributo il cui dominio sia seguito dal vincolo not null non potrà mai assumere il valore NULL. Quindi in fase di inserimento è sempre necessario specificare un valore per l attributo, a meno che non ve ne sia uno di default. Unique: si applica ad un attributo od un insieme di attributi, imponendo che l attributo o l insieme di attributi sia una chiave od una superchiave. Quindi non ci possono essere due righe distinte che assumano gli stessi valori (ad eccezione del valore NULL) in corrispondenza dell attributo o dell insieme di attributi specificati come unique. Primary key: può essere specificato solo una volta per tabella. L attributo o gli attributi interessati diventano la chiave primaria e non possono assumere valori nulli e, ovviamente, devono essere una chiave.

12 Vincoli di integrità referenziale Un vincolo di integrità referenziale stabilisce una corrispondenza fra i valori degli attributi di una tabella (interna) ed i valori degli attributi di un altra tabella (esterna). Il vincolo stabilisce che per ogni riga della tabella interna i valori degli attributi specificati nel vincolo (se non sono nulli) devono corrispondere a quelli di una riga della tabella esterna. L unica restrizione imposta sugli attributi della tabella esterna è che questi siano soggetti al vincolo unique. Solitamente l insieme di attributi della tabella esterna che entrano in gioco in un vincolo di integrità referenziale sono quelli che compongono la chiave primaria.

13 Esempio create table Impiegati (Matricola integer primary key, Nome varchar (20), Cognome varchar (20), Dipartimento char (15), Stipendio numeric (9) default 0, Indirizzo varchar (100), foreign key(dipartimento) references Dipartimenti(NomeDip), unique(nome,cognome) )

14 Violazione di un vincolo di integrità referenziale Vi sono due modi di violare un vincolo di integrità referenziale: Operare dei cambiamenti sulla tabella interna. Operare dei cambiamenti sulla tabella esterna. Nel caso del primo tipo di violazione, l operazione viene rifiutata dal sistema. Nel caso del secondo tipo di violazione, vi sono varie possibilità: operazioni di aggiornamento: cascade: il nuovo valore dell attributo coinvolto nel vincolo della tabella esterna viene assegnato all attributo corrispondente di tutte le righe vincolate della tabella interna. set null: il valore NULL viene assegnato all attributo corrispondente di tutte le righe vincolate della tabella interna al posto del valore modificato nella tabella esterna. set default:il valore di default viene assegnato all attributo corrispondente di tutte le righe vincolate della tabella interna al posto del valore modificato nella tabella esterna. no action: l operazione viene rifiutata dal sistema.

15 Violazione di un vincolo di integrità referenziale Operazione di cancellazione di un elemento della tabella esterna: cascade: tutte le righe corrispondenti della tabella interna vengono eliminate. set null: il valore NULL viene assegnato nella tabella interna all attributo corrispondente al posto del valore cancellato nella tabella esterna. set default: il valore di default viene assegnato nella tabella interna all attributo corrispondente al posto del valore cancellato nella tabella esterna. no action: l operazione di cancellazione viene rifiutata dal sistema. L asimmetria di comportamento in caso di violazione di un vincolo di integrità referenziale è dovuto al fatto che alla tabella esterna viene attribuita maggiore importanza, mentre la tabella interna deve semplicemente adattarsi alle variazioni.

16 Esempio create table Impiegati (Matricola integer primary key, Nome varchar (20), Cognome varchar (20), Dipartimento char (15), Stipendio numeric (9) default 0, Indirizzo varchar (100), foreign key (Dipartimento) references Dipartimenti(NomeDip) on delete set null on update cascade, unique(nome,cognome) )

17 Modifica di schemi (alter) Il comando alter permette di modificare domini e tabelle preesistenti: alter domain NomeDominio <set default ValoreDiDefault drop default add constraint Vincolo drop constraint NomeVincolo> alter table NomeTabella < alter column NomeAttributo <set default ValoreDiDefault drop default> add constraint Vincolo drop constraint NomeVincolo add column DefinizioneAttributo drop column NomeAttributo> Quando si aggiunge un nuovo vincolo i dati esistenti devono soddisfarlo, altrimenti la modifica dello schema viene rifiutata.

18 Modifica di schemi (drop) Il comando drop permette di eliminare dei componenti: drop <schema domain table view assertion> NomeComponente [restrict cascade] L opzione restrict è quella di default ed impedisce l eliminazione del componente specificato se quest ultimo non è vuoto oppure è in uso in un altro componente. L opzione cascade al contrario, oltre ad eliminare il componente specificato, elimina anche tutti i componenti dipendenti. Quando si elimina un dominio definito dall utente, gli attributi corrispondenti assumono come nuovo dominio quello di base usato nella definizione. Ad esempio se elimino il dominio LongString (creato con il comando create domain LongString as char (100)), tutti gli attributi aventi come dominio LongString assumono come nuovo dominio char (100).

19 Metadati I DBMS relazionali memorizzano e gestiscono la descrizione delle tabelle presenti nei database sempre tramite strutture relazionali, i.e., tabelle. Questo meccanismo prende il nome di riflessività. Vi sono quindi due tipi di tabelle: Le tabelle che contengono i dati veri e propri. Le tabelle che contengono i metadati (dati che descrivono dati); queste ultime prendono il nome di catalogo della base di dati o dizionario. In teoria la riflessività permetterebbe di gestire i metadati con gli stessi comandi che permettono di gestire i dati. In pratica però si preferisce non seguire questo approccio per le seguenti ragioni: Per chiarezza è opportuno distinguere i comandi che operano sugli schemi da quelli che operano sui dati. Il dizionario cambia da sistema a sistema; quindi manipolazioni dirette sarebbero rivolte ad uno specifico sistema senza essere facilmente portabili su un altro DBMS. Le manipolazioni dirette possono essere pericolose se non tengono conto di tutti i passaggi necessari per modificare uno schema; infatti potrebbero produrre degli schemi inconsistenti.

20 Query in SQL Le interrogazioni in SQL sono espresse in modo dichiarativo, i.e., basta esprimere le proprietà che devono possedere i dati per estrarli. Ci penserà il DBMS poi a stabilire la procedura, i.e., la sequenza di operazioni da eseguire per ottenere il risultato. Il DBMS si preoccupa di analizzare la query impartita dall utente, traducendola nel suo linguaggio procedurale interno ed ottimizzandola. Quindi, a differenza di quanto avviene in algebra relazionale, l utente non deve generalmente preoccuparsi di scrivere query ottimizzate, ma piuttosto leggibili e facili da modificare in caso di necessità.

21 SELECT Le interrogazioni in SQL vengono specificate per mezzo del comando select: select AttrEspr [[as] Alias] {, AttrEspr [[as] Alias]} from Tabella [[as] Alias] {, Tabella [[as] Alias]} [where Condizione] Il risultato consiste nella selezione fra le righe appartenenti al prodotto cartesiano (formato dalle tabelle specificate nella clausola from) di quelle che soddisfano la condizione specificata nella clausola where. Le colonne incluse nel risultato saranno quelle date dalla valutazione delle espressioni AttrEspr. Gli alias permettono di rinominare sia le colonne che le tabelle coinvolte. Il carattere speciale asterisco (*) può essere usato al posto delle espressioni AttrEspr per estrarre tutte le colonne delle tabelle coinvolte.

22 Esempio Impiegati Dipendenze Numero Nome Età Stipendio Capo Impiegato 101 Mary Smith Mary Bianchi Luigi Neri Nico Bini Marco Celli Siro Bisi Nico Bini Steve Smith Mary Smith La query fornire i numeri di matricola, nomi ed età degli impiegati che guadagnano più di Euro all anno può essere formulata in SQL come segue: select Numero, Nome, Età FROM Impiegati where Stipendio>40000

23 Esempio Fornire lo stipendio mensile dell impiegato Marco Celli: select Stipendio/12 as StipendioMensile from Impiegati where Nome= Marco Celli Fornire i nomi e gli stipendi dei capi degli impiegati che guadagnano più di Euro all anno: select I1.Nome, I1.Stipendio from Impiegati as I1, Dipendenze as D, Impiegati as I2 where I1.Numero=D.Capo and D.Impiegato=I2.Numero and I2.Stipendio>40000 Nella query precedente vi sono tre alias: I1, D e I2. D è semplicemente uno pseudonimo di Dipendenze (tale tabella compare infatti una sola volta nella clausola from). I1 e I2 invece sono due variabili in quanto permettono di riferirsi alla stessa tabella (Impiegati) due volte nella stessa query.

24 Struttura della SELECT La struttura essenziale di una select è la seguente: select ElementiSchema from ListaTabelle where Condizione ElementiSchema specifica gli attributi che dovranno far parte della tabella risultato. L uso dell asterisco impone che tutti gli attributi di tutte le tabelle elencate nella clausola from compaiano nel risultato. La clausola from elenca tutte le tabelle coinvolte nella select. Le condizioni indicate nella clausola where vengono applicate al prodotto cartesiano delle tabelle specificate nella clausola from.

25 La clausola WHERE La condizione espressa nella clausola where è un espressione logica costruita combinando delle semplici condizioni atomiche per mezzo degli operatori and, or e not. Le condizioni atomiche possono essere costruite applicando degli operatori di confronto ad espressioni formate a partire da nomi di attributi e costanti. Gli operatori di confronto disponibili sono: = (uguale), <> (diverso), < (minore), > (maggiore), <= (minore od uguale), >= (maggiore od uguale). Per i confronti fra stringhe SQL mette a disposizione l operatore like. Grazie alla possibilità di usare i caratteri speciali _ (che rappresenta un carattere qualsiasi) e % (che rappresenta una qualunque stringa di caratteri, eventualmente vuota), è possibile utilizzare espressioni come ab%r_ (i.e., tutte le stringhe che iniziano con i caratteri ab e che hanno una r prima dell ultimo carattere). Esempio: select Età, Stipendio from Impiegati where Nome like %Bi%

26 Valori NULL A differenza dell SQL-89 che era basato su una logica a due valori, SQL-2 adotta una logica a tre valori (true, false, unknown) in cui un predicato restituisce il risultato unknown se una delle espressioni a cui è applicato contiene il valore NULL. SQL mette a disposizione i predicati is null e is not null per gestire gli attributi che possono assumere valori nulli: NomeAttributo is [not] null Le condizioni della clausola where possono essere costruite anche tenendo conto di questi predicati. Esempio: select * from Impiegati where Età is not null

27 Duplicati Una differenza sostanziale rispetto all algebra relazionale è che l SQL permette di avere tabelle con righe che assumono gli stessi valori per tutti gli attributi. La ragione di questa scelta è che sarebbe troppo costoso in termini di utilizzo delle risorse del calcolatore implementare un algoritmo che rimuova automaticamente i duplicati. Esempio: la query select I1.Nome, I1.Stipendio from Impiegati as I1, Dipendenze as D, Impiegati as I2 where I1.Numero=D.Capo and D.Impiegato=I2.Numero and I2.Stipendio>40000; Nome Stipendio produce il seguente risultato: Marco Celli Steve Smith Steve Smith Mary Smith Per eliminare i duplicati bisogna utilizzare la parola chiave distinct (dopo select).

28 Inner e outer join SQL-2 ha introdotto una sintassi alternativa per la rappresentazione dei join in modo da distinguere questi ultimi dalle altre condizioni presenti nella clausola where: select AttrEspr [[as] Alias] {, AttrEspr [[as] Alias]} from Tabella [[as] Alias] {[TipoJoin] join Tabella [[as] Alias] on CondizioneJoin} [where Condizione] TipoJoin può essere inner, right outer, left outer o full outer (la parola chiave outer è opzionale). In generale, con un inner join può succedere che alcune righe di una delle tabelle in gioco non vengano incluse nel risultato in quanto non esiste una riga corrispondente nell altra tabella che soddisfi la condizione specificata. Per ovviare a ciò si può utilizzare un outer join che rimpiazza l informazione mancante con dei valori NULL.

29 Inner e outer join Siano date le seguenti relazioni: Impiegati Impiegato Dipartimento Dipartimenti Dipartimento Capo Smith Black White Vendite Produzione Produzione Produzione Acquisti Mori Brown Se vogliamo i dipartimenti, i loro capi ed i relativi dipendenti (includendo anche i dipartimenti che al momento non ne hanno), useremo un right outer join come segue: select Impiegato, Dipartimenti.Dipartimento, Capo from Impiegati right outer join Dipartimenti on Dipartimenti.Dipartimento=Impiegati.Dipartimento Alcuni sistemi per identificare l outer join fanno seguire un simbolo * o + agli attributi coinvolti. Nel caso dell esempio precedente si avrebbe quanto segue: select Impiegato, Dipartimenti.Dipartimento, Capo from Impiegati, Dipartimenti where Dipartimenti.Dipartimento=*Impiegati.Dipartimento Impiegato Black White NULL Dipartimento Produzione Produzione Acquisti Capo Mori Mori Brown

30 Ordinamento delle righe Spesso nelle applicazioni è utile ordinare le righe della tabella generata da una query in base ad un certo criterio, soprattutto nel caso in cui il numero di righe totali sia molto elevato. SQL viene incontro a questa esigenza dell utente mettendo a disposizione la clausola order by: order by AttributoDiOrdinamento [asc desc] {, AttributoDiOrdinamento [asc desc]} Le righe vengono ordinate in base al valore assunto in corrispondenza del primo attributo specificato e, a parità di valore, in base agli attributi successivi.

31 Ordinamento delle righe Ad esempio, per avere la lista di tutte le righe della tabella Impiegati ordinate in base all età (ordinamento ascendente) ed allo stipendio (ordinamento discendente) si esegue la seguente query: select * from Impiegati order by Età, Stipendio desc Numero Nome Età Stipendio 103 Mary Bianchi Steve Smith Mary Smith Luigi Neri Nico Bini Nico Bini Marco Celli Mary Smith Siro Bisi

32 Operatori aggregati Gli operatori aggregati in SQL consentono di valutare proprietà che dipendono da un insieme di righe. In algebra relazionale al contrario tutte le condizioni sono valutate su ogni tupla singolarmente. Un tipico esempio di operatore aggregato è count che consente di calcolare il numero delle tuple che soddisfano una data condizione: select count(*) as Cinquantenni from Impiegati where Età=50 La query precedente fornisce il seguente risultato: Cinquantenni 2

33 L operatore count L operatore aggregato count può essere utilizzato con la sintassi seguente: count (<* [distinct all] ListaAttributi>) Il carattere * restituisce il numero di righe. La parola chiave distinct specifica che deve essere restituito il numero di righe che hanno valori distinti relativamente agli attributi specificati in ListaAttributi. La parola chiave all (default) invece specifica che deve essere restituito il numero di righe che assumono valori diversi da NULL relativamente agli attributi specificati in ListaAttributi. Esempio: select count(distinct Età) from Impiegati

34 Altri operatori aggregati <sum max min avg> ([distinct all] AttrEspr) sum e avg ammettono come espressioni o attributi soltanto quelli che rappresentano valori numerici o intervalli di tempo. max e min richiedono che sui valori dell espressione o attributo forniti come parametri sia definito un ordinamento. Tutti questi operatori si applicano alle righe che soddisfano la condizione della clausola where e forniscono i seguenti risultati: sum: restituisce la somma dei valori corrispondenti a AttrEspr; max e min: restituiscono, rispettivamente il valore massimo e quello minimo di AttrEspr; avg: restituisce la media dei valori di AttrEspr.

35 Esempi select sum(stipendio) as SpesaStipendi from Impiegati SpesaStipendi select avg(età) as EtàMedia from Impiegati EtàMedia 40, select min(età) as Giovane, max(età) as Vecchio from Impiegati Giovane Vecchio 23 50

36 Esempio di query non corretta La query select Nome, max(stipendio) from Impiegati non è corretta. Intuitivamente, si vorrebbe che la query precedente fornisca lo stipendio più alto unitamente al nome dell impiegato che lo percepisce. Tuttavia vi sono due problemi che impediscono di eseguire l interrogazione: Potrebbero esserci più di due righe con il valore massimo per la colonna Stipendio ed il sistema non avrebbe modo di scegliere. Se anche non sussistesse il problema precedente, interrogazioni del genere potrebbero aver senso per min e max, ma non per i rimanenti operatori aggregati. Quindi non è possibile specificare attributi (od espressioni di attributi) con operatori aggregati come nel precedente esempio.

37 La clausola group by Spesso è necessario avere un controllo più fine di quello offerto dagli operatori aggregati. Infatti questi ultimi si applicano a tutte le righe prodotte dalla query, mentre sarebbe a volte utile che venissero applicati a dei sottoinsiemi di righe singolarmente. Per ottenere questo scopo, i.e., suddividere le righe risultato di una query in sottoinsiemi si usa la clausola group by: select Dipartimento, sum(stipendio) from Impiegati group by Dipartimento Impiegati Risultato della query: Nome Cognome Dipartimento Ufficio Stipendio Città Mary Brown Amministrazione Londra Jacques Dupont Produzione Tolosa David Johnson Amministrazione New York Mario Rossi Distribuzione Roma Charles Brown Planning Londra Kurt Maier Planning Monaco Stefan Mortensen Amministrazione Stoccolma Alice Duval Produzione Tolosa Dipartimento Expr1001 Amministrazione Distribuzione Planning Produzione 82000

38 La clausola group by Usando la clausola group by è quindi possibile combinare operatori aggregati e attributi nella target list di una select. Tuttavia SQL impone dei vincoli sintattici agli attributi che possono essere utilizzati congiuntamente nella target list della select; infatti essi devono apparire nella clausola group by. Quindi la seguente query non è corretta (infatti ci sono più uffici per ogni dipartimento): select Ufficio from Impiegati group by Dipartimento A volte tale vincolo appare troppo restrittivo: Impiegati Impiegato Dipartimento Dipartimenti Dipartimento Capo Black Produzione Vendite Brown Smith White Vendite Produzione Produzione Mori La chiave primaria di Dipartimenti è Dipartimento. La query select D.Dipartimento, count(*), D.Capo from Impiegati I inner join Dipartimenti D on (I.Dipartimento=D.Dipartimento) group by D.Dipartimento è scorretta anche se, intuitivamente, è possibile associare un unico capo ad ogni dipartimento (visto che D.Dipartimento è chiave primaria di Dipartimenti).

39 La clausola group by In casi come quello precedente si dice che gli attributi che si vogliono ottenere sono funzionalmente dipendenti da quelli specificati nella clausola group by. In altre parole possono assumere un unico valore in corrispondenza dei singoli valori specificati per il raggruppamento. Modificare SQL per permettere questi casi comporterebbe una complicazione non banale del linguaggio. Quindi si è preferito costringere l utente a specificare un insieme ridondante di attributi nella clausola group by per ottenere il risultato desiderato. Ad esempio, nel caso precedente la query corretta è: select D.Dipartimento, count(*), D.Capo from Impiegati I inner join Dipartimenti D on (I.Dipartimento=D.Dipartimento) group by D.Dipartimento, D.Capo Dipartimento Expr1001 Capo Produzione 2 Mori Vendite 1 Brown

40 La clausola having La clausola group by permette di suddividere le righe in sottoinsiemi per poi applicare ad ognuno di questi un operatore aggregato. In qualche caso può essere utile applicare gli operatori aggregati a sottoinsiemi che soddisfino una certa proprietà. Se la proprietà in questione è verificabile per ogni riga presa singolarmente, allora può essere inclusa nella clausola where. Quando al contrario la proprietà deve essere soddisfatta dal risultato fornito da un operatore aggregato, allora si rende necessaria la clausola having. Quindi nella clausola having vanno specificate le condizioni da applicare al termine dell esecuzione di una query che faccia uso di group by.

41 Esempi select Dipartimento from Impiegati group by Dipartimento having sum(stipendio)> Impiegati Nome Cognome Dipartimento Ufficio Stipendio Mary Brown Amministrazione Jacques Dupont Produzione David Johnson Amministrazione Mario Rossi Distribuzione Charles Brown Planning Kurt Maier Planning Stefan Mortensen Amministrazione Alice Duval Produzione Risultato della query: Dipartimento Amministrazione Planning select Dipartimento from Impiegati where Ufficio='20' group by Dipartimento having avg(stipendio)>25000 Risultato della query: Dipartimento Amministrazione Produzione

42 La clausola having Se è presente la clausola having, ma non quella group by, allora tutte le righe vengono considerate come un unico sottoinsieme. In questo caso se la condizione specificata non è soddisfatta, la tabella risultante sarà vuota. In generale la proprietà specificata nella clausola having può essere costruita seguendo le stesse regole sintattiche relative alla condizione della clausola where. Tuttavia, nonostante SQL permetta di utilizzare predicati sugli attributi che compaiono nella clausola group by, è preferibile specificare questi ultimi nella clausola where. In sostanza la regola da seguire è che nella clausola having vanno specificate soltanto proprietà costruite a partire da predicati su operatori aggregati.

43 Operatori insiemistici SQL mette a disposizione tre operatori che svolgono lo stesso ruolo di quelli insiemistici dell algebra relazionale: union (unione) intersect (intersezione) except o minus (differenza) Ciò che contraddistingue maggiormente gli operatori insiemistici dal resto dei costrutti di SQL è l automatica eliminazione dei duplicati. Un ulteriore differenza è che SQL non richiede che gli schemi delle relazioni (tabelle) siano uguali; infatti è sufficiente che i domini degli attributi siano compatibili. La sintassi è la seguente: select1 {<union intersect except> [all] select2} La parola chiave all (se specificata) consente di includere nel risultato anche gli eventuali duplicati.

44 Esempio select Nome from Impiegati union select Cognome from Impiegati Nome Cognome Dipartimento Ufficio Stipendio Mary Brown Amministrazione Jacques Dupont Produzione David Johnson Amministrazione Mario Rossi Distribuzione Charles Brown Planning Kurt Maier Planning Stefan Mortensen Amministrazione Alice Duval Produzione Impiegati Nome Alice Brown Charles David Dupont Duval Jacques Johnson Kurt Maier Mario Mary Mortensen Rossi Stefan

Definizione di domini

Definizione di domini Definizione di domini Come nei linguaggi ad alto livello (es. C) è possibile definire nuovi domini (tipi di dati) a partire da quelli predefiniti, anche se il costruttore è più limitato. create domain

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

Gestione delle tabelle

Gestione delle tabelle Linguaggio SQL: fondamenti Creazione di una tabella Modifica della struttura di una tabella Cancellazione di una tabella Dizionario dei dati Integrità dei dati 2 Creazione di una tabella (1/3) Si utilizza

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

Linguaggio SQL: fondamenti D B M G. Gestione delle tabelle

Linguaggio SQL: fondamenti D B M G. Gestione delle tabelle Linguaggio SQL: fondamenti Creazione di una tabella Modifica della struttura di una tabella Cancellazione di una tabella Dizionario dei dati Integrità dei dati 2 2007 Politecnico di Torino 1 Creazione

Dettagli

Basi di dati. Il Linguaggio SQL. K. Donno - Il Linguaggio SQL

Basi di dati. Il Linguaggio SQL. K. Donno - Il Linguaggio SQL Basi di dati Il Linguaggio SQL Data Definition Language (DDL) Data Definition Language: insieme di istruzioni utilizzate per modificare la struttura della base di dati Ne fanno parte le istruzioni di inserimento,

Dettagli

DDL, VINCOLI D INTEGRITÁ, AGGIORNAMENTI E VISTE. SQL è più di un semplice linguaggio di interrogazione

DDL, VINCOLI D INTEGRITÁ, AGGIORNAMENTI E VISTE. SQL è più di un semplice linguaggio di interrogazione SQL DDL, VINCOLI D INTEGRITÁ, AGGIORNAMENTI E VISTE SQL è più di un semplice linguaggio di interrogazione! Linguaggio di definizione dati (Data-definition language, DDL):! Crea/distrugge/modifica relazioni

Dettagli

SQL Sintassi Dei Comandi

SQL Sintassi Dei Comandi SQL Sintassi Dei Comandi Di Roberto Aloi http://prof3ta.homeunix.org prof3ta@email.it Questo fascicolo è stato realizzato esclusivamente a fini divulgativi e per la libera consultazione. E' concessa la

Dettagli

Basi di dati SQL. Standardizzazione di SQL. Linguaggi di Interrogazione: SQL. Prof.Angela Bonifati

Basi di dati SQL. Standardizzazione di SQL. Linguaggi di Interrogazione: SQL. Prof.Angela Bonifati Basi di dati Linguaggi di Interrogazione: SQL Prof.Angela Bonifati 1 SQL Il nome stava per Structured Query Language Più che un semplice linguaggio di query: si compone di una parte DDL e di una DML DDL:

Dettagli

Documentazione SQL. Argomento Sintassi Note Definizione schema create schema [NomeSchema] [[authorization] Autorizzazione] {DefElementoSchema}

Documentazione SQL. Argomento Sintassi Note Definizione schema create schema [NomeSchema] [[authorization] Autorizzazione] {DefElementoSchema} Documentazione SQL Argomento Sintassi Note Definizione schema create schema [NomeSchema] [[authorization] Autorizzazione] {DefElementoSchema} Definizione tabella Definizione dominio Specifica di valori

Dettagli

Laboratorio di Basi di Dati e Web

Laboratorio di Basi di Dati e Web Laboratorio di Basi di Dati e Web 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

Dettagli

Domini elementari, 2. Basi di dati. Domini elementari, 4. Domini elementari, 3. Domini definiti dagli utenti. Domini elementari, 5

Domini elementari, 2. Basi di dati. Domini elementari, 4. Domini elementari, 3. Domini definiti dagli utenti. Domini elementari, 5 Domini elementari, Basi di dati Linguaggi di Interrogazione: SQL Prof.Angela Bonifati Bit Valori booleani (vero/falso), singoli o in sequenza (la sequenza può essere di lunghezza variabile) Sintassi: bit

Dettagli

SQL: concetti base SQL. Definizione dei dati in SQL. SQL: "storia"

SQL: concetti base SQL. Definizione dei dati in SQL. SQL: storia SQL SQL: concetti base 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,

Dettagli

Storia. Corso di Basi di Dati Spaziali. Componente DDL. Funzionalità. Esempio. Creazione di schema. Linguaggi: SQL. Storia:

Storia. Corso di Basi di Dati Spaziali. Componente DDL. Funzionalità. Esempio. Creazione di schema. Linguaggi: SQL. Storia: Corso di Basi di Dati Spaziali Linguaggi: SQL Angelo Montanari Donatella Gubiani Storia Storia: 1974: prima proposta SEQUEL 1981: prime implementazioni 1983: standard di fatto 1986, 1989, 1992 e 1999:

Dettagli

Join in SQL (primo modo) Informatica. Tabella Dipartimento. Interrogazione 4a. Interrogazione 4b. Interrogazione 4a

Join in SQL (primo modo) Informatica. Tabella Dipartimento. Interrogazione 4a. Interrogazione 4b. Interrogazione 4a Join in SQL (primo modo) Informatica Lezione 7 Laurea magistrale in Psicologia Laurea magistrale in Psicologia dello sviluppo e dell'educazione Anno accademico: 09- Per formulare interrogazioni che coinvolgono

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

SQL - Tipi di dato Il linguaggio SQL

SQL - Tipi di dato Il linguaggio SQL SQL - Tipi di dato Il linguaggio SQL I tipi di dato in SQL:1999 si suddividono in tipi predefiniti tipi strutturati tipi user-defined ci concentreremo sui tipi predefiniti i tipi predefiniti sono suddivisi

Dettagli

Il linguaggio SQL. Il linguaggio SQL. Il linguaggio SQL. SQL - Tipi di dato. SQL - Tipi di dato numerici. SQL - Tipi di dato numerici

Il linguaggio SQL. Il linguaggio SQL. Il linguaggio SQL. SQL - Tipi di dato. SQL - Tipi di dato numerici. SQL - Tipi di dato numerici Il linguaggio SQL Il linguaggio SQL il linguaggio SQL è un linguaggio per la definizione e la manipolazione dei dati, sviluppato originariamente presso il laboratorio IBM a San Jose (California) è diventato

Dettagli

Operazioni sui database

Operazioni sui database Operazioni sui database Le operazioni nel modello relazionale sono essenzialmente di due tipi: Operazioni di modifica della base di dati (update) Interrogazioni della base di dati per il recupero delle

Dettagli

Basi di Dati e Sistemi Informativi. Structured Query Language

Basi di Dati e Sistemi Informativi. Structured Query Language Basi di Dati e Sistemi Informativi Structured Query Language Corso di Laurea in Ing. Informatica Ing. Gestionale Magistrale SQL come DDL e DML SQL non è solo un linguaggio di interrogazione Linguaggio

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

----------------------------------------------------------------------------

---------------------------------------------------------------------------- APPUNTI DI SQL Gli appunti qui forniti vogliono essere un riferimento scritto di alcuni degli argomenti trattati a lezione per gli studenti a cui vengono messi a disposizione. Non viene fornita alcuna

Dettagli

Basi di Dati: Corso di laboratorio

Basi di Dati: Corso di laboratorio Basi di Dati: Corso di laboratorio Lezione 2 Raffaella Gentilini 1 / 45 Sommario 1 Il DDL di SQL: Cancellazione ed Aggiornamento di una BD Cancellazione di Schemi, Tabelle, e Domini Aggiornamento di Tabelle

Dettagli

Uso delle variabili di alias. SQL slide aggiuntive. Interrogazione 25. Interrogazione 26

Uso delle variabili di alias. SQL slide aggiuntive. Interrogazione 25. Interrogazione 26 Uso delle variabili di alias SQL slide aggiuntive Laurea magistrale in Scienze della mente Laurea magistrale in Psicologia dello sviluppo e dell'educazione educazione Non solo per disambiguare la notazione

Dettagli

Informatica. Sintassi. Interrogazioni in SQL. Significato dell interrogazione. Tabella Impiegato. Basi di dati parte 4 SQL

Informatica. Sintassi. Interrogazioni in SQL. Significato dell interrogazione. Tabella Impiegato. Basi di dati parte 4 SQL Informatica Basi di dati parte 4 SQL Lezione 13 Laurea magistrale in Scienze della mente Laurea magistrale in Psicologia dello sviluppo e dell'educazione Anno accademico: 2012 2013 1 Interrogazioni in

Dettagli

Laboratorio di Basi di Dati

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

Dettagli

Lezione V. Aula Multimediale - sabato 29/03/2008

Lezione V. Aula Multimediale - sabato 29/03/2008 Lezione V Aula Multimediale - sabato 29/03/2008 LAB utilizzo di MS Access Definire gli archivi utilizzando le regole di derivazione e descrivere le caratteristiche di ciascun archivio ASSOCIAZIONE (1:1)

Dettagli

ESEMPI DI QUERY SQL. Esempi di Query SQL Michele Batocchi AS 2012/2013 Pagina 1 di 7

ESEMPI DI QUERY SQL. Esempi di Query SQL Michele Batocchi AS 2012/2013 Pagina 1 di 7 ESEMPI DI QUERY SQL Dati di esempio... 2 Query su una sola tabella... 2 Esempio 1 (Ordinamento)... 2 Esempio 2 (Scelta di alcune colonne)... 3 Esempio 3 (Condizioni sui dati)... 3 Esempio 4 (Condizioni

Dettagli

OR true null false true true true true null true null null false true null false NOT

OR true null false true true true true null true null null false true null false NOT Il linguaggio SQL è un linguaggio standard per la definizione, manipolazione e interrogazione delle basi di dati relazionali ed ha le seguenti caratteristiche: è dichiarativo; opera su multiset di tuple,

Dettagli

Istruzioni DML di SQL

Istruzioni DML di SQL Istruzioni DML di SQL Pag. 99 par.4 1 Sintassi: Costrutto: INSERT INTO (Inserimento di dati in tabelle) INSERT INTO [(, ,, )] VALUES (, ,

Dettagli

Corso di Informatica (Basi di Dati)

Corso di Informatica (Basi di Dati) Corso di Informatica (Basi di Dati) Lezione 6 (15 gennaio 2009) Linguaggio SQL: Data Definition Language (DDL) Da: Atzeni, Ceri, Paraboschi, Torlone - Basi di Dati Lucidi del Corso di Basi di Dati 1, Prof.

Dettagli

Linguaggio SQL. Structured Query Language

Linguaggio SQL. Structured Query Language Linguaggio SQL Structured Query Language Creato negli anni 70 presso IBM Inizialmente solo linguaggio di interrogazione Ora linguaggio di riferimento per DB relazionali Standardizzato grazie al lavoro

Dettagli

SQL: Concetti Base -Prima Parte-

SQL: Concetti Base -Prima Parte- SQL: Concetti Base -Prima Parte- Atzeni, Ceri, Paraboschi, Torlone Basi Di Dati: Modelli e Linguaggi di Interrogazione, McGraw-Hill Italia Capitolo 4 SQL Structured Query Language Contiene: DDL (Data Definition

Dettagli

IL LINGUAGGIO SQL IDENTIFICATORI E TIPI DI DATI COMANDI E ISTRUZIONI

IL LINGUAGGIO SQL IDENTIFICATORI E TIPI DI DATI COMANDI E ISTRUZIONI IL LINGUAGGIO SQL Il linguaggio SQL ( Structured Query Languages) è un linguaggio non procedurale che è diventato uno standard tra i linguaggi per la gestione dei database relazionali. Il linguaggio procedurale

Dettagli

Basi di Dati prof. Letizia Tanca

Basi di Dati prof. Letizia Tanca Basi di Dati prof. Letizia Tanca (lucidi tratti dal libro Atzeni-Ceri-Paraboschi-Torlone) AA 2003-04 Linguaggi di interrogazione commerciali per il Modello Relazionale dei Dati: SQL - il DDL Domini I domini

Dettagli

DBMS (Data Base Management System)

DBMS (Data Base Management System) Cos'è un Database I database o banche dati o base dati sono collezioni di dati, tra loro correlati, utilizzati per rappresentare una porzione del mondo reale. Sono strutturati in modo tale da consentire

Dettagli

Giovanna Rosone 04/03/2010. 04/03/2010 SQL, Istruzioni per la modifica dello schema

Giovanna Rosone 04/03/2010. 04/03/2010 SQL, Istruzioni per la modifica dello schema Giovanna Rosone 04/03/2010 04/03/2010 SQL, Istruzioni per la modifica dello schema 1 Riepilogo Impiegato Pagamenti Nome colonna PAG_COD PAG_MATR Tipo dati CHAR(6) CHAR(6) Nome colonna Tipo dati PAG_STIPENDIO

Dettagli

Il linguaggio SQL: le basi

Il linguaggio SQL: le basi Il linguaggio SQL: le basi Sistemi Informativi L-A Home Page del corso: http://www-db.deis.unibo.it/courses/sil-a/ Versione elettronica: SQLa-basi.pdf Sistemi Informativi L-A SQL: caratteristiche generali

Dettagli

Il linguaggio SQL: query innestate

Il linguaggio SQL: query innestate Il linguaggio SQL: query innestate Sistemi Informativi L-A Home Page del corso: http://www-db.deis.unibo.it/courses/sil-a/ Versione elettronica: SQLc-subquery.pdf Sistemi Informativi L-A DB di riferimento

Dettagli

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

INFORMATICA GENERALE Prof. Alberto Postiglione. Scienze della Comunicazione Università di Salerno. INFORMATICA GENERALE Prof. Alberto Postiglione INFORMATICA GENERALE Prof. Alberto Postiglione Scienze della Comunicazione Università degli Studi di Salerno : (1) Interrogazioni semplici INFORMATICA GENERALE Prof. Alberto Postiglione Scienze della Comunicazione

Dettagli

Vincoli di Integrità Approccio dichiarativo alla loro implementazione

Vincoli di Integrità Approccio dichiarativo alla loro implementazione Vincoli di Integrità Approccio dichiarativo alla loro implementazione Antonella Poggi Dipartimento di informatica e Sistemistica SAPIENZA Università di Roma Progetto di Applicazioni Software Anno accademico

Dettagli

SQL prima parte D O C E N T E P R O F. A L B E R T O B E L U S S I. Anno accademico 2011/12

SQL prima parte D O C E N T E P R O F. A L B E R T O B E L U S S I. Anno accademico 2011/12 SQL prima parte D O C E N T E P R O F. A L B E R T O B E L U S S I Anno accademico 2011/12 DEFINIZIONE Il concetto di vista 2 È una relazione derivata. Si specifica l espressione che genera il suo contenuto.

Dettagli

Corso sul linguaggio SQL

Corso sul linguaggio SQL Corso sul linguaggio SQL Modulo L2B (SQL) 2.2 Comandi sulle tabelle 1 Prerequisiti Introduzione ai DB Tabelle, relazioni e attributi Chiave primaria Chiave esterna Vincoli di integrità 2 1 Introduzione

Dettagli

Abilità Informatiche A.A. 2010/2011 Lezione 9: Query Maschere Report. Facoltà di Lingue e Letterature Straniere

Abilità Informatiche A.A. 2010/2011 Lezione 9: Query Maschere Report. Facoltà di Lingue e Letterature Straniere Abilità Informatiche A.A. 2010/2011 Lezione 9: Query Maschere Report Facoltà di Lingue e Letterature Straniere Le QUERY 2 Che cos è una Query? Una Query rappresenta uno strumento per interrogare un database.

Dettagli

SQL. Structured Query Language 1974: SEQUEL by IBM 1981: SQL by IBM 1986 1992: SQL ISO 9075:1992 SQL:1999 SQL:2003

SQL. Structured Query Language 1974: SEQUEL by IBM 1981: SQL by IBM 1986 1992: SQL ISO 9075:1992 SQL:1999 SQL:2003 SQL Structured Query Language 1974: SEQUEL by IBM 1981: SQL by IBM 1986 1992: SQL ISO 9075:1992 SQL:1999 SQL:2003 SQL Il linguaggio SQL è stato originariamente dichiarativo, diventando nel tempo sempre

Dettagli

SQL - Funzioni di gruppo

SQL - Funzioni di gruppo una funzione di gruppo permette di estrarre informazioni da gruppi di tuple di una relazione le funzioni di gruppo si basano su due concetti: partizionamento delle tuple di una relazione in base al valore

Dettagli

DDL DML. Tipi di linguaggi per basi di dati. Si distinguono due categorie:

DDL DML. Tipi di linguaggi per basi di dati. Si distinguono due categorie: Tipi di linguaggi per basi di dati Si distinguono due categorie: DDL DML Linguaggi di definizione dei dati o data definition languages: utilizzati per definire gli schemi logici, esterni e fisici e le

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

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 relazionali,

Dettagli

Corso Sistemi Informativi Avanzati. Programma 30 set 2015. Installazione Macchina Virtuale. Introduzione alla BI nelle Aziende.

Corso Sistemi Informativi Avanzati. Programma 30 set 2015. Installazione Macchina Virtuale. Introduzione alla BI nelle Aziende. Programma 30 set 205 Installazione Macchina Virtuale Introduzione alla BI nelle Aziende Introduzione SQL Macchina Virtuale È un emulazione di un computer su un altro computer Stesso punto di partenza per

Dettagli

Linguaggio SQL Descriviamo la notazione usata nel seguito:

Linguaggio SQL Descriviamo la notazione usata nel seguito: Descriviamo la notazione usata nel seguito: i termini del linguaggio sono sottolineati; i termini variabili sono scritti in corsivo; le parentesi angolari (< >)permettono di isolare un termine della sintassi;

Dettagli

I database relazionali sono il tipo di database attualmente piu diffuso. I motivi di questo successo sono fondamentalmente due:

I database relazionali sono il tipo di database attualmente piu diffuso. I motivi di questo successo sono fondamentalmente due: Il modello relazionale I database relazionali sono il tipo di database attualmente piu diffuso. I motivi di questo successo sono fondamentalmente due: 1. forniscono sistemi semplici ed efficienti per rappresentare

Dettagli

4 SQL : Interrogazioni nidificate

4 SQL : Interrogazioni nidificate Corso di Laurea in Ingegneria Gestionale SAPIENZA Università di Roma Esercitazioni del corso di Basi di Dati Prof.ssa Catarci e Prof.ssa Scannapieco Anno Accademico 2010/2011 Andrea Marrella Ultimo aggiornamento

Dettagli

SQL. Laboratorio di Progettazione di Basi di Dati (CdS in Informatica e TPS)

SQL. Laboratorio di Progettazione di Basi di Dati (CdS in Informatica e TPS) 1 SQL Laboratorio di Progettazione di Basi di Dati (CdS in Informatica e TPS) a.a. 2014/2015 http://www.di.uniba.it/~lisi/courses/basi-dati/bd2014-15.htm dott.ssa Francesca A. Lisi francesca.lisi@uniba.it

Dettagli

Insegnamento di Informatica CdS Scienze Giuridiche A.A. 2006/7. Il trattamento dei dati

Insegnamento di Informatica CdS Scienze Giuridiche A.A. 2006/7. Il trattamento dei dati Insegnamento di Informatica CdS Scienze Giuridiche A.A. 2006/7 Il trattamento dei dati database: il linguaggio SQL seconda parte Prof. Valle D.ssa Folgieri Lez9 15.11.06 Trattamento dati. Database: il

Dettagli

SQL. Alcune note sulla definizione dei dati

SQL. Alcune note sulla definizione dei dati SQL Alcune note sulla definizione dei dati Domini Domini elementari (predefiniti) Domini definiti dall'utente (riutilizzabili, possono servire per specificare vincoli di dominio propri di una certa applicazione)

Dettagli

SQL IL LINGUAGGIO DI INTERROGAZIONE

SQL IL LINGUAGGIO DI INTERROGAZIONE SQL IL LINGUAGGIO DI INTERROGAZIONE SQL! Originato da SEQUEL-XRM e System-R (1974-1977) dell IBM! Significato originario Structured Query Language! Standard de facto! Attuale standard ANSI/ISO è SQL:1999

Dettagli

Il Modello Relazionale

Il Modello Relazionale Il Modello Relazionale Il modello relazionale 1 Il modello relazionale Proposto da E. F. Codd nel 1970 per favorire l indipendenza dei dati e reso disponibile come modello logico in DBMS reali nel 1981

Dettagli

Data Management Software. Il linguaggio SQL. Raggruppamenti. Paolo Avallone Sr Consulting IT Specialist DB2, Data Management Marzo 2004

Data Management Software. Il linguaggio SQL. Raggruppamenti. Paolo Avallone Sr Consulting IT Specialist DB2, Data Management Marzo 2004 DB2 Data Management Software Il linguaggio SQL Raggruppamenti Paolo Avallone Sr Consulting IT Specialist DB2, Data Management Marzo 2004 LEGGERE LE SEGUENTI ATTENZIONI Le informazioni contenute in questa

Dettagli

I comandi del linguaggio DDL (Data Definition Language): CREATE E ALTER

I comandi del linguaggio DDL (Data Definition Language): CREATE E ALTER Caratteristiche generali del linguaggio SQL Il linguaggio SQL è il linguaggio usato per la gestione dei database relazionali, cioè dei database creati con un DBMS di tipo relazionale. Esso nacque nella

Dettagli

Basi di Dati. Laboratorio Ing. G. Laboccetta Dott.ssa. V. Policicchio. Corso di Laurea in Informatica. a.a. 2010-2011

Basi di Dati. Laboratorio Ing. G. Laboccetta Dott.ssa. V. Policicchio. Corso di Laurea in Informatica. a.a. 2010-2011 Corso di Laurea in Informatica Basi di Dati a.a. 2010-2011 Laboratorio Ing. G. Laboccetta Dott.ssa. V. Policicchio PROGETTAZIONE FISICA SQL-DDL OBIETTIVO: Rappresentare i dati della realtà di interesse

Dettagli

Capitolo 13. Interrogare una base di dati

Capitolo 13. Interrogare una base di dati Capitolo 13 Interrogare una base di dati Il database fisico La ridondanza è una cosa molto, molto, molto brutta Non si devono mai replicare informazioni scrivendole in più posti diversi nel database Per

Dettagli

Il linguaggio SQL: le basi. Versione elettronica: SQLa-basi.pdf

Il linguaggio SQL: le basi. Versione elettronica: SQLa-basi.pdf Il linguaggio SQL: le basi Versione elettronica: SQLa-basi.pdf SQL: caratteristiche generali SQL (Structured Query Language) è il linguaggio standard de facto per DBMS relazionali, che riunisce in sé funzionalità

Dettagli

Data Base. Master "Bio Info" Reti e Basi di Dati Lezione 6

Data Base. Master Bio Info Reti e Basi di Dati Lezione 6 Data Base 1 Sommario I concetti fondamentali. Database Relazionale.. Query e SQL MySql, Creazione di un db in MySQL con PHPmyAdmin Creazione database e delle Tabelle Query Inserimento Ricerca Modifica

Dettagli

Basi di dati. Il Modello Relazionale dei Dati. K. Donno - Il Modello Relazionale dei Dati

Basi di dati. Il Modello Relazionale dei Dati. K. Donno - Il Modello Relazionale dei Dati Basi di dati Il Modello Relazionale dei Dati Proposto da E. Codd nel 1970 per favorire l indipendenza dei dati Disponibile come modello logico in DBMS reali nel 1981 (non è facile realizzare l indipendenza

Dettagli

MAX, SUM, AVG, COUNT)

MAX, SUM, AVG, COUNT) INTRODUZIONE A SQL Definizione di tabelle e domini Alcuni vincoli di integrità Struttura base SELECT FROM WHERE Funzioni di aggregazione (MIN, MAX, SUM, AVG, COUNT) Query da più tabelle (FROM R1, Rk) Join

Dettagli

Volumi di riferimento

Volumi di riferimento Simulazione seconda prova Esame di Stato Gestione di un centro agroalimentare all ingrosso Parte prima) Un nuovo centro agroalimentare all'ingrosso intende realizzare una base di dati per l'attività di

Dettagli

Utilizzando Microsoft Access. Si crea la tabella Anagrafica degli alunni,le Materie e i voti si mettono alcuni campi

Utilizzando Microsoft Access. Si crea la tabella Anagrafica degli alunni,le Materie e i voti si mettono alcuni campi Vogliamo creare una struttura per permettere di memorizzari i voti della classe in tutte le materie Per fare questo untilizziamo tre tabelle Alunni,materie,voti Alunni Materie Voti Creo un record per ogni

Dettagli

INFORMATICA. Applicazioni WEB a tre livelli con approfondimento della loro manutenzione e memorizzazione dati e del DATABASE.

INFORMATICA. Applicazioni WEB a tre livelli con approfondimento della loro manutenzione e memorizzazione dati e del DATABASE. INFORMATICA Applicazioni WEB a tre livelli con approfondimento della loro manutenzione e memorizzazione dati e del DATABASE. APPLICAZIONI WEB L architettura di riferimento è quella ampiamente diffusa ed

Dettagli

Il linguaggio SQL: viste e tabelle derivate

Il linguaggio SQL: viste e tabelle derivate Il linguaggio SQL: viste e tabelle derivate Sistemi Informativi L-A Home Page del corso: http://www-db.deis.unibo.it/courses/sil-a/ Versione elettronica: SQLd-viste.pdf Sistemi Informativi L-A DB di riferimento

Dettagli

User Tools: DataBase Manager

User Tools: DataBase Manager Spazio di lavoro Per usare T-SQL Assistant selezionare il link Simple Query e spostare a piacere la piccola finestra dove un menu a tendina mostra i diversi comandi SQL selezionabili, il pulsante Preview

Dettagli

SQL. Storia e standard

SQL. Storia e standard SQL Lorenzo Sarti 2009 Basi di Dati 1 Storia e standard Lorenzo Sarti 2009 Basi di Dati 2 SQL-2 È ricco e complesso e nessun sistema commerciale lo implementa in maniera completa Sono definiti 3 livelli

Dettagli

Capitolo 4. Soluzione: Soluzione: Create domain STRING as character varying (256) default sconosciuto not null

Capitolo 4. Soluzione: Soluzione: Create domain STRING as character varying (256) default sconosciuto not null Capitolo 4 Esercizio 4.1 Ordinare i seguenti domini in base al valore massimo rappresentable, supponendo che integer abbia una rappresentazione a 32 bit e smallint a 16 bit: numeric(12,4), decimal(10),

Dettagli

Vincoli di Integrità

Vincoli di Integrità Vincoli di Integrità Antonella Poggi Dipartimento di informatica e Sistemistica Sapienza Università di Roma Progetto di Applicazioni Software Anno accademico 2010-2011 Questi lucidi sono stati prodotti

Dettagli

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

Query. Query (Interrogazioni) SQL SQL. Significato dell interrogazione. Sintassi Query (Interrogazioni) Ultima modifica: 5/4/2012 SQL Materiale aggiuntivo per il corso di laurea in Lingue e Culture per il Turismo classe L-15! È necessario un modo per interrogare le basi di dati, cioè

Dettagli

Organizzazione degli archivi

Organizzazione degli archivi COSA E UN DATA-BASE (DB)? è l insieme di dati relativo ad un sistema informativo COSA CARATTERIZZA UN DB? la struttura dei dati le relazioni fra i dati I REQUISITI DI UN DB SONO: la ridondanza minima i

Dettagli

Il linguaggio SQL: viste e tabelle derivate. Versione elettronica: SQLd-viste.pdf

Il linguaggio SQL: viste e tabelle derivate. Versione elettronica: SQLd-viste.pdf Il linguaggio SQL: viste e tabelle derivate Versione elettronica: SQLd-viste.pdf DB di riferimento per gli esempi Imp Sedi CodImp Nome Sede Ruolo Stipendio Sede Responsabile Citta E001 Rossi S01 Analista

Dettagli

PROGRAMMA DI CLASSE 5AI

PROGRAMMA DI CLASSE 5AI Istituto di Istruzione Superiore Euganeo Istituto tecnico del settore tecnologico Istituto professionale del settore servizi socio-sanitari Istituto professionale del settore industria e artigianato PROGRAMMA

Dettagli

Structured Query Language. Informatica Generale - SQL Versione 1.0, aa 2005-2006 p.1/172

Structured Query Language. Informatica Generale - SQL Versione 1.0, aa 2005-2006 p.1/172 Structured Query Language Informatica Generale - SQL Versione 1.0, aa 2005-2006 p.1/172 Linguaggio SQL (1) Il linguaggio SQL, acronimo di Structured Query Language è un linguaggio per la definizione e

Dettagli

Basi di Dati prof. Letizia Tanca lucidi ispirati al libro Atzeni-Ceri-Paraboschi-Torlone. SQL: il DDL

Basi di Dati prof. Letizia Tanca lucidi ispirati al libro Atzeni-Ceri-Paraboschi-Torlone. SQL: il DDL Basi di Dati prof. Letizia Tanca lucidi ispirati al libro Atzeni-Ceri-Paraboschi-Torlone SQL: il DDL Parti del linguaggio SQL Definizione di basi di dati (Data Definition Language DDL) Linguaggio per modificare

Dettagli

Corso di Laurea in Ingegneria Informatica Algoritmi e basi di dati Modulo Basi di dati a.a. 2011-2012

Corso di Laurea in Ingegneria Informatica Algoritmi e basi di dati Modulo Basi di dati a.a. 2011-2012 Corso di Laurea in Ingegneria Informatica Algoritmi e basi di dati Modulo Basi di dati a.a. 2011-2012 2012 Docente: Gigliola Vaglini Docente laboratorio: Alessandro Lori 1 Lezione 3 Structured Query Language

Dettagli

Introduzione ai database relazionali

Introduzione ai database relazionali Introduzione ai database relazionali Tabelle Un database (DB) è costituito da un insieme di file che memorizzano dati opportunamente organizzati Nei database relazionale tale organizzazione è costituita

Dettagli

Elementi di Algebra Relazionale

Elementi di Algebra Relazionale Note dalle lezioni di INFORMATICA (per gli allievi della classe quinta - indirizzo MERCURIO) Elementi di Algebra Relazionale prof. Stefano D.L.Campanozzi I.T.C. Giulio Cesare Bari - a.s. 2008-2009 1 Introduzione

Dettagli

Il linguaggio SQL: trigger. Versione elettronica: 04.7.SQL.trigger.pdf

Il linguaggio SQL: trigger. Versione elettronica: 04.7.SQL.trigger.pdf Il linguaggio SQL: trigger Sistemi Informativi T Versione elettronica: 04.7.SQL.trigger.pdf DBMS attivi Un DBMS si dice attivoquando dispone di un sottosistema integrato per definire e gestire regole I

Dettagli

2104 volume III Programmazione

2104 volume III Programmazione 2103 SQLite Capitolo 77 77.1 Utilizzo generale................................. 2104 77.1.1 Utilizzo di sqlite3».......................... 2104 77.1.2 Copie di sicurezza............................ 2106

Dettagli

DATABASE RELAZIONALI

DATABASE RELAZIONALI 1 di 54 UNIVERSITA DEGLI STUDI DI NAPOLI FEDERICO II DIPARTIMENTO DI DISCIPLINE STORICHE ETTORE LEPORE DATABASE RELAZIONALI Dott. Simone Sammartino Istituto per l Ambiente l Marino Costiero I.A.M.C. C.N.R.

Dettagli

Corso di Basi di Dati A.A. 2013/2014

Corso di Basi di Dati A.A. 2013/2014 Corso di Laurea in Ingegneria Gestionale Sapienza Università di Roma Corso di Basi di Dati A.A. 2013/2014 Tiziana Catarci, Andrea Marrella Ultimo aggiornamento : 29/03/2014 SQL : Structured Query Language

Dettagli

Informatica per le discipline umanistiche 2 lezione 10

Informatica per le discipline umanistiche 2 lezione 10 Informatica per le discipline umanistiche 2 lezione 10 Parte III: il computer come strumento per l interazione e la comunicazione Si è parlato di identità Parte III: il computer come strumento per l interazione

Dettagli

Basi di Dati 1 Prof. L. Tanca e F. A. Schreiber APPELLO DEL 9 SETTEMBRE 2015 Tempo: 2h30m

Basi di Dati 1 Prof. L. Tanca e F. A. Schreiber APPELLO DEL 9 SETTEMBRE 2015 Tempo: 2h30m Basi di Dati 1 Prof. L. Tanca e F. A. Schreiber APPELLO DEL 9 SETTEMBRE 2015 Tempo: 2h30m Si consideri il seguente schema di base di dati, che vuole memorizzare informazioni relative a un sito di affitto

Dettagli

ECDL - Database. European Computer Driving Licence - Modulo 5 - Database LEZIONE 2

ECDL - Database. European Computer Driving Licence - Modulo 5 - Database LEZIONE 2 ECDL - Database European Computer Driving Licence - Modulo 5 - Database LEZIONE 2 Ripasso Introduzione - Ripasso Cosa si intende per dbms? e cosa per database? Quali sono gli elementi che lo compongono?

Dettagli

OSSIF WEB. Manuale query builder

OSSIF WEB. Manuale query builder OSSIF WEB Manuale query builder - Maggio 2010 1) Sommario 1) SOMMARIO... 2 INTRODUZIONE... 3 Scopo del documento... 3 Struttura del documento... 3 Descrizione dell interfaccia grafica... 3 SELEZIONE DI

Dettagli

Il Domino Character Il domino CHARACTER permette di definire attributi che contengono un singolo carattere o stringhe di caratteri di lunghezza

Il Domino Character Il domino CHARACTER permette di definire attributi che contengono un singolo carattere o stringhe di caratteri di lunghezza Linguaggio SQL (1) Il linguaggio SQL, acronimo di Structured Query Language è un linguaggio per la definizione e la manipolazione dei dati, sviluppato originariamente presso il laboratorio IBM a San Jose

Dettagli

Vincoli di integrità

Vincoli di integrità Vincoli di integrità Non tutte le istanze di basi di dati sintatticamente corrette rappresentano informazioni plausibili per l applicazione di interesse Studenti Matricola Nome Nascita 276545 Rossi 23-04-72?

Dettagli

Tipi numerici esatti Valori interi o con parte decimale di lunghezza prefissata

Tipi numerici esatti Valori interi o con parte decimale di lunghezza prefissata Domini Tipi numerici esatti Valori interi o con parte decimale di lunghezza prefissata numeric [(Precisione [,Scala])] decimal [(Precisione [,Scala])] integer smallint Precisione specifica il numero di

Dettagli

Basi di Dati Relazionali

Basi di Dati Relazionali Corso di Laurea in Informatica Basi di Dati Relazionali a.a. 2009-2010 Laboratorio Ing. G. Laboccetta Dott.ssa. V. Policicchio Coadiutore: Dott.ssa D. Nicotera PROGETTAZIONE FISICA SQL-DDL OBIETTIVO: Rappresentare

Dettagli

Basi di Dati Corso di Laura in Informatica Umanistica

Basi di Dati Corso di Laura in Informatica Umanistica Basi di Dati Corso di Laura in Informatica Umanistica Appello del 10/09/2010 Parte 1: Algebra Relazionale e linguaggio SQL Docente: Giuseppe Amato Sia dato il seguente schema di base di dati per la gestione

Dettagli

Archivi e Basi di Dati

Archivi e Basi di Dati Archivi e Basi di Dati A B C File Programma 1 Programma 2 A B C File modificati Programma 1 DBMS DB Programma 2 Informatica Generale (CdL in E&C), A.A. 2000-2001 55 Problemi nella gestione di archivi separati

Dettagli

Informatica Generale Andrea Corradini. 19 - Sistemi di Gestione delle Basi di Dati

Informatica Generale Andrea Corradini. 19 - Sistemi di Gestione delle Basi di Dati Informatica Generale Andrea Corradini 19 - Sistemi di Gestione delle Basi di Dati Sommario Concetti base di Basi di Dati Il modello relazionale Relazioni e operazioni su relazioni Il linguaggio SQL Integrità

Dettagli

Azioni. Select e join non consentono di modificare il contenuto del DB. Inserzione di nuovi dati. Azioni desiderate. Aggiornamento di dati

Azioni. Select e join non consentono di modificare il contenuto del DB. Inserzione di nuovi dati. Azioni desiderate. Aggiornamento di dati Azioni Select e join non consentono di modificare il contenuto del DB Azioni desiderate Inserzione di nuovi dati Aggiornamento di dati Cancellazione di dati Aggiunta di un record insert into utenti(nome,tel,codice_u)

Dettagli

Domini Numerici Esatti (1) I domini numerici esatti permettono di definire attributi che contenegono valori esatti interi o con parte frazionaria.

Domini Numerici Esatti (1) I domini numerici esatti permettono di definire attributi che contenegono valori esatti interi o con parte frazionaria. Linguaggio SQL (1) Il linguaggio SQL, acronimo di Structured Query Language è un linguaggio per la definizione e la manipolazione dei dati, sviluppato originariamente presso il laboratorio IBM a San Jose

Dettagli