SOLUZIONI COMMENTATE
|
|
|
- Filiberto Giordano
- 10 anni fa
- Visualizzazioni
Transcript
1 Nel database Biblioteca vi sono le seguenti tabelle: SOLUZIONI COMMENTATE Utenti := < id, nome, cognome, indirizzo,città, tel_fisso,cellulare > Prestiti := < id, id_libro, id_utente, data_ora_prestito, data_ora_restituzione> Libri := < id, titolo, descrizione, data_pubblicazione> Autori:=<id,nome,cognome> Autori_Libri := <id_autore,id_libro> 1) Creazione tabelle: Di seguito sono riportati gli statement di creazione di MySQL dove figura KEY al posto di INDEX e CONSTRAINT <nome indice chiave esterna> prima di FOREIGN KEY. CONSTRAINT significa letteralmente VINCOLO. Infatti serve a specificare un vincolo referenziale CREATE TABLE `biblioteca`.`autori` ( `id` int(10) unsigned NOT NULL auto_increment, `nome` varchar(45) NOT NULL, `cognome` varchar(45) NOT NULL, PRIMARY KEY (`id`), KEY `nome_cognome` (`nome`,`cognome`) ) CREATE TABLE `biblioteca`.`libri` ( `id` int(10) unsigned NOT NULL auto_increment, `titolo` varchar(100) NOT NULL, `descrizione` varchar(500) NOT NULL, `data_pubblicazione` date NOT NULL, PRIMARY KEY (`id`) ) CREATE TABLE `biblioteca`.`utenti` ( `id` int(10) unsigned NOT NULL auto_increment, `nome` varchar(45) NOT NULL, `cognome` varchar(45) NOT NULL, `indirizzo` varchar(100) NOT NULL, `città` varchar(45) NOT NULL, `tel_casa` varchar(10) NOT NULL, `cellulare` varchar(10) NOT NULL, PRIMARY KEY (`id`), KEY `nome_cognome` (`nome`,`cognome`) ) OSSERVAZIONE: Notare che si sono definiti degli indici su nome e cognome utente e nome e cognome autore perchè si presume che si effettueranno frequentemente ricerche per utente o per autore (specificando sia nome che cognome). Ha senso definire degli indici su questi campi perchè sono relativamente brevi e la ricerca viene effettuata confrontando le stringhe a partire dal primo carattere, mentre nel caso del titolo o della descrizione dei libri si
2 ricercano parole all'interno della stringa per cui gli indici, che si basano sull'ordinamento dei valori e sull'associazione di valori numerici alle stringhe, non porterebbero i vantaggi desiderati(sarebbe più conveniente creare un indice delle singole parole alla maniera di Google o Word: un'altro storage engine di MySQL(quello che si utilizza qui è InnoDB che permette di specificare vincoli referenziali), MySQL ISAM fa proprio questo con i campi Text e Blob con indici detti FULLTEXT vedi al riguardo Differenze My ISAM e InnoDB). Per ulteriori dettagli vedi INDICI (par.2.4) Database Open Office CREATE TABLE `biblioteca`.`prestiti` ( `id` int(10) unsigned NOT NULL auto_increment, `id_libro` int(10) unsigned NOT NULL, `id_utente` int(10) unsigned NOT NULL, `data_ora_prestito` datetime NOT NULL, `data_ora_restituzione` datetime, PRIMARY KEY (`id`), KEY `fk_utente` (`id_utente`), KEY `fk_libro` (`id_libro`), CONSTRAINT `fk_libro` FOREIGN KEY (`id_libro`) REFERENCES `libri` (`id`) ON DELETE RESTRICT ON UPDATE CASCADE, CONSTRAINT `fk_utente` FOREIGN KEY (`id_utente`) REFERENCES `utenti` (`id`) ON DELETE RESTRICT ON UPDATE CASCADE ) OSSERVAZIONE IMPORTANTE: notare che data_ora_restituzione NON ha il vincolo NOT NULL perchè quando prendo in prestito un libro non immetto un valore per data_ora_restituzione che rimane pari a NULL fino al momento della restituzione. CREATE TABLE `biblioteca`.`autori_libri` ( `id_autore` int(10) unsigned NOT NULL, `id_libro` int(10) unsigned NOT NULL, KEY `FK_autore` (`id_autore`), KEY `FK_libri` (`id_libro`), CONSTRAINT `FK_autore` FOREIGN KEY (`id_autore`) REFERENCES `autori` (`id`) ON DELETE RESTRICT ON UPDATE CASCADE, CONSTRAINT `FK_libri` FOREIGN KEY (`id_libro`) REFERENCES `autori` (`id`) ON DELETE RESTRICT ON UPDATE CASCADE ) ; OSSERVAZIONE IMPORTANTE: I vincoli sull'update per le tabelle autori_libri e prestiti sono in effetti superflui poichè essendo la chiave primaria un semplice contatore autoincrementato è improbabile che venga modificata (avrebbe senso se la chiave primaria fosse inserita direttamente in fase di immissione dei dati es. CODICE FISCALE). Andrebbe benissimo anche l'opzione ON UPDATE RESTRICT. In effetti in questo caso poiché le opzioni di default di MySQL sono proprio RESTRICT su DELETE e su UPDATE potrei fare a meno di specificare i vincoli referenziali. Tuttavia all'esame e al compito dovete comunque commentare questa omissione per far capire al docente che
3 sapete cos'è un vincolo referenziale, quando e perchè viene applicato e perchè eventualmente può essere omesso. ESERCIZIO 2) Quando devo cercare qualcosa all'interno di una stringa(una sequenza di caratteri ASCII) devo ricorrere a LIKE: SELECT titolo,descrizione FROM libri WHERE (descrizione LIKE '%divulgazione%') AND (descrizione LIKE '%universo%'); ESERCIZIO 3) E' possibile risovere il problema posto in maniere differenti: Prima Soluzione) Creo una tabella di supporto che contenga il numero di libri scritti dai vari autori. Posso ottenere questa tabella nel seguente modo: CREATE TABLE libriscritti( SELECT id_autore,count(*) as num_libri FROM autori_libri GROUP BY id_autore HAVING num_libri>2 ); Il motivo per cui ho creato questa tabella è che viene richiesto il nome e cognome di ogni autore e questi non posso metterli direttamente nella SELECT se nella GROUP BY metto solo id_autore (vedi subito dopo il titolo Raggruppamenti Guida SQL). Procedo pertanto come segue: mi salvo il risultato della SELECT precedente in una tabella di appoggio che chiamo libriscritti ed effettuo una GIUNZIONE tra questa tabella e autori. In ultimo effettuo la PROIEZIONE su nome e cognome della tabella autori.
4 SELECT nome, cognome FROM autori, libriscritti WHERE (autori.id = libriscritti.id_autore) Seconda Soluzione) Non ho bisogno di creare effettivamente un'altra tabella, posso semplicemente mettere la SELECT di prima all'interno della clausola FROM e le assegno come alias libriscritti come mostrato di seguito SELECT nome, cognome FROM autori,(select id_autore,count(*) as num_libri FROM autori_libri GROUP BY id_autore HAVING num_libri>2) AS libriscritti WHERE (autori.id = libriscritti.id_autore) Terza Soluzione) E' una soluzione ancora più semplice delle precedenti. Posso raggruppare in base a 3 attributi invece che ad uno solamente: 1. Prendo anche la tabella autori ed effettuo la giunzione con la tabella autori_libri 2. Raggruppo in base agli attributi: id_autore, nome e cognome (in questa maniera si ottenengono gli stessi gruppi ottenuti effettuando il raggruppamento solo in base a id_autore perchè nome e cognome risulteranno gli stessi a parità di id_autore e pertanto gli attributi aggiunti nella clausola GROUP BY non modificano la composizione del gruppo) In finale ottengo: SELECT nome, cognome FROM autori_libri, autori WHERE (autori.id = autori_libri.id_autore ) GROUP BY id_autore,nome,cognome HAVING COUNT(*)>2 Le tre soluzioni appena analizzate sono riassunte nel seguente riquadro:
5 CREATE TABLE libriscritti( SELECT id_autore,count(*) as num_libri FROM autori_libri GROUP BY id_autore HAVING num_libri>2 ); SELECT nome, cognome FROM autori,libriscritti WHERE (autori.id = libriscritti.id_autore) oppure: SELECT nome, cognome FROM autori,(select id_autore,count(*) as num_libri FROM autori_libri GROUP BY id_autore HAVING num_libri>2) AS libriscritti WHERE (autori.id = libriscritti.id_autore) oppure: SELECT nome, cognome FROM autori_libri, autori WHERE (autori.id = autori_libri.id_autore ) GROUP BY id_autore,nome,cognome HAVING COUNT(*)>2 ESERCIZIO 4) Si parte dall'individuazione delle tabelle che contengono i dati di interesse: Da un lato devo visualizzare nome e cognome degli utenti quindi avrò bisogno di utenti, dall'altro mi serve data_ora_prestito che si trova nella tabella prestiti. Come sempre quando si ha a che fare con più di una tabella si deve effettuare la GIUNZIONE(JOIN) ( più esattamente L'INNER JOIN ) tra le tabelle ovvero filtrare solo i record effettivamente associati delle 2 tabelle dal miscuglio del prodotto cartesiano. FROM utenti,prestiti mi restituirebbe, infatti, il prodotto cartesiano delle 2 tabelle ovvero tutte le possibili coppie utente,prestito anche se l'utente non ha effettuato il prestito in questione!!! Allo scopo di associare ogni utente con il prestito che ha effettuato mi serve il legame espresso dall'uguaglianza chiave esterna = chiave primaria. In questo modo si ottiene una tabella con tutti gli attributi di utenti e prestiti
6 SELECT * FROM utenti,prestiti WHERE (utenti.id=prestiti.id_utente) A questo punto però devo ulteriormente filtrare (RESTRIZIONE) i risultati ottenuti aggiungendo la condizione su data e ora del prestito ovvero aggiungendo un'altra condizione nella clausola WHERE. NOW() mi ritorna data e ora corrente, se sottraggo 1 MESE( - INTERVAL 1 MONTH.) dal valore restituito da NOW() avrò la data (e l'ora) di un mese fa: data_ora_prestito deve essere successiva( > ) alla data così ricavata. Rimane solo da effettuare la PROIEZIONE sulle colonne nome e cognome(ovvero visualizzare solo questi attributi). Non serve specificare il nome della tabella utenti perchè in prestiti non ci sono attributi omonimi per cui non si hanno problemi di ambiguità. In finale avremo: SELECT nome,cognome FROM utenti,prestiti WHERE (utenti.id=prestiti.id_utente) AND (data_ora_prestito > NOW() - INTERVAL 1 MONTH) ESERCIZIO 5) Quello che mi serve è associare libri, prestiti, utenti per scoprire chi ha preso in prestito cosa. La GIUNZIONE tra le tabelle viene effettuata, come al solito, uguagliando le chiavi esterne alle chiavi primarie associate( effettuo una RESTRIZIONE(WHERE) del PRODOTTO CARTESIANO Libri x Utenti x Prestiti ). Alla luce di ciò, posso iniziare con lo scrivere qualcosa del genere: SELECT * FROM libri,utenti,prestiti WHERE (libri.id=prestiti.id_libro) AND (utenti.id=prestiti.id_utente) Una volta effettuata la GIUNZIONE tra le tabelle è necessario effettuare un'ulteriore RESTRIZIONE dell'insieme dei risultati per ottenere solo le righe che mi interessano: quelle relative a Mario Rossi (aggiungo delle condizioni nella clausola WHERE con AND). Inoltre si devono visualizzare solo gli attributi (ovvero le colonne) di libri(proiezione) dunque nella
7 SELECT drovremo specificare libri.* al posto di *, in finale otterremo: SELECT libri.* FROM libri,utenti,prestiti WHERE (libri.id=prestiti.id_libro) AND (utenti.id=prestiti.id_utente) AND (utenti.nome='mario') AND (utenti.cognome='rossi') ESERCIZIO 6) Per prima cosa mi devo ricavare CHI HA SCRITTO COSA, mi servono pertanto i dati contenuti nella tabella autori, libri e nella tabella di associazione autori_libri, quindi avrò l'esigenza di effettuare la solita GIUNZIONE tra libri e autori_libri da un lato e autori e autori_libri dall'altro, ottenendo come risultato: SELECT * FROM autori,libri,autori_libri WHERE (libri.id=autori_libri.id_libro) AND (autori.id=autori_libri.id_autore) Questa query mi fornisce come risultato una tabella in cui per ogni riga ho gli attributi delle 3 tabelle, tra gli altri: nome e cognome dell'autore, data di pubblicazione,titolo del libro (scritto dal medesimo autore: ho infatti associato i libri con i loro effettivi autori), se uno stesso libro ha più autori vi saranno più righe per tale libro una per ogni co-autore. A questo punto devo filtrare i risultati in base al nome e cognome dell'autore che sto cercando: Stephen Hawking e ordinare i risultati in base alla data di pubblicazione (dalla data maggiore ovvero più recente a quella minore ). SELECT * FROM autori,libri,autori_libri WHERE (libri.id=autori_libri.id_libro) AND (autori.id=autori_libri.id_autore) AND (nome='stephen') AND (cognome = 'Hawking') ORDER BY data_pubblicazione DESC Poichè non mi servono infatti tutti gli attributi ma solamente il titolo del libro, effettuo una PROIEZIONE (cioè visualizzo solo alcune colonne) sul solo attributo titolo e visto che sono richiesti solamenti i 3 libri più recenti limito i risultati ai primi 3 attraverso la clausola LIMIT come mostrato di seguito:
8 SELECT titolo FROM autori,libri,autori_libri WHERE (libri.id=autori_libri.id_libro) AND (autori.id=autori_libri.id_autore) AND (nome='stephen') AND (cognome = 'Hawking') ORDER BY data_pubblicazione DESC LIMIT 3; ESERCIZIO 7) Devo innanzitutto determinare la durata di ogni prestito: questo significa effettuare la differenza tra data_ora_restituzione e data_ora_prestito per ogni prestito. A questo scopo utilizzo la funzione TIMESTAMPDIFF (vedi esempi in soluzioni di Esercizi_SQL2) e specifico che intendo calcolare tale differenza in giorni specificando DAY come primo argomento della funzione(anche se non è specificato dal problema è abbastanza plausibile che l'unità temporale richiesta sia questa). Ottengo tale risultato attraverso la seguente query: SELECT TIMESTAMPDIFF(DAY,data_ora_prestito,data_ora_restituzione) AS durata_in_giorni FROM prestiti Quello che voglio però è la media e a questo punto è immediato calcolarla attraverso la funzione AVG, in finale avrò SELECT AVG(TIMESTAMPDIFF(DAY,data_ora_prestito,data_ora_restituzione)) AS durata_media_in_giorni FROM prestiti ESERCIZIO 8) Questa volta mi servono i dati che si trovano sia in prestiti (data e ora prestito, data e ora restituzione) che in utenti(nome, cognome), pertanto dovrò effettuare una GIUNZIONE tra le 2 tabelle prestiti e utenti. Come al solito avremo SELECT * FROM utenti,prestiti WHERE (utenti.id=prestiti.id_utente) Nella tabella risultante ho sia gli attributi di prestiti che di utenti, quindi ho data_ora_prestito e data_ora_restituzione, ma anche nome e cognome utente, insomma tutto quello che mi serve per effettuare
9 la query desiderata. Effettuo come prima il calcolo della durata del prestito con TIMESTAMPDIFF e filtro in base a nome e cognome, in finale avremo: SELECT AVG(TIMESTAMPDIFF(DAY,data_ora_prestito,data_ora_restituzione) ) AS durata_media_in_giorni FROM utenti,prestiti WHERE (utenti.id=prestiti.id_utente) AND (nome='mario') AND (cognome='rossi') Qui dovendo calcolare la media per un unico utente è superfluo usare GROUP BY. ESERCIZIO 9) I dati che mi servono si trovano in utenti e prestiti (se volessi visualizzare anche i libri non restituiti dovrei aggiungere anche libri ma per il momento non ci complichiamo la vita!). Come al solito si parte dal trovare CHI HA PRESO IN PRESTITO COSA effettuando la solita GIUNZIONE tra utenti e prestiti nel modo mostrato di seguito: SELECT * FROM prestiti,utenti WHERE (prestiti.id_utente = utenti.id); Questa tabella contiene tutti gli attributi delle due tabelle e in ogni riga ci sono sia la data e l'ora di restituzione sia il nome e cognome dell'utente che ha effettuato quel prestito insieme a tutti gli altri attributi. Quello che devo fare è effettuare un' ulteriore RESTRIZIONE( aggiungere un'altra condizione nella clausola WHERE ) restringendo l'insieme dei risultati alle righe per cui data_ora_restituzione non è specificata. A questo scopo utilizzo la funzione IS NULL. Inoltre devo imporre che il prestito sia stato effettuato ALMENO due mesi fa, per cui data_ora_prestito deve essere precedente a NOW() - INTERVAL 2 MONTH E' richiesto di visualizzare solamente nome e cognome dell'utente quindi devo effettuare una PROIEZIONE sulle colonne nome e cognome ottenendo: SELECT nome,cognome FROM prestiti,utenti WHERE (prestiti.id_utente = utenti.id) AND (data_ora_restituzione IS NULL) AND (data_ora_prestito < NOW() - INTERVAL 2 MONTH) Se un utente ha preso in prestito più libri però, il suo nome figurerà più volte nella tabella dei risultati(una per ogni libro preso in prestito).
10 Ho bisogno di eliminare i duplicati attraverso la clausola DISTINCT ottenendo: SELECT DISTINCT nome,cognome FROM prestiti, utenti WHERE (prestiti.id_utente=utenti.id) AND (data_ora_restituzione IS NULL) AND (data_ora_prestito < NOW() - INTERVAL 2 MONTH) ESERCIZIO 10) Prima Soluzione) Per determinare quali sono i libri più richiesti posso iniziare raggruppando i prestiti effettuati per ogni libro(group BY id_libro) e applicando la funzione COUNT(ovvero contandoli)... utilizzo un ALIAS per rendere tutto più chiaro. Otterrò una tabella con due sole colonne id_libro e num_prestiti. SELECT id_libro,count(*) as num_prestiti FROM prestiti GROUP BY id_libro Ordinando le righe per valori di num_prestiti decrescenti (la prima riga è quella per cui ho il valore di num_prestiti più grande e poi via via decrescendo man mano che scendo verso il basso) e limitando i risultati visualizzati ai primi 10 (LIMIT 10) otterrei l'elenco, ordinato in base al numero di prestiti effettuati, dei 10 libri più letti: SELECT id_libro,count(*) as num_prestiti FROM prestiti GROUP BY id_libro ORDER BY num_prestiti DESC LIMIT 10 C'è solo un problema... ciò che è richiesto è il titolo dei libri non l'id!. Procedo pertanto come segue: A questa tabella associo l'alias TOP10 ed effettuo una GIUNZIONE tra questa tabella e la tabella libri, visualizzando solo la colonna titolo che è quella che mi interessa: SELECT titolo FROM libri, (SELECT id_libro,count(*) as num_prestiti FROM prestiti GROUP BY id_libro ORDER BY num_prestiti DESC LIMIT 10) AS TOP10 WHERE (libri.id = TOP10.id_libro);
11 Seconda Soluzione) Oppure posso effettuare subito la giunzione con libri e raggruppare in base a: id_libro e titolo ricordando che l'aggiunta dell'attributo titolo non modifica la composizione dei gruppi poiché tutti i libri che hanno lo STESSO ID_LIBRO avranno necessariamente lo STESSO TITOLO. La query diventa: SELECT titolo FROM prestiti, libri WHERE (libri.id = prestiti.id_libro) GROUP BY id_libro,titolo ORDER BY COUNT(*) DESC LIMIT 10 Notare che COUNT(*) viene messo nella clausola ORDER BY poiché devo visualizzare solamente il titolo dei libri (e non il numero di prestiti effettuati per ogni libro). MySQL 5.0 interpreta correttamente questa istruzione mentre versioni precedenti NO Riassumendo: SELECT titolo FROM libri, (SELECT id_libro,count(*) as num_prestiti FROM prestiti GROUP BY id_libro ORDER BY num_prestiti DESC LIMIT 10) AS TOP10 WHERE (libri.id = TOP10.id_libro); Oppure: SELECT titolo FROM prestiti, libri WHERE (libri.id = prestiti.id_libro) GROUP BY id_libro,titolo ORDER BY COUNT(*) DESC LIMIT 10
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
INDICI. Prevediamo di effettuare spesso interrogazioni simili alle seguenti:
Date le tabelle: Clienti := < id, nome, cognome, indirizzo,città > Ordini := < id, data_ora_ordine, id_prodotto, id_cliente, quantità> Prodotti := < id, nome, descrizione, costo,scorte > INDICI Prevediamo
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
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,
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
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 (, ,
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
Dispensa di database Access
Dispensa di database Access Indice: Database come tabelle; fogli di lavoro e tabelle...2 Database con più tabelle; relazioni tra tabelle...2 Motore di database, complessità di un database; concetto di
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
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
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
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.
Istruzioni SQL 1. Query di selezione 2 Istruzione SELECT 2 Istruzione SELECT DISTINCT 2 ORDER BY 3 WHERE 3 La condizione LIKE 4 BETWEEN AND 5
Istruzioni SQL Istruzioni SQL 1 Query di selezione 2 Istruzione SELECT 2 Istruzione SELECT DISTINCT 2 ORDER BY 3 WHERE 3 La condizione LIKE 4 BETWEEN AND 5 Query di inserimento 5 INSERT INTO 5 Query di
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
MySQL Database Management System
MySQL Database Management System http://www.mysql.com/ DATABASE RELAZIONALI Un database è una collezione strutturata di informazioni. I database sono delle strutture nelle quali è possibile memorizzare
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
MySQL Database Management System
MySQL Database Management System II parte Progetto gestione booking prenotazioni on-line 1. Progettazione e creazione struttura database che chiameremo booking. 2. Progettazione e creazione di un form
Uso delle basi di dati DBMS. Cos è un database. DataBase. Esempi di database
Uso delle basi di dati Uso delle Basi di Dati Il modulo richiede che il candidato comprenda il concetto di base dati (database) e dimostri di possedere competenza nel suo utilizzo. Cosa è un database,
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
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
Funzioni non documentate Openoffice.org. 3 Base mini-howto
Funzioni non documentate Openoffice.org. 3 Base mini-howto Augusto Scatolini ([email protected]) Ver. 1.0 gennaio 2009 Come risolvere il problema del contatore che inizia da 0 (zero) Come importare
DBMS. Esempi di database. DataBase. Alcuni esempi di DBMS DBMS. (DataBase Management System)
(DataBase Management System) Sistemi di ges3one di basi di da3 Un Database Management System è un sistema software progettato per consentire la creazione e manipolazione efficiente di database (collezioni
MODULO 5 ACCESS Basi di dati. Lezione 4
MODULO 5 ACCESS Basi di dati Lezione 4 ARGOMENTI Lezione 4 Filtrare i dati Esempio 1 Query Cos è Creare Query in visualizza struttura Criteri di ricerca Esempio 2 Esempio 3 Esempio 4 Creare Query in creazione
Esercizio data base "Biblioteca"
Rocco Sergi Esercizio data base "Biblioteca" Database 2: Biblioteca Testo dell esercizio Si vuole realizzare una base dati per la gestione di una biblioteca. La base dati conterrà tutte le informazioni
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
Il seguente esempio ha lo scopo di illustrare i 3 tipi di relazione 1:1,1:N,N:N. Tabella Conto: Tabella Conto:
Il seguente esempio ha lo scopo di illustrare i 3 tipi di relazione 1:1,1:N,N:N. Tabella Conto: Tabella Conto: Tabella Cliente: Tabella NumTel: Tabella Dati_Cliente: L'esempio è per ragioni di chiarezza
Le query. Lezione 6 a cura di Maria Novella Mosciatti
Lezione 6 a cura di Maria Novella Mosciatti Le query Le query sono oggetti del DB che consentono di visualizzare, modificare e analizzare i dati in modi diversi. Si possono utilizzare query come origine
CONCETTO DI ANNIDAMENTO
LEZIONE14 SQL ANNIDAMENTI PAG. 1 / 5 PROF. ANDREA ZOCCHEDDU LEZIONE14 SQL ANNIDAMENTI CONCETTO DI ANNIDAMENTO LINGUAGGIO SQL QUERY ANNIDATE Per annidamento si intende la possibilità che, all interno di
Database 1 biblioteca universitaria. Testo del quesito
Database 1 biblioteca universitaria Testo del quesito Una biblioteca universitaria acquista testi didattici su indicazione dei professori e cura il prestito dei testi agli studenti. La biblioteca vuole
Lezioni di Laboratorio sui Data Base
Lezioni di Laboratorio sui Data Base Docente Tutor: Dott. Gianluigi Roveda Informatica per l'impresa Prima Parte: Open Office - Base PREMESSA Questo lavoro è stato realizzato a partire dalle slides del
SERVIZIO DI MESSAGGISTICA ALL UTENTE. Manuale per l operatore
SERVIZIO DI MESSAGGISTICA ALL UTENTE Manuale per l operatore rev. 02 giugno 2010 SOMMARIO COME USARE IL PROGRAMMA PER LA MESSAGGISTICA...3 COSA BISOGNA FARE PRIMA DI INIZIARE A UTILIZZARE IL PROGRAMMA...3
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
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
Università degli Studi di Ferrara - A.A. 2014/15 Dott. Valerio Muzzioli ORDINAMENTO DEI DATI
ORDINAMENTO DEI DATI Quando si ordina un elenco (ovvero una serie di righe contenenti dati correlati), le righe sono ridisposte in base al contenuto di una colonna specificata. Distinguiamo due tipi di
IL DAT A B A S E DI ALGE B R A N D O
IL DAT A B A S E DI ALGE B R A N D O Un progetto di: Davide Valeriani Matricola 190883 [email protected] Corso di laurea in Ingegneria Informatica Esame di Basi di Dati A Prof. Stefano
Corso di Sistemi di Elaborazione delle informazioni
Corso di Sistemi di Elaborazione delle informazioni Basi di Dati Claudio Marrocco I report I Report sono lo strumento più adatto per ottenere una copia stampata dei dati e delle informazioni ricavate dalle
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
Esercitazione di riepilogo sulle Query MySQL Giugno 2011 Classe VB Informatica
Istituto di Istruzione Superiore Alessandrini - Marino 1 Esercitazione di riepilogo sulle Query MySQL Giugno 2011 Classe VB Informatica Descrizione Un azienda commerciale che vende prodotti IT (computers,
Progettazione di Database. Un Esempio
Progettazione di Database Un Esempio Data Base Management System Applicazione 1 Applicazione 2 Applicazione 3 DBMS A B C D E Il Modello Relazionale Una relazione è costituita su un insieme di domini, non
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,
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
Database Lezione 1. Sommario. - Introduzione - Tabelle e chiave primaria - Query - Calcoli ed alias - Ordinamento
Sommario - Introduzione - Tabelle e chiave primaria - Query - Calcoli ed alias - Ordinamento Introduzione - Un database è un archivio strutturato di dati che può essere manipolato con dei comandi nel linguaggio
Database 3 affitto veicoli. Testo del quesito
Database 3 affitto veicoli Testo del quesito La società salento trasporti dispone di diversi tipi di veicoli (moto, auto, furgoni, camion, ) che affitta ai propri clienti. La società vuole informatizzare
Basi di Dati e Microsoft Access
Basi di Dati e Microsoft Access Lun: 16-18 e Mer: 14-17 Alessandro Padovani [email protected] Database: definizione Un database (DB) è una collezione di informazioni organizzata in gruppi, che consentono
Università degli Studi di Verona. Laboratorio di Basi di Dati
Università degli Studi di Verona Laboratorio di Basi di Dati Introduzione ad OOo Base: Creazione Tabelle Gabriele Pozzani: [email protected] Materiale prodotto da: Dott.ssa Barbara Oliboni Database:
Sistemi per la gestione di database: MySQL ( )
Sistemi per la gestione di database: MySQL ( ) Relational Database e Relational Database Management System Un database è una raccolta di dati organizzata in modo da consentire l accesso, il reperimento
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
ARCHIVI E DATABASE (prof. Ivaldi Giuliano)
ARCHIVI E DATABASE (prof. Ivaldi Giuliano) Archivio: è un insieme di registrazioni (o records) ciascuna delle quali è costituita da un insieme prefissato di informazioni elementari dette attributi (o campi).
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; --------+------+-----+---------+----------------+
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
Hub-PA Versione 1.0.6 Manuale utente
Hub-PA Versione 1.0.6 Manuale utente (Giugno 2014) Hub-PA è la porta d ingresso al servizio di fatturazione elettronica verso la Pubblica Amministrazione (PA) a disposizione di ogni fornitore. Questo manuale
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
Dispensa DB Mercato del Lavoro
Dispensa DB Mercato del Lavoro Assumiamo come partenza che nella tabella Stato presente nel DB sono elencati tre codici, con i quali possiamo agevolmente sviluppare delle query che poi, a sua volta saranno
Come modificare la propria Home Page e gli elementi correlati
Come modificare la propria Home Page e gli elementi correlati Versione del documento: 3.0 Ultimo aggiornamento: 2006-09-15 Riferimento: webmaster ([email protected]) La modifica delle informazioni
IL MIO PRIMO SITO: NEWS
Pagina 1 IL MIO PRIMO SITO: NEWS Sommario IL MIO PRIMO SITO: NEWS...1 Introduzione...2 I Contenitori...2 Creo un Contenitore...3 I Tracciati...4 Creo le Notizie...6 Inserisco il Testo...6 Inserisco un
Le Basi di Dati. Le Basi di Dati
Le Basi di Dati 20/05/02 Prof. Carlo Blundo 1 Le Basi di Dati Le Base di Dati (database) sono un insieme di tabelle di dati strutturate in maniera da favorire la ricerca di informazioni specializzate per
Si formulino le seguenti interrogazioni tramite il linguaggio SQL:
Informatica per le Scienze Umane - Corso di Laurea in Lettere Appello del 15.01.2009 - Docente: Massimo Coppola Modello Relazionale e SQL Si consideri la seguente base di dati relativa alla redazione di
Access. P a r t e p r i m a
Access P a r t e p r i m a 1 Esempio di gestione di database con MS Access 2 Cosa è Access? Access e un DBMS che permette di progettare e utilizzare DB relazionali Un DB Access e basato sui concetti di
GERARCHIE RICORSIVE - SQL SERVER 2008
GERARCHIE RICORSIVE - SQL SERVER 2008 DISPENSE http://dbgroup.unimo.it/sia/gerarchiericorsive/ L obiettivo è quello di realizzare la tabella di navigazione tramite una query ricorsiva utilizzando SQL SERVER
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
www.filoweb.it STAMPA UNIONE DI WORD
STAMPA UNIONE DI WORD Molte volte abbiamo bisogno di stampare più volte lo stesso documento cambiando solo alcuni dati. Potremmo farlo manualmente e perdere un sacco di tempo, oppure possiamo ricorrere
Progettazione di un Database
Progettazione di un Database Per comprendere il processo di progettazione di un Database deve essere chiaro il modo con cui vengono organizzati e quindi memorizzati i dati in un sistema di gestione di
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
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
Esercizio sui data base "Gestione conti correnti"
Database "Gestione conto correnti" Testo del quesito La banca XYZ vuole informatizzare le procedure di gestione dei conti correnti creando un archivio dei correntisti (Cognome, Nome, indirizzo, telefono,
SISTEMI INFORMATIVI AVANZATI -2010/2011 1. Introduzione
SISTEMI INFORMATIVI AVANZATI -2010/2011 1 Introduzione In queste dispense, dopo aver riportato una sintesi del concetto di Dipendenza Funzionale e di Normalizzazione estratti dal libro Progetto di Basi
Guida all uso di Java Diagrammi ER
Guida all uso di Java Diagrammi ER Ver. 1.1 Alessandro Ballini 16/5/2004 Questa guida ha lo scopo di mostrare gli aspetti fondamentali dell utilizzo dell applicazione Java Diagrammi ER. Inizieremo con
CREAZIONE DI UN DATABASE E DI TABELLE IN ACCESS
CONTENUTI: CREAZIONE DI UN DATABASE E DI TABELLE IN ACCESS Creazione database vuoto Creazione tabella Inserimento dati A) Creazione di un database vuoto Avviamo il programma Microsoft Access. Dal menu
Sistemi Mobili e Wireless Android - Dati persistenti: SQLite
Sistemi Mobili e Wireless Android - Dati persistenti: SQLite Stefano Burigat Dipartimento di Matematica e Informatica Università di Udine www.dimi.uniud.it/burigat [email protected] Android offre
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
LUdeS Informatica 2 EXCEL. Seconda parte AA 2013/2014
LUdeS Informatica 2 EXCEL Seconda parte AA 2013/2014 STAMPA Quando si esegue il comando FILE STAMPA, Excel manda alla stampante tutte le celle del foglio di lavoro corrente che hanno un contenuto. Il numero
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
corso di Access MICROSOFT ACCESS Docente: Andrea Mereu Università degli studi di Cagliari 16 aprile 9 maggio 2012
1 MICROSOFT ACCESS 1 Docente: Andrea Mereu Università degli studi di Cagliari 16 aprile 9 maggio 2012 Che cos'è Access? 2 Access è un'applicazione database (DBMS), cioè un programma che serve a gestire
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
( x) ( x) 0. Equazioni irrazionali
Equazioni irrazionali Definizione: si definisce equazione irrazionale un equazione in cui compaiono uno o più radicali contenenti l incognita. Esempio 7 Ricordiamo quanto visto sulle condizioni di esistenza
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
SQL e ACCESS. Modello relazionale PROBLEMA ENTITA STUDENTE
SQL e ACCESS Prof. Salvatore Multazzu ([email protected]) Applicazioni Informatiche nella comunicazione Modello relazionale Entità Record o Ennuple Attributi o Campi Tipi Chiavi Primarie (PK)
WoWords. Guida all uso: creare ed utilizzare le frasi. In questa guida è descritto come creare ed utilizzare le frasi nel software WoWords.
In questa guida è descritto come creare ed utilizzare le frasi nel software WoWords. Premessa Oltre alle singole parole WoWords può gestire intere frasi in inglese. A differenza delle singole parole, le
SQL: definizione schema
Si Clienti(codice,nome,indirizzo,p_iva) scriva il SQL che definisce il seguente schema relazionale Prodotti(codice,nome,descrizione,prezzo) SQL: definizione schema Fatture(codice,cliente,data) RigheFattura(codice,fattura,prodotto,quantità,prezzo)
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
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
Esercitazione 1. Sistemi Informativi T. Versione elettronica: L01.2.DDLDMLbase.pdf
Esercitazione 1 SQL: DDL e DML di base Sistemi Informativi T Versione elettronica: L01.2.DDLDMLbase.pdf Prime cose da fare Fare login sul PC usando lo username di Facoltà Procedura descritta qui: http://ccib.ing.unibo.it/content/account
M:\Manuali\VARIE\GENERAZIONE REPORT PARAMETRICI.doc GENERAZIONE REPORT PARAMETRICI
M:\Manuali\VARIE\GENERAZIONE REPORT PARAMETRICI.doc GENERAZIONE REPORT PARAMETRICI Di seguito, riportiamo le istruzioni per la gestione delle query parametriche utile ad eventuali ricerche di casi particolari,
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
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
a.a. 2012/13 12 Novembre 2012 Preparazione al Test in itinere, Compito A 1. Modellare tramite uno schema entità- relazione la seguente base di dati:
Gestione dei dati e della conoscenza, a.a. 2012/13 12 Novembre 2012 Preparazione al Test in itinere, Compito A 1. Modellare tramite uno schema entità- relazione la seguente base di dati: Si vuole modellare
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 Utilizzando Microsoft Access Si crea la tabella Anagrafica degli alunni,le Materie e i voti si mettono
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,
Modulo 4: Ereditarietà, interfacce e clonazione
Modulo 4: Ereditarietà, interfacce e clonazione Argomenti Trattati: Classi, Superclassi e Sottoclassi Ereditarietà Ereditarietà ed Attributi Privati Override super Ereditarietà e Costruttori Polimorfismo
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
SQL Sintassi Dei Comandi
SQL Sintassi Dei Comandi Di Roberto Aloi http://prof3ta.homeunix.org [email protected] Questo fascicolo è stato realizzato esclusivamente a fini divulgativi e per la libera consultazione. E' concessa la
SQL. Structured Query Language
Structured Query Language fields seleziona i campi (colonne) da visualizzare table specifica la tabella da cui leggere i dati WHERE condizione seleziona i record (righe) da visualizzare expression è possibile
Tutte le interrogazioni possono essere condotte su qualsiasi campo della banca dati (ad esempio, Forma, Frequenza, Lunghezza, ecc...).
ESEMPIO DI QUERY SUL FILE Formario_minuscolo Tutte le interrogazioni possono essere condotte su qualsiasi campo della banca dati (ad esempio, Forma, Frequenza, Lunghezza, ecc...). Durante l interrogazione,
Basi di Dati Prof. L. Tanca e F. A. Schreiber APPELLO DEL 12 FEBBRAIO 2015 PARTE 1
Basi di Dati Prof. L. Tanca e F. A. Schreiber APPELLO DEL 12 FEBBRAIO 2015 PARTE 1 Si consideri il seguente schema di base di dati che vuole tenere traccia delle attività di un autofficina. MECCANICO (CodiceFiscale,
5.3 TABELLE 5.3.1 RECORD 5.3.1.1 Inserire, eliminare record in una tabella Aggiungere record Eliminare record
5.3 TABELLE In un sistema di database relazionali le tabelle rappresentano la struttura di partenza, che resta poi fondamentale per tutte le fasi del lavoro di creazione e di gestione del database. 5.3.1
SQL/OLAP. Estensioni OLAP in SQL
SQL/OLAP Estensioni OLAP in SQL 1 Definizione e calcolo delle misure Definire una misura significa specificare gli operatori di aggregazione rispetto a tutte le dimensioni del fatto Ipotesi: per ogni misura,
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. [email protected] Università degli Studi di L Aquila Dipartimento di Informatica Technolabs
