CAPITOLO 5: DATABASE INTRODUZIONE

Save this PDF as:
 WORD  PNG  TXT  JPG

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "CAPITOLO 5: DATABASE INTRODUZIONE"

Transcript

1 CAPITOLO 5: DATABASE INTRODUZIONE Una base di dati (o database) è semplicemente una collezione di dati organizzati in qualche modo e con qualche criterio. Il modello più diffuso è quello relazionale, ovvero basato sulle tabelle, mentre ci sono database a oggetti, nati appunto con lo sviluppo della programmazione ad oggetti. Comunque quello che ci interesserà esaminare è il più diffuso database relazionale. Molte persone, ancora oggi, utilizzano per immagazzinare dei dati in modo ordinato un'unica tabella, per esempio di un foglio di calcolo, mettendo un titolo ad ogni campo ( = attributo) e riempiendo le righe sotto della tabella ( = tuple) con i dati di interesse, creando un enorme tabellone, dove i dati sono confusi, male ordinati e ridondanti (ovvero ci sono delle ripetizioni). Quello che si può fare intuitivamente è dividere questo tabellone in sottotabelle e collegarle mediante relazioni, servendosi di un RDBMS (Relational Database Management System mysql, oracle, ) o di un programma come Access. Questo processo di progettazione non è complicato, ma esula dallo scopo di questo capitolo, dove facciamo un esempio semplice di realizzazione di un semplice database (non attraverseremo tutte le fasi della progettazione). SPECIFICA DEL PROBLEMA Vogliamo creare un database per la gestione di un campionato di fantacalcio, che deve tener conto delle squadre, dei giocatori e dei dati relativi ai fanta-allenatori e di cui ci interessa data di inizio e di fine. Per gli allenatori ci interessa conoscere nome, cognome e recapito ; dei giocatori ci interessano nome, cognome, ruolo, costo e squadra di appartenenza; per ogni squadra deve essere disponibile il numero dei giocatori e il budget disponibile.

2 Dalla specifica del problema possiamo individuare le entità e le relazioni tra le entità (modello relazionale). Un entità è un oggetto del mondo reale che ha determinate proprietà e che noi possiamo associare concettualmente ad una tabella; le relazioni sono quelle che legano due o più entità. Possiamo disegnare uno schema che ci mostri le entità, i loro attributi e le relazioni (indicate come sostantivi e non verbi) tra di esse: questo schema prende il nome di diagramma E-R e rappresenta le entità come dei rettangoli e le relazioni come dei rombi, collegati per mezzo di linee. Sulle linee è indicata la cardinalità. Prendiamo per esempio la relazione appartenenza tra squadra e giocatore. Un giocatore può appartenere ad una sola squadra (cosa che dovrebbe essere specificata nelle specifiche), da cui la relazione uno a uno; ad una squadra, invece, possono appartenere più giocatori, da cui la relazione uno a molti. Ci sono anche esempi di relazione molti a molti, come per esempio quella tra studenti ed esami, o relazioni con partecipazione opzionale; uno studente potrebbe non aver svolto alcun esame e dunque è più corretta una relazione come la seguente: Avevamo detto che in uno schema E-R sono indicati anche degli attributi: nel mio schema non li ho indicati semplicemente per chiarezza, ma naturalmente sappiamo quali possono essere dalle specifiche. C è comunque un attributo che è il più importante di tutti, quello che rende differente una tupla da un altra, ovvero la chiave. Una chiave è un attributo come il codice fiscale, il quale identifica (o almeno dovrebbe ho sentito di casi strani) una tupla specifica. Una chiave si definisce come superchiave minimale, dove una superchiave è un insieme di attributi che individua univocamente una tupla in una tabella. Facciamo un esempio MATRICOLA CODICE FISC. NOME COGNOME VOTO 1000 AAA Pippo Pippo BBB Pluto Pluto 4 Una superchiave è per esempio quella costituita da tutti gli attributi della tupla, però anche i primi quattro attributi bastano a distinguere tra due tuple, anche i primi tre, anche i primi due e anche il primo o il secondo da solo. Una superchiave minimale è quella con meno attributi e dunque noi abbiamo due possibili chiavi: infatti o la matricola o il codice fiscale possono per noi assumere il ruolo di chiave. Il modo più semplice per avere una chiave è inserire un nuovo attributo come identificatore posizionale(id), ovvero una specie di colonna come quella che indica la riga in un foglio di calcolo. Mettiamo di avere il seguente database (il titolo della tabella è quello esterno e all interno delle parentesi ci sono i vari attributi colonne): Studente(Matricola, Nome, Cognome); Esame(Studente, Voto, Lode, Corso); Corso(Codice, Titolo, Professore); per individuare la chiave sottolineiamo gli attributi che la compongono: Studente(Matricola, Nome, Cognome); Esame(Studente, Voto, Lode, Corso); Corso(Codice, Titolo, Professore);

3 Mentre la matricola e il codice da soli sono sufficienti ad essere chiavi delle rispettive tabelle, lo studente e il corso sono entrambi attributi necessari a definire una tupla: uno studente può fare più esami, ma non farà più volte lo stesso. Studente(Matricola, Nome, Cognome); Esame(Studente, Voto, Lode, Corso); Corso(Codice, Titolo, Professore); Guardiamo la tabella esame essa è legata a Studente e a Corso, mediante due attributi che ricordano il nome delle tabelle. Abbiamo cioè tradotto in tabelle quello schema e le relazioni le abbiamo inserite nella tabella esame. È come se avessimo un puntatore alle tabelle, o meglio alle loro chiavi. Vediamo il seguente schema che ci indica le relazioni tra le tabelle. Quindi Esame sarà collegato allo studente mediante la sua chiave, che è la sua matricola e esame sarà collegato a corso mediante la sua chiave codice. Nella tabella esame dunque Studente e Corso non possono essere vuoti (ovvero avere valore NULL), per cui saranno attributi not null (che non possono avere valore nullo). Questo è un vincolo sia di chiave (perché è la chiave della relazione) sia di riferimento (perché sono riferimenti ad altre tabelle). Altri vincoli possono essere che se il Voto non è 30, non si può avere la lode (anche se sarebbe bello 18 e lode ) e si dicono di tupla.

4 Torniamo al nostro fantacalcio e trasformiamo le entità in tabelle: Campionato(id,nome,data_inizio,data_fine) Squadra(id,nome,numero_giocatori) Giocatore(id,nome,cognome,ruolo,costo) Allenatore(id,nome,cognome, ) Per semplificare le relazioni tra le tabelle abbiamo definito una chiave minimale (ovvero composta da un solo attributo) e semplice da ricordare, ovvero abbiamo aggiunto (come detto prima) un contatore del numero di tuple inserite, il quale andrà ad identificarle univocamente. Gli attributi dovrebbero essere tutti contenuti nelle specifiche, ma possiamo anche dedurle da un analisi personale. Ora dobbiamo tradurre le relazioni tra le tabelle, se anche loro hanno degli attributi, potrebbero divenire anch esse tabelle. Partecipazione viene tradotta Squadra(id,nome,numero_giocatori,Campionato); Gestione può essere tradotta con Allenatore(id,nome,cognome, ,Squadra); oppure Squadra(id,nome,numero_giocatori,Allenatore); Appartenenza viene tradotta con Giocatore(id,nome,cognome,ruolo,costo,Squadra); Come si nota abbiamo tradotto le relazioni (1,1)<--->(1,N) includendo dalla parte (1,1) un riferimento alla parte (1,N), lo stesso valeva per (0,1) e (0,N), ma l attributo non avrebbe potuto far parte (come prima nella tabella esame) della chiave della tabella. Se la relazione aveva qualche attributo, esso viene trasferito dal lato (1,1). L unica relazioni (1,1)<--->(1,1) la possiamo tradurre creando un attributo di riferimento in una o in un altra tabella (come ci fa più comodo) all altra tabella. Gli attributi eventuali di una relazione vengono messi dove è stata messo il riferimento esterno. Nel nostro caso non si creano nuove tabelle che realizzano una relazione, ma se avessimo avuto una relazione (1,N)<--->(1,N) avremmo creato una nuova tabella a cui avremmo dato il nome della relazione e avremmo scritto: Relazione(Chiave1,Chiave2,Attributi_Relazione); e collegato così le due tabelle. Nel nostro caso tutte le tabelle hanno come chiave l attributo id (identificativo) e per collegare due tuple (riferimento esterno) basta inserire nella cella relativa alla relazione della prima entità l identificativo di quella della seconda: in questo modo tutto diviene più semplice. Abbiamo dunque concluso che le nostre tabelle saranno le seguenti: Campionato(id,nome,data_inizio,data_fine) Squadra(id,nome,numero_giocatori,Campionato); Allenatore(id,nome,cognome, ,Squadra); Giocatore(id,nome,cognome,ruolo,costo,Squadra);

5 ALGEBRA RELAZIONALE E SQL L algebra relazionale è un linguaggio di tipo procedurale, basato su concetti algebrici; è basato su un insieme di operatori che hanno come dominio e codominio relazioni. Alcuni operatori sono quelli insiemistici: unione, intersezione, differenza. L unione di due relazioni aventi gli stessi attributi è una nuova relazione che le incorpora entrambe, ovvero è un operatore che prende le tuple comuni e non comuni una sola volta. Consideriamo le due tabelle Unione: (Elenco A) U (Elenco B) L intersezione di due relazioni aventi gli stessi attributi è una nuova relazione che comprende solo le tuple comuni. Intersezione: (Elenco A) (Elenco B) La differenza elimina dalla tabella a sinistra le tuple che ha in comune con la tabella a destra, ovvero le sottrae. Differenza: (Elenco B) (Elenco A) L operatore di ridenominazione è quell operatore che rinomina un attributo, così che la tabella possa prendere parte, per esempio, ad un unione.

6 Ridenominzione: ρesame Corso L operatore di selezione, è un operatore che, appunto, seleziona le tuple che rispettano determinate condizioni, le quali possono essere espresse anche mediante la logica delle preposizioni (algebra di Boole) e anche in termini di algebra normale (minore, maggiore, uguale, ). Selezione: σcorso = Geometria Consideriamo la tabella otteniamo L operatore di proiezione, è un operatore che divide verticalmente la tabella, ovvero considera solo le colonne di alcuni attributi. Proiezione: ПMatricola, Nome (σcorso = Geometria) Qui facciamo prima una selezione, ovvero estraiamo delle tuple (tagliamo orizzontalmente), poi facciamo una proiezione, ovvero prendiamo solo gli attributi che ci interessano (tagliamo verticalmente). Dunque gli operatori possono esser usati in successione. OPERATORE DI JOIN

7 Il join è la più importante operazione dell algebra relazionale e consiste sostanzialmente nel fondere due tabelle in una, correlando i dati delle due relazioni. Esistono sostanzialmente due tipi di join: join naturale (teorico) e theta-join (pratico). JOIN NATURALE Vediamo con un esempio cos è in sostanza il join naturale. Consideriamo queste due tabelle Consideriamo ora il prodotto cartesiano di queste due tabelle, ovvero per ogni riga della prima tabella (A) gli aggiungiamo le righe della tabella a sinistra (B). Prodotto cartesiano: A B Consideriamone ora il join naturale: A B Come vediamo il join naturale prende dal prodotto cartesiano le uniche righe che hanno l attributo corso in comune e correla i dati contenuti nelle due relazioni in modo logico, ovvero ad uno studente di fisica, viene fatto corrispondere il docente del corso di fisica. Lo stesso sarebbe avvenuto se per esempio avessimo avuto: Studenti(Matricola,Studente,Corso); Corsi(id,Nome_Corso,Docente);

8 in questo caso nella relazione studenti Corso, corrispondeva ad id e dunque possiamo immaginare di far precedere una ridenominazione, ottenendo una cosa del genere: Studenti (ρ Corso id (Corsi)) ottenendo una tabella che contiene Risultato(Matricola,Studente,Corso,Nome_Corso,Docente) con una proiezione poi possiamo eliminare l identificatore del corso e far rimanere per esempio solo il nome: ottenendo П Matricola,Studente,Nome_Corso,Docente (Risultato) Risultato(Matricola,Studente,Nome_Corso,Docente) Riassumendo quello che abbiamo fatto è: П Matricola,Studente,Nome_Corso,Docente (Studenti (ρ Corso id (Corsi))) Nel nostro caso abbiamo visto l esempio di un join completo, ovvero tutte le tuple prendono parte al join, ma consideriamo per esempio Avremo lo stesso risultato del join precedente, ma in questo caso la tupla B( Geografia, Peppe ) non prenderà parte al join, e dunque avremo un join incompleto. La tuple che non prendono parte al join sono dette tuple dangling. Nel caso non ci sia nessuna correlazione trai dati delle due tabelle, allora il join darà come risultato una tabella vuota e il join è un join vuoto, come per le relazioni che seguono:

9 Nel caso abbiamo tuple dangling nell una o nell altra tabella o in entrambe, possiamo utilizzare un particolare join, detto esterno, che va a sostituire con il valore NULL (se non ci sono vincoli che lo impediscono) le celle che non dovrebbero far parte del join. Esistono vari tipi di join esterno: sinistro, destro e completo. Consideriamo le seguenti tabelle Come possiamo vedere, quando andiamo a fare un join, ci saranno tuple dangling, che per comodità ho messo per ultime in entrambe le tabelle. Ora vediamo i risultati dei vari tipi di join tra queste due tabelle. Join destro: MEDICINALI RIGHT FORNITORE Join sinistro: MEDICINALI LEFT FORNITORE Join completo: MEDICINALI FULL FORNITORE THETA-JOIN ED EQUI-JOIN

10 Il theta-join in sostanza serve a realizzare un join tra due tabelle senza attributi omonimi (ovvero con lo stesso nome). Esso è un operatore derivato e si ottiene come prodotto cartesiano seguito da un operazione di selezione delle tuple che verificano una certa condizione tra i valori di due attributi, come detto prima, non omonimi. Se la condizione legata al theta-join è di uguaglianza, allora l operatore prende il nome di equi-join. Quindi il theta-join (o meglio l equi-join) permette di fare il join tra le seguenti tabelle, dove gli attributi Esame e Corso, non sono omonimi, ma sono evidentemente collegati ora l equi-join: A Esame = Corso B, esso sarà il prodotto cartesiano tra le due tabelle seguito da un opportuna selezione, ovvero σesame = Corso (e anche una proiezione che elimini corso): VISTE (CENNI) Una vista è una relazione definita su relazioni di schema logico (una tabella che contiene tuple di più tabelle collegate). Si distingue tra viste materializzate, ovvero tuple memorizzate da qualche parte in un database, e viste virtuali, memorizzate in un database mediante un interrogazione (selezione, join, proiezione ) che dà come risultato quella tabella (quindi non c è niente di fisico). Una vista materializzata ha lo svantaggio, in quanto tale, di occupare spazio e di dover essere aggiornata, ma ha il vantaggio di essere disponibile come una normale tabella. Una vista virtuale ha il vantaggio di non occupare spazio in memoria, ma lo svantaggio di dover essere ricreata ad ogni utilizzo rubando tempo processore. Si effettua una scelta a seconda della dimensione del database e del tempo richiesto per l accesso. SQL

11 Per interrogare, con l algebra vista prima, un DBMS, si utilizza il linguaggio SQL (Structured Query Language). Questo linguaggio si compone di comandi dedicati alla creazione di database (DDL) e di una parte delegata alla loro interrogazione o aggiornamento (DML). Ci sono varie versioni di SQL, ma la più utilizzata è la versione SQL-2 (92), ma attualmente c è la SQL-3, meglio conosciuta come SQL-99, che introduce tante funzionalità rispetto alla precedente, e che è compatibile con le precedenti. Sarò molto schematico in questa introduzione al linguaggio, dopo faremo un esempio da sviluppare con Access e uno con MySql. TIPI DI DATO (DOMINI) Char Varchar varchar2 Bit Varbit Numerical Decimal Integer Smallint Float Real Double Precision Date Time Timestamp Interval Boolean Blob Clob SQL-2 Variabile carattere Variabile carattere Variabile carattere Variabile bit Variabile bit Variabile numerica Variabile decimale Variabile intera Variabile intera short Variabile reale a singola precisione Variabile reale Variabile reale a doppia precisione Variabile che contiene una data Variabile che contiene un ora Variabile che contiene un ora Variabile intervallo di tempo SQL-99 Variabile booleana Oggetti di grandi dimensioni contenenti valori binari (file) Oggetti di grandi dimensioni contenenti valori carattere CREARE UNA TABELLA create table nome_tabella ( nome_attributo tipo(n) vincoli,... ); per esempio, per un agenda telefonica andiamo a creare una tabella nominativo create table nominativo_agenda( id int(5) not null, nome char(20), cognome char(20), telefono char(10), primary key(id) ); DICHIARAZIONE DI VINCOLI

12 I vincoli intra-relazionali (ovvero pertinenti alla tabella relazione stessa) possono essere not null Inique Primary key VINCOLI INTRARELAZIONALI L attributo non può assumere valore NULL L attributo deve essere unico, ovvero nessun altro può assumere lo stesso valore nella tabella L attributo è la chiave primaria della tabella Un altro modo di indicare che l attributo appartiene alla chiave è il seguente (modo equivalente) create table nominativo_agenda( id int(5) primary key, nome char(20), cognome char(20), telefono char(10), ); I vincoli possono essere anche iter-relazionali (ovvero pertinenti ad attributi che collegano due tabelle). Prendiamo, per esempio, un elenco dei dipendenti collegato alla relazione nominativo_agenda creata precedentemente (naturalmente il riferimento a questa tabella verrà creato tramite il parametro id ). create table dipendenti ( id int(5) not null, mansione char(20) not null, nominativo int(5) references nominativo_agenda(id), primary key(id) ); dunque dobbiamo utilizzare la parola chiave references e far seguire nome_tabella(attributo) a cui collegarla, in modo equivalente possiamo scrivere: create table dipendenti ( id int(5) not null, mansione char(20) not null, nominativo int(5) not null, primary key(id), foregin key (id) references nominativo_agenda(id) ); Può accadere che se cancelliamo(delete) una tupla dalla tabella nominativo_agenda, una tupla della tabella dipendenti potrebbe avere un riferimento a qualcosa che non esiste; la stessa potrebbe accadere se aggiorniamo(update) una tupla. Quello che dobbiamo fare è definire l azione da intraprendere nel caso si verifichi una cosa del genere: la sintassi è la seguente on [ delete update ] [cascade set null set default no action] cascade set null set default no action Elimina a cascata le tuple Setta a null (secondo i vincoli intra-relazionali) l attributo Setta ad un valore di default l attributo Non fa niente

13 create table dipendenti ( id int(5) not null, mansione char(20) not null, nominativo int(5) not null, primary key(id), foregin key (id) references nominativo_agenda(id) on delete cascade on update no action ); MODIFICA DEGLI SCHEMI Mediante i comandi alter e drop possiamo effettuare una modifica o la cancellazione di qualcosa. alter table nome_tabella alter column...; alter table nome_tabella add constraint...; alter table nome_tabella drop constraint...; alter table nome_tabella add column nome_attributo tipo(n); alter table nome_tabella drop column nome_attributo; drop table nome_tabella [restrict cascade]; restrict cascade Non rimuove la tabella se è collegata a qualcosa Rimuove tutto INTERROGAZIONI (QUERY) Un interrogazione in sql, meglio conosciuta come query sql, permette di ottenere delle informazioni dal DBMS su qualsiasi aspetto del database: elenco dati contenuti, join tra tabelle, contare elementi di una certa colonna, etc Una volta inviata una query ad un DBMS, viene ritradotta, ottimizzata, eseguita e ci viene mostrato un risultato sotto forma di tabella.

14 Il comando utilizzato per realizzare una query è select. Una query select (o meglio una select ), prevede la seguente sintassi select attributo1,attributo2, from tabella; (corrisponde ad una proiezione) select * from tabella; (elenca tutte le tuple, con tutti gli attributi) dopo la tabella si può inoltre inserire una condizione che permette di eseguire un operazione di selezione, utilizzando il comando where. select attributi from tabella where condizioni; Più condizioni possono essere legate dagli operatori booleani (and, or, not) e inoltre sono validi i seguenti operatori OPERATORE DESCRIZIONE = uguale < minore > maggiore <= minore uguale >= maggiore uguale <> diverso is null(...) è NULL is not null(...) non è NULL like (...) assomiglia Supponiamo di avere la tabella impiegato(matricola,nome,cognome,età) e di voler trovare gli impiegati che devono andare in pensione (ovvero quelli che superano i 65 anni): select matricola from impiegato where età > 65; Se invece vogliamo trovare la matricola di un impiegato, avendo nome e cognome, possiamo scrivere select matricola from impiegato where nome = nome and cognome = cognome ; se invece vogliamo le persone che hanno tutti il nome che comincia per nic e un cognome che cominci per a e finisca per a basta effettuare la seguente select select nome,cognome from impiegato where nome like nic% and cognome like a%a l operatore like si utilizza quando si vuole fare una select del genere e % sta per una stringa di caratteri qualsiasi, metre se vogliamo sostituire solo un carattere, per esempio per vedere gli impiegati che si chiamano Mario o Maria, dobbiamo utilizzare il carattere di underscore _ : select nome,cognome from impiegato where nome like Mari_ ; Supponiamo di voler fare un sondaggio riguardo a quali sono i nomi degli impiegati, dobbiamo elencare tutti i nomi presi una sola volta. Dobbiamo utilizzare la parola chiave distinct (attributi), la quale elimina le tuple duplicate: select distinct(nome) from impiegati;

15 CREAZIONE DI DATABASE E QUERY SQL CON ACCESS Prima di andare avanti e completare quanto fino adesso detto sulla select, dovrete esercitarvi in qualche modo. Ora, dato che non tutti hanno la possibilità di scaricare da internet mysql oppure oracle o qualsiasi altro DBMS, ci serviremo di Access. Access, presente nella maggior parte dei computer, è un programma di database. Ci permette di creare tabelle e di definire relazioni tra di esse, di effettuare query, creare maschere e tante altre belle cose. Quello che intendo realizzare è il database fantaclacio proposto prima; a voi lascio il compito di effettuare qualche query in modo da allenarvi per quello che andrò a spiegare dopo. Dopo aver avviato Access ed aver creato un nuovo database chiamato fantacalcio.mdb, potremmo creare le nostre tabelle semplicemente in visualizzazione struttura o comunque ci venga in mente, ma noi lo facciamo con il nostro amato SQL. Eravamo arrivati, dopo una lunga analisi a riassumere il nostro database nelle seguenti tabelle: Campionato(id,nome,data_inizio,data_fine) Squadra(id,nome,numero_giocatori,Campionato); Allenatore(id,nome,cognome, ,Squadra); Giocatore(id,nome,cognome,ruolo,costo,Squadra); Ora in visualizzazione struttura, basterebbe crearle una ad una inserendo il nome dell attributo, il suo tipo e (se ci và, per chiarezza) la sua descrizione abbiamo così un modo semplice e veloce di creare delle tabelle e definire (tramite il pannello in basso non in figura) i vincoli di tupla, l attributo che funge da chiave, etc Poi vedremo come creare delle relazioni. Per creare una tabella in SQL dobbiamo creare una nuova query e quando si entra in modalità creazione mediante visualizzazione bisogna cercare nella barra degli strumenti il tasto sql. A quel punto comparirà una finestra dove andremo a scrivere la nostra query. Access non prevede (per quanto so) il pieno supporto all sql, e mentre di solito una stringa nei comuni DBMS è dichiarata come varchar2, in Access dovremo utilizzare char, per gli interi int e così via Per maggiori informazioni consultate la guida in linea :-)

16 Una volta premuto in pulsante SQL scriviamo la nostra query e la salviamo come crea tabella campionato (il tipo di query da selezione diventerà di definizione dei dati). CREATE TABLE Campionato( id int primary key, nome char(20) not null, data_inizio char(10), data_fine char(10) ) Possiamo ora eseguire la nostra query facendo semplicemente doppio click, oppure visualizzarla selezionandola e facendo click sul pulsante struttura (o in modi equivalente col tasto destro ). Creiamo ora tutte le nostre tabelle mediante apposite query, facendo attenzione a non definire prima le tabelle che devono riferirsi ad altre, senza aver creato quelle a cui devono riferirsi (i computer non prevedono il futuro ); inoltre, dopo aver creato una query bisogna eseguirla, altrimenti non creeremo la tabella e quando Access cercherà di collegare due attributi di due tabelle diverse, non saprà cosa fare e griderà allo scandalo. Sappiamo che la tabella squadra è collegata alla tabella campionato, dunque dobbiamo creare prima la tabella campionato. Poiché la tabella campionato non è legata a nient altro, procediamo.

17 Sappiamo che le tabelle giocatore e allenatore sono collegate alla tabella squadra (e mediante di essa sono anche collegati tra di loro), e dato che i riferimenti per la tabella squadra sono soddisfatti, procediamo alla sua creazione. Non ci saranno poi problemi per le altre due tabelle. create table Campionato( id int primary key, nome char(20) not null, data_inizio char(10), data_fine char(10) ) create table Squadra ( id int primary key, nome char(20) not null, numero_giocatori int, Campionato int references Campionato(id) ) create table Giocatore ( id int primary key, nome char(20) not null, cognome char(20) not null, ruolo char(2) not null, costo float not null, Squadra int references Squadra(id) ) create table Allenatore ( id int primary key, nome char(20) not null, cognome char(20) not null, char(20) not null, Squadra int references Squadra(id) ) Se apriamo la finestra delle relazioni, mediante l apposito tasto o il menù e poi (col tasto destro) facciamo mostrare tutte le relazioni, otteniamo una cosa del genere, che assomiglia allo schema fatto all inizio. Se abbiamo creato le tabelle mediante la creazione struttura questa finestra ci sarà

18 utile per definire le relazioni tra le tabelle. Per farlo (la prima volta) basterà aggiungere tutte le tabelle e in seguito trascinare gli attributi su quelli collegati (ci sono molti tutorial in rete). INSERIMENTO DEI DATI IN SQL Per inserire i dati in una tabella, si utilizza il seguente comando SQL insert into tabella [(attributi)] values (...); insert into tabella (query); dove possiamo mettere un elenco di attributi se vogliamo non inserirne qualcuno opzionale e possiamo inserire in questa tabella o una tupla alla volta mediante l opzione values, oppure inserire nella tabella il risultato di una select. Inseriamo un po di dati nelle tabelle del nostro database del fantacalcio. insert into Campionato(id,nome) values(1,'coppa del nonno'); possiamo farlo perché data_inizio e data_fine, sono opzionali, ovvero possono assumere valore NULL. insert into Squadra(id,nome,Campionato) values (1,'Napoli',1); insert into Squadra(id,nome,Campionato) values (2,'Caserta',1); insert into Squadra(id,nome,Campionato) values (3,Avellino',1); insert into Squadra(id,nome,Campionato) values (4,'Salerno',1); NOTA: Perché ometto numero_giocatori? No, non per pigrizia. Essendo un database piccolo l attributo è superfluo, in quanto il numero giocatori può essere ricavato mediante un conteggio (operazione prevista dall SQL) in modo molto semplice. Lo facciamo per ridurre lo spazio occupato dal database ed evitare errori di aggiornamento. Quel numero_giocatori, però potrebbe essere utilizzato da un programma per velocizzare delle operazioni, senza dover richiedere per forza un conteggio. Dobbiamo naturalmente analizzare cosa conviene e non conviene fare, poi progettare in modo appropriato (secondo regole che non intendo trattare qui, altrimenti ci vorrebbero troppe pagine). insert into Allenatore values (1, Pippo, Esposito, insert into Allenatore values (2, Peppe, Menna, insert into Allenatore values (3, Ciro, Napolitano, insert into Allenatore values (4 Peppe, Cece,

19 inseriamo ora alcune tuple d esempio nella tabella giocatore (inseritele anche voi con visualizzazione struttura, è più bello ) NOTA: in questo database non è prevista la presenza di giocatori che non appartengono ad una squadra, per cui avremmo potuto dichiarare (per correttezza logica) l attributo Squadra come not null, il che, appunto, non permetterebbe di inserire giocatori nel database se non appartenenti ad una squadra. In questo caso l attributo Squadra può assumere come valore NULL oppure un id valido nella tabella Squadra. CANCELLAZIONE DEI DATI IN SQL Se vogliamo cancellare una tupla mediante una query SQL utilizziamo il comando delete. delete form tabella where condizione; cancella tutte le tuple che rispettano quella condizione delete from tabella; cancella solo le tuple e non lo schema della tabella, che continuerà ancora ad esistere, per effettuare questa operazione utilizziamo drop (visto prima).

20 MODIFICA DEI DATI IN SQL update tabella set attributo = [valore query default NULL]... where condizione per esempio, supponiamo di voler modificare un indirizzo scritto male update Allenatore set = where id = 1; JOIN IN SQL L operazione di join in SQL si realizza mediante la select. Si possono realizzare tutti i tipi di join (completo, sinistro, destro) in modo molto semplice. select attributi from tab1,tab2 where tab1.attrib = tab2.attrib dove tab1 e tab2 sono le due tabelle su cui eseguire l equi-join. Ma possiamo anche scrivere select attributi from tab1 join tab2 on tab1.attrib = tab2.attrib Se vogliamo un altro tipo di join, basta scriverlo esplicitamente select attributi from tab1 [right left full] join tab2 on... il join naturale non è supportato dai DBMS, avevamo detto prima che non si usa nella pratica. I join destro, sinistro e completo possono inoltre essere realizzati in questo modo: select attributi from tab1,tab2 where tab1.attrib *= tab2.attrib tab1.attrib =* tab2.attrib tab1.attrib *=* tab2.attrib o ancora ORDINAMENTO Per ordinare la tabella restituita da una select, si utilizza order by: tab1.attrib (+)= tab2.attrib tab1.attrib =(+) tab2.attrib tab1.attrib (+)=(+) tab2.attrib select... order by attributo,... [asc desc] quindi alla fine della select si aggiunge la parola chiave order by seguita dagli attributi su cui eseguire l ordinamento (prima sul primo, poi sul secondo, ) e il modo in cui ordinare crescente (asc) o decrescente (desc).

21 OPERATORI AGGREGATI In SQL, a differenza dell algebra relazionale, sono definiti altri operatori, detti operatori aggregati, i quali consentono di effettuare dei raggruppamenti sui risultati. count ([* [distinct all] attributo) è l operatore aggregato che esegue nel caso count(*) il conteggio di tutte le tuple della tabella che la select dà come risultato, nel caso di una count([distinct all] attributo) esegue il conteggio di tutte le tuple della tabella che contengono un valore diverso dell attributo specificato. Vogliamo, per esempio, sapere il numero di giocatori che ci sono in una squadra del database precedente select count (*) from giocatore where Squadra = 1; sum ( [distinct all] attributo) l operatore aggregato di somma, prende la colonna risultante dalla select e ne restituisce la somma. max ( [distinct all ] attributo) l operatore aggregato di massimo, prende la colonna risultante dalla select e ne restituisce il valore massimo min ( [distinct all ] attributo) l operatore aggregato di minimo, prende la colonna risultante dalla select e ne restituisce il valore minimo avg ( [distinct all ] attributo) l operatore aggregato di media, prende la colonna risultante dalla select e ne restituisce la media aritmetica. Equivarrebbe a fare sum( ) diviso count ( ). INTERROGAZIONI CON RAGGRUPPAMENTO Supponiamo di avere questa tabella Impiegato(matricola,nome,cognome,stipendio,settore); se vogliamo selezionare lo stipendio massimo di un impiegato del settore tessile semplicemente utilizziamo l operatore aggregato di massimo e scriviamo select max(stipendio) from Impiegato where settore= tessile ; se vogliamo invece sapere qual è l impiegato che percepisce lo stipendio più alto in quel settore, è sbagliato scrivere select nome,cognome,max(stipendio) from Impiegato where settore= tessile ; ma dobbiamo ricorrere alle interrogazioni con raggruppamento, ovvero un tipo di interrogazione, in cui venga utilizzata la clausola group by...having...

22 Le operazioni con gli operatori aggregati, infatti, normalmente valgono per tutte le tuple; interrogazioni di questo tipo permettono di applicarli ad un sottoinsieme di righe. Per realizzare interrogazioni con raggruppamento, dobbiamo utilizzare nella nostra select la clausola group by lista attributi having condizione l interrogazione avverrà raggruppando le tuple risultanti secondo gli attributi nella lista che rispettano quelle condizioni. Supponiamo di avere la seguente tabella e di voler calcolare la somma degli stipendi degli impiegati, divisa per settore: quello che dobbiamo fare è effettuare una selezione di questo genere select settore,stipendio from Impiegato; il cui risultato sarà la seguente tabella Dopo di che possiamo cominciare ad usare la calcolatrice... Però possiamo pensare di utilizzare l operatore aggregato di somma su stipendio, raggruppando per settore; otteniamo: select settore,sum(stipendio) from Impiegato group by settore; questa query farà una selezione come la precedente e poi direttamente il DBMS ci risponderà con una tabella contenente le somme divise per settore, come la seguente:

23 Supponiamo ora di voler risolvere il problema da cui siamo partiti e di voler trovare chi guadagna di più in ogni settore: select matricola,stipendio from Impiegato group by settore having max(stipendio); se vogliamo saperlo solo per il settore tessile, basta utilizzare la clausola where. Specificando una condizione in having, si può effettuare una selezione sul raggruppamento, nel caso precedente abbiamo preso le tuple per cui il valore dello stipendio era massimo, per ogni settore. Possiamo però prendere il settore per cui la somma degli stipendi sia maggiore di 40:... having sum(stipendio) > 40 ottenendo la seguente tabella OPERATORI INSIEMISTICI Se abbiamo due query e due tabelle che ne rappresentano il risultato, possiamo immaginare di effettuare (con le dovute restrizioni riguardo i domini) le operazioni di unione, intersezione e differenza, ovvero quelle che tipicamente si fanno sugli insiemi. select... <union intersect except> [all] select... Per realizzare un unione (union), un intersezione (intersect) o una differenza (except) c è una condizione sine qua non: le tabelle che risultano dalle select devono avere un numero uguale di attributi e questi attributi devono avere domini compatibili (devono essere dello stesso tipo in modo ordinato). Dopo il tipo di operazione possiamo mettere o omettere all; se lo omettiamo, di default viene utilizzato distinct e dunque si ha l eliminazione dei duplicati (che possono per esempio apparire nell unione), altrimenti, specificando all, si prendono in considerazione anche le tuple duplicate. QUERY NIDIFICATE A volte può servire confrontare un attributo con un insieme di attributi risultante da una seconda query. A sua volta la seconda query può contenere una o più query nidificate, ottenendo una query lunga e complicata, ma comunque efficiente la struttura di base è riassunta nell immagine che segue:

24 Utilizzando per esempio questa clausola where select... where attributo < any (select... ) otteniamo di scegliere tutti gli attributi il cui valore sia minore di almeno uno degli elementi del risultato della seconda query. Se utilizzassimo all, la condizione sarebbe soddisfatta solo se l attributo sarebbe più piccolo di tutti gli elementi del risultato della seconda query. Se utilizziamo in e not in non ci serve applicare un operatore, poiché queste due espressioni controllano semplicemente se il valore dell attributo sia contenuto o meno nel risultato della sottoquery. Possiamo stabilire la corrispondenza PASSAGGIO DI BINDING Per ottenere il risultato di un insieme di query nidificate, si può pensare di partire da quelle al livello più interno e man mano risalire i livelli: in questo modo ogni interrogazione nidificata viene eseguita una sola volta. A volte però si verifica che c è una variabile che collega l interrogazione nidificata e quella che la contiene: tale situazione è nota come passaggio di binding. Per capire come viene risolto questo problema, bisogna tornare alla definizione standard di query: una query è un prodotto cartesiano fra tabelle, su cui viene effettuata una selezione in base alla condizione where, separatamente per ciascuna riga. Dunque quello che si fa è valutare per ogni riga della query esterna, prima la query nidificata, poi calcolare il predicato (where) per ogni riga sulla query esterna. UTILIZZO DI VARIABILI In una query possiamo rinominare sia attributi sia tabelle utilizzando un alias, il quale ha lo scopo di rendere la query più comprensibile; in questo caso il costrutto che ci viene in aiuto è as. Facciamo un esempio: select * form persone as p,ruolo as r where p.id = r.id_perosna; come sappiamo, questa query realizza un equi-join tra le due tabelle, le quali sono state rinominate e utilizzate mediante i loro alias. Utilizzando as si possono anche rinominare gli attributi, senza cambiare il significato della query. Facciamo un altro esempio: vogliamo estrarre da una tabella persone tutte le persone con lo stesso cognome. select p1.cognome,p1.nome from persone p1, persone p2 where p1.cognome=p2.cognome;

25 Quello che ci interessa vedere è cosa succede nel caso di query nidificate. In questo caso riguardo la visibilità delle variabili (che abbiamo chiamato alias) vale la seguente regola: Le variabili SQL sono utilizzabili solo nell ambito della query in cui sono definite o nell ambito di una query nidificata all interno di essa. Se due query sono allo stesso livello non possono condividere variabili. OPERATORE LOGICO EXISTS Continuando con le query nidificate, introduciamo l operatore logico exists. Questo operatore accetta come argomento una query e restituisce vero solo se il risultato della query non è vuoto. select... where exists (select...); Parallelamente ad exists c è anche l operatore not exists, che restituisce vero solo se il risultato della query è vuoto. VINCOLI DI INTEGRITÀ Ritorniamo ora al DDL, ovvero la parte dichiarativa dell SQL. Quando andiamo a scrivere una tabella in SQL, possiamo voler definire delle restrizioni (oltre a not null, primary key, ) che permettano di evitare errori di immissione, oppure verificare la correttezza di un attributo che è dipendente dal valore di un altro attributo della stessa tupla (per esempio ad un esame si può avere 30 e lode, ma non 18 e lode: dunque mettere la lode a un 18 equivarrebbe ad un errore logico). Per evitare tali situazioni si utilizzano i vincoli di integrità. create table nome_tabella (... attributo tipo check (condizione),... ) ASSERZIONI Con le asserzioni, si definiscono vincoli che appartengono allo schema e non sono associati a nessun attributo o tabella; sono dei controlli che garantiscono la consistenza (una proprietà logica di una base dati, espressa dai vincoli dello schema) della base dati. create assertion nome check (condizione); Ogni vincolo di integrità è associato ad una politica di controllo che specifica se tale controllo sia immediato o differito. Controllo immediato significa che il controllo avviene immediatamente dopo una modifica e dunque l operazione di modifica può essere immediatamente annullata. Il controllo differito invece avviene solo al termine dell esecuzione di una transazione (= insieme di operazioni ), che in caso di errore viene annullata completamente. Per dire al DBMS quando effettuare il controllo, si usano in modo alternativo le seguenti espressioni: set constraints nome_vincolo immediate; set constraints nome_vincolo deferred; che rispettivamente rappresentano, come si può capire intuitivamente, il controllo immediato e quello differito. VISTE

26 Accenniamo soltanto alle viste, le quali sono tabelle virtuali ricavate da informazioni contenute in altre tabelle. Esse possono essere relazioni virtuali, ovvero viste definite per mezzo di funzioni, che non esistono materialmente, ma vengono eseguite quando si fa un interrogazione su queste tabelle virtuali. Una relazione virtuale ha il vantaggio di essere sicuramente aggiornata e non occupare spazio fisico, ma ha lo svantaggio di richiedere un tempo di elaborazione maggiore e dunque un minore tempo di accesso ai dati. Le viste cosiddette materializzate, una volta create, rimangono fisicamente, come tabelle, nel DBMS e non devono essere ricalcolate ogni volta che sono richieste in un interrogazione. Si intuisce che questo tipo di viste ha il vantaggio di consentire un accesso ai dati più rapido, ma hanno lo svantaggio di essere materializzate, ovvero di occupare spazio fisico e di dover essere di volta in volta aggiornate. Quando si progetta un database si pensa anche se e che tipo di viste creare, trovando un compromesso tra le varie soluzioni. Per dichiarare una vista si usa il seguente costrutto: dove la seconda parte (opzionale) della query è relativa all aggiornamento delle viste. NOTE: - la query deve restituire un numero di attributi pari a quelli contenuti nello schema; - l ordine degli attributi nella query deve rispettare quello dello schema.

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

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 (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

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

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

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

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

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

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

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

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

Concetti fondamentali dei database database Cos'è un database Principali database

Concetti fondamentali dei database database Cos'è un database Principali database Concetti fondamentali dei database Nella vita di tutti i giorni si ha la necessità di gestire e manipolare dati. Le operazioni possono essere molteplici: ricerca, aggregazione con altri e riorganizzazione

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

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

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

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

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

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: 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

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

TEORIA sulle BASI DI DATI

TEORIA sulle BASI DI DATI TEORIA sulle BASI DI DATI A cura del Prof. Enea Ferri Cos è un DATA BASE E un insieme di archivi legati tra loro da relazioni. Vengono memorizzati su memorie di massa come un unico insieme, e possono essere

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

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

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

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

Corso di Informatica Generale 1 IN1. Linguaggio SQL

Corso di Informatica Generale 1 IN1. Linguaggio SQL Università Roma Tre Facoltà di Scienze M.F.N. di Laurea in Matematica di Informatica Generale 1 Linguaggio SQL Marco (liverani@mat.uniroma3.it) Sommario Prima parte: le basi dati relazionali Basi di dati:

Dettagli

qui possiamo scegliere se creare un nuovo Database oppure aprire un Database già esistente. Fatto ciò avremo questa seconda schermata:

qui possiamo scegliere se creare un nuovo Database oppure aprire un Database già esistente. Fatto ciò avremo questa seconda schermata: Creare un Database completo per la gestione del magazzino. Vedremo di seguito una guida pratica su come creare un Database per la gestione del magazzino e la rispettiva spiegazione analitica: Innanzitutto

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 (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

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

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

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

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

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

MODULO 5 DATA BASE PROGRAMMA. Progettazione rapida introduzione alla progettazione di DB

MODULO 5 DATA BASE PROGRAMMA. Progettazione rapida introduzione alla progettazione di DB MODULO 5 DATA BASE MODULO 5 - DATA BASE 1 PROGRAMMA Introduzione: concetti generali di teoria Progettazione rapida introduzione alla progettazione di DB Utilizzo di Access pratica sulla creazione e l utilizzo

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

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

Introduzione a MySQL

Introduzione a MySQL Introduzione a MySQL Cinzia Cappiello Alessandro Raffio Politecnico di Milano Prima di iniziare qualche dettaglio su MySQL MySQL è un sistema di gestione di basi di dati relazionali (RDBMS) composto da

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

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

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

INFORMATICA PER L IMPRESA (Docente Prof. Alfredo Garro)

INFORMATICA PER L IMPRESA (Docente Prof. Alfredo Garro) INFORMATICA PER L IMPRESA (Docente Prof. Alfredo Garro) ESERCIZIO 1a a) Creare, utilizzando Microsoft Access, la base di dati Università,, seguendo lo schema logico relazionale seguente: DATABASE Università

Dettagli

Algebra e calcolo relazionale. Ripasso. Le 7 Virtù del DBMS persistenza affidabilità volume condivisione riservatezza efficienza efficacia

Algebra e calcolo relazionale. Ripasso. Le 7 Virtù del DBMS persistenza affidabilità volume condivisione riservatezza efficienza efficacia Algebra e calcolo relazionale Ripasso Le 7 Virtù del DBMS persistenza affidabilità volume condivisione riservatezza efficienza efficacia I 4 Livelli di astrazione Le Tabelle Livello fisico (o interno)

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

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

CREAZIONE DI UN DB RELAZIONALE IN ACCESS

CREAZIONE DI UN DB RELAZIONALE IN ACCESS CONTENUTI: CREAZIONE DI UN DB RELAZIONALE IN ACCESS Definizione della chiave primaria di una tabella Creazione di relazioni fra tabelle Uso del generatore automatico di Query A) Apertura del DB e creazione

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: 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

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

Basi di Dati. Programmazione e gestione di sistemi telematici

Basi di Dati. Programmazione e gestione di sistemi telematici Basi di Dati. Programmazione e gestione di sistemi telematici Coordinatore: Prof. Paolo Nesi Docenti: Prof. Paolo Nesi Dr.sa Michela Paolucci Dr. Emanuele Bellini SQL SQL = Structured Query Language Linguaggio

Dettagli

Il linguaggio SQL. ing. Alfredo Cozzi 1

Il linguaggio SQL. ing. Alfredo Cozzi 1 Il linguaggio SQL ing. Alfredo Cozzi 1 Il linguaggio SQL Il linguaggio SQL (Structured Query Language) è nato con l intento di soddisfare alle seguenti richieste nei db relazionali: - definire e creare

Dettagli

INFORMATICA PER LE APPLICAZIONI ECONOMICHE PROF.SSA BICE CAVALLO

INFORMATICA PER LE APPLICAZIONI ECONOMICHE PROF.SSA BICE CAVALLO Basi di dati: Microsoft Access INFORMATICA PER LE APPLICAZIONI ECONOMICHE PROF.SSA BICE CAVALLO Database e DBMS Il termine database (banca dati, base di dati) indica un archivio, strutturato in modo tale

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

Cultura Tecnologica di Progetto

Cultura Tecnologica di Progetto Cultura Tecnologica di Progetto Politecnico di Milano Facoltà di Disegno Industriale - DATABASE - A.A. 2003-2004 2004 DataBase DB e DataBase Management System DBMS - I database sono archivi che costituiscono

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

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

L ARCHIVIAZIONE E LA GESTIONE DATI ATTRAVERSO L INTERAZIONE TRA MICROSOFT ACCESS ED EXCEL 1 INTRODUZIONE

L ARCHIVIAZIONE E LA GESTIONE DATI ATTRAVERSO L INTERAZIONE TRA MICROSOFT ACCESS ED EXCEL 1 INTRODUZIONE Roccatello Ing. Eduard L ARCHIVIAZIONE E LA GESTIONE DATI ATTRAVERSO L INTERAZIONE TRA MICROSOFT ACCESS ED EXCEL 1 INTRODUZIONE Agenda Presentazione docente Definizione calendario Questionario pre corso

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 -DDL. FONDISTA(Nome, Nazione, Età) GAREGGIA(NomeFondista, NomeGara, Piazzamento) GARA(Nome, Luogo, Nazione, Lunghezza)

SQL -DDL. FONDISTA(Nome, Nazione, Età) GAREGGIA(NomeFondista, NomeGara, Piazzamento) GARA(Nome, Luogo, Nazione, Lunghezza) 26/03/2013 SQL SQL -DDL Esercizio 4.3 Dare le definizioni SQL delle tre tabelle FONDISTA(Nome, Nazione, Età) GAREGGIA(NomeFondista, NomeGara, Piazzamento) GARA(Nome, Luogo, Nazione, Lunghezza) rappresentando

Dettagli

SQL e ACCESS. Modello relazionale PROBLEMA ENTITA STUDENTE

SQL e ACCESS. Modello relazionale PROBLEMA ENTITA STUDENTE SQL e ACCESS Prof. Salvatore Multazzu (salvatoremultazzu@tiscali.it) Applicazioni Informatiche nella comunicazione Modello relazionale Entità Record o Ennuple Attributi o Campi Tipi Chiavi Primarie (PK)

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

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

1. I database. La schermata di avvio di Access

1. I database. La schermata di avvio di Access 7 Microsoft Access 1. I database Con il termine database (o base di dati) si intende una raccolta organizzata di dati, strutturati in maniera tale che, effettuandovi operazioni di vario tipo (inserimento

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

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

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

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

Il database management system Access

Il database management system Access Il database management system Access Corso di autoistruzione http://www.manualipc.it/manuali/ corso/manuali.php? idcap=00&idman=17&size=12&sid= INTRODUZIONE Il concetto di base di dati, database o archivio

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

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

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

Metodi per la Gestione dei Dati (lezioni di laboratorio)

Metodi per la Gestione dei Dati (lezioni di laboratorio) Università degli Studi di Modena e Reggio Emilia Facoltà di Scienze della Comunicazione e dell Economia Corso di Laurea in Comunicazione e Marketing Titolare del corso: ing. Stefano SETTI Lezioni di laboratorio

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

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

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

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

Le query di raggruppamento

Le query di raggruppamento Le query di raggruppamento Le "Query di raggruppamento" sono delle Query di selezione che fanno uso delle "Funzioni di aggregazione" come la Somma, il Conteggio, il Massimo, il Minimo o la Media, per visualizzare

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

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

DUE GRUPPI DI COMANDI

DUE GRUPPI DI COMANDI LEZIONE16 SQL DDL PAG. 1 / 9 PROF. ANDREA ZOCCHEDDU LEZIONE16 SQL DDL LINGUAGGIO SQL DATA DESCRIPTION LANGUAGE DUE GRUPPI DI COMANDI I comandi del linguaggio SQL sono divisi in due grandi gruppi che formano

Dettagli

Create la tabella Dipendenti:

Create la tabella Dipendenti: Create la tabella Dipendenti: create table Dipendenti( id int(3) not null auto_increment, livello int(1) not null, stipendio int(4) not null, primary key(id)); mysql> describe Dipendenti; --------+------+-----+---------+----------------+

Dettagli

Corso di Laboratorio di Basi di Dati

Corso di Laboratorio di Basi di Dati Corso di Laboratorio di Basi di Dati F1I072 - INF/01 a.a 2009/2010 Pierluigi Pierini Technolabs S.p.a. Pierluigi.Pierini@technolabs.it Università degli Studi di L Aquila Dipartimento di Informatica Technolabs

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

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

********************* MODIFICA STRUTTURA DI UNA TABELLA (inserimento di un nuovo campo) ALTER TABLE Personale ADD Nascita date;

********************* MODIFICA STRUTTURA DI UNA TABELLA (inserimento di un nuovo campo) ALTER TABLE Personale ADD Nascita date; CREAZIONE STRUTTURA DI UNA TABELLA by Marinsalta Fausto CREATE TABLE Personale Matricola char(5), Cognome char(30), Nome char(20), Codfis char(16) not null, Assunzione date, Filiale smallint, Funzione

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

Modelli relazionali. Esistono diversi modi di modellare un database. Il modello piu' usato al momento e' il modello relazionale

Modelli relazionali. Esistono diversi modi di modellare un database. Il modello piu' usato al momento e' il modello relazionale Cenni sui DATABASE Cos'e' un database Un database puo' essere definito come una collezione strutturata di record (dati) I dati sono memorizzati su un computer in modo opportuno e possono essere recuperati

Dettagli

Dispense Corso Access

Dispense Corso Access Dispense Corso Access Introduzione La dispensa più che affrontare Access, dal punto di vista teorico, propone l implementazione di una completa applicazione Access, mettendo in risalto i punti critici

Dettagli

Basi di dati Il linguaggio SQL

Basi di dati Il linguaggio SQL Basi di dati Il linguaggio SQL teoria e pratica con Microsoft Access Riepilogando Nelle basi di dati esiste 1. una parte invariante nel tempo, lo schema, costituita dalle caratteristiche dei dati (nomi

Dettagli

Basi di dati Il linguaggio SQL

Basi di dati Il linguaggio SQL Riepilogando Basi di dati Il linguaggio SQL Nelle basi di dati esiste 1. una parte invariante nel tempo, lo schema, costituita dalle caratteristiche dei dati (nomi degli attributi, domini, 2. una parte

Dettagli

Basi di dati. Microsoft Access. Cosa è. Pietro Pala (pala@dsi.unifi.it) Come iniziare. Aprire un database. Creare un database. Creare un database

Basi di dati. Microsoft Access. Cosa è. Pietro Pala (pala@dsi.unifi.it) Come iniziare. Aprire un database. Creare un database. Creare un database Cosa è Basi di dati Pietro Pala (pala@dsi.unifi.it) Microsoft Access Access è un DBMS relazionale in grado di supportare: Specifica grafica dello schema della base dati Specifica grafica delle interrogazioni

Dettagli

Lezione 8. Metadati, Viste e Trigger

Lezione 8. Metadati, Viste e Trigger Lezione 8 Metadati, Viste e Trigger Pag.1 Metadati e catalogo di sistema I metadati sono dati a proposito dei dati (quali tabelle esistono?, quali campi contengono?, quante tuple contengono?, ci sono vincoli

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

Prova Scritta di Basi di Dati

Prova Scritta di Basi di Dati Prova Scritta di Basi di Dati 4 Giugno 2007 COGNOME: NOME: MATRICOLA: Si prega di risolvere gli esercizi direttamente sui fogli del testo, negli spazi indicati. Usare il foglio protocollo solo per la brutta

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

Access INTRODUZIONE. Cos'è un Database? Probabilmente il modo migliore per spiegarlo è attraverso un esempio: una rubrica telefonica.

Access INTRODUZIONE. Cos'è un Database? Probabilmente il modo migliore per spiegarlo è attraverso un esempio: una rubrica telefonica. Access INTRODUZIONE Cos'è un Database? Probabilmente il modo migliore per spiegarlo è attraverso un esempio: una rubrica telefonica. Nome Indirizzo Città CAP PR Tel ITIS Amedeo Avogadro c. San Maurizio,

Dettagli

CAPITOLO 4 ESERCIZI SU SQL

CAPITOLO 4 ESERCIZI SU SQL CAPITOLO 4 ESERCIZI SU SQL (le soluzioni sono riportate da pag. 5 in poi (Nota: gli esercizi non sono sempre in ordine di difficoltà Esercizio 1 Si prendano tutti gli schemi relazionali considerati negli

Dettagli

Basi di dati. L Algebra Relazionale. K. Donno - L Algebra Relazionale

Basi di dati. L Algebra Relazionale. K. Donno - L Algebra Relazionale Basi di dati L Algebra Relazionale Introduzione all Algebra Relazionale Una volta definito lo schema logico di un database, partendo da un Diagramma E-R, e dopo aver inserito le tabelle nel database, eventualmente

Dettagli

Il linguaggio SQL. Evoluzione del linguaggio. I linguaggi dentro SQL. I dialeu SQL. U@lizzo di SQL SQL. A. Ferrari 1

Il linguaggio SQL. Evoluzione del linguaggio. I linguaggi dentro SQL. I dialeu SQL. U@lizzo di SQL SQL. A. Ferrari 1 Il linguaggio SQL Structured Query Language SQL è un linguaggio di interrogazione per database proge

Dettagli