SlideShare a Scribd company logo
1 of 17
Download to read offline
SISTEMI INFORMATIVI PER LA
  GESTIONE DELL’AZIENDA
       dott. ing. Francesco Guerra
      francesco.guerra@unimore.it
SISTEMI INFORMATIVI PER LA GESTIONE DELL’AZIENDA




                                                        Introduzione al linguaggio SQL




                                                                 dott. ing. Francesco Guerra   2

            2                                      DB
SISTEMI INFORMATIVI PER LA GESTIONE DELL’AZIENDA


                                                                                                             Il linguaggio SQL

                                                        SQL e’ il linguaggio di riferimento per le basi di dati
                                                        relazionali.
                                                        Il linguaggio SQL contiene al suo interno le funzionalità di:
                                                           DDL (Data Definition Language): insieme di comandi per la
                                                           definizione dello schema di una base di dati relazionale
                                                           DML (Data Manipulation language): insieme di comandi per la
                                                           modifica e l’interrogazione dell’istanza di una base di dati
                                                           DCL (Data Control Language): insieme di comandi per la
                                                           gestione degli utenti e dei privilegi di accesso.




                                                                               dott. ing. Francesco Guerra                   3

            2                                      DB
SISTEMI INFORMATIVI PER LA GESTIONE DELL’AZIENDA


                                                                                    Il linguaggio SQL: tipi di dato

                                                        Il linguaggio SQL mette a disposizione 6 famiglie di domini
                                                        elementari:
                                                           Caratteri
                                                           Bit
                                                           Tipi numerici esatti
                                                           Tipi numerici approssimati
                                                           Data e ora
                                                           Intervalli temporali


                                                        Nuove versioni dello standard (SQL:1999) hanno introdotto
                                                        nuovi domini:
                                                           Boolean, BLOB, CLOB


                                                                               dott. ing. Francesco Guerra            4

            2                                      DB
SISTEMI INFORMATIVI PER LA GESTIONE DELL’AZIENDA


                                                                     Il linguaggio SQL: definizione di tabella

                                                        Una tabella e’ costituita da una collezione di attributi e da
                                                        un insieme (eventualmente) vuoto di attributi:

                                                        create table NomeTabella
                                                     (NomeAttributo Dominio [Valore Default] [Vincoli]
                                                       {, NomeAttributo Dominio [Valore Default] [Vincoli]}
                                                        Altri Vincoli
                                                     )
                                                   Vincoli intrarelazionali: check, not null, unique, primary key
                                                   Vincoli interrelazionali: foreign key




                                                                               dott. ing. Francesco Guerra              5

            2                                      DB
SISTEMI INFORMATIVI PER LA GESTIONE DELL’AZIENDA


                                                                            Il linguaggio SQL: interrogazioni

                                                        SQL esprime le interrogazioni in modo dichiarativo, ovvero
                                                        viene specificato l’obiettivo dell’interrogazione e non il
                                                        modo in cui ottenerlo.
                                                        L’interrogazione viene passata all’ottimizzatore, un
                                                        componente del DBMS che analizza l’interrogazione e
                                                        formula una interrogazione nel linguaggio procedurale
                                                        interno utilizzato dal DBMS (il linguaggio procedurale
                                                        specifica i passi necessari per ottenere il risultato).
                                                        In generale, esistono diversi modi per esprimere la stessa
                                                        interrogazione.




                                                                             dott. ing. Francesco Guerra             6

            2                                      DB
SISTEMI INFORMATIVI PER LA GESTIONE DELL’AZIENDA


                                                                           Il linguaggio SQL: interrogazioni (2)

                                                        Sintassi per l’interrogazione:
                                                        Select <lista select>
                                                        From <lista from>
                                                        [Where <condizione>]
                                                        [Order by <lista order>]

                                                           Clausola select: specifica gli elementi dello schema della
                                                           tabella risultato
                                                           Clausola from: indica le tabelle sulle quali effettuare
                                                           l’interrogazione
                                                           Clausola where: specifica le condizioni sulle quali verificare
                                                           l’interrogazione
                                                           Clausola order by: specifica un’ordinamento del risultato


                                                                                dott. ing. Francesco Guerra                 7

            2                                      DB
SISTEMI INFORMATIVI PER LA GESTIONE DELL’AZIENDA


                                                                              Il linguaggio SQL: clausola select

                                                        E’ possibile selezionare tutti gli attributi attraverso un unico
                                                        simbolo *
                                                        Possono comparire delle generiche espressioni sul valore
                                                        degli attributi di ciascuna riga selezionata:
                                                        Select stipendio/12 as stipendio_mensile




                                                                               dott. ing. Francesco Guerra                 8

            2                                      DB
SISTEMI INFORMATIVI PER LA GESTIONE DELL’AZIENDA


                                                    Il linguaggio SQL: clausola where predicati semplici

                                                     Predicati semplici: operatori =,<>,>, >=, <, <=
                                                   pag 142/143 [BERGAMASCHI]
                                                     Nel caso in cui i predicati sono separati dall’operatore and,
                                                     sono selezionate solo le righe nelle quali tutti i predicati
                                                     sono veri.
                                                     Quando i predicati sono separati dall’operatore or, sono
                                                     selezionate solo le righe per cui almeno uno dei predicati
                                                     risulta vero.
                                                     L’operatore logico not è unario e inverte il valore di verita’
                                                     del predicato.
                                                     Se si esprime una relazione con l’uso di and e or, conviene
                                                     esplicitare l’ordine di valutazione mediante l’uso delle
                                                     parentesi.
                                                         Selezionare gli studenti iscritti al primo anno di corso e che
                                                         risiedano a Modena o a Reggio Emilia
                                                                              dott. ing. Francesco Guerra                 9

            2                                      DB
SISTEMI INFORMATIVI PER LA GESTIONE DELL’AZIENDA


                                                    Il linguaggio SQL: clausola where predicati semplici

                                                        Uso del like: nel confronto tra stringhe l’operatore like
                                                        permette di utilizzare dei caratteri speciali _ per
                                                        rappresentare il confronto con un carattere arbitrario e %
                                                        per una stringa di un numero arbitrario (eventualmente
                                                        nullo) di caratteri arbitrari.




                                                                              dott. ing. Francesco Guerra            10

            2                                      DB
SISTEMI INFORMATIVI PER LA GESTIONE DELL’AZIENDA


                                                                     Il linguaggio SQL: gestione dei duplicati

                                                        E’ possibile che una interrogazione restituisca più volte uno
                                                        stesso valore (anni di corso degli studenti che abitano a
                                                        Modena).
                                                           L’eliminazione dei duplicati è specificata con la parola chiave
                                                           distinct.
                                                           Se la clausola select contiene una primary key per ogni tabella
                                                           che compare nella clausola from, il risultato non contiene dei
                                                           duplicati




                                                                               dott. ing. Francesco Guerra               11

            2                                      DB
SISTEMI INFORMATIVI PER LA GESTIONE DELL’AZIENDA


                                                                                                           Il linguaggio SQL

                                                        Operatori quantificati: pag 143 [BERGAMASCHI]
                                                        ANY | ALL


                                                        Operatore di confronto con valori NULL:
                                                        Attributo is [not] null


                                                        Ordinamento del risultato: pag 143 [BERGAMASCHI]
                                                        Order by Attributo [asc | desc] {, Attributo [asc | desc]}




                                                                             dott. ing. Francesco Guerra                  12

            2                                      DB
SISTEMI INFORMATIVI PER LA GESTIONE DELL’AZIENDA


                                                              Il linguaggio SQL: prodotto cartesiano e join

                                                        pag 144/151 [BERGAMASCHI]
                                                        Sintassi:
                                                        Select attr
                                                        From Tabella [[as] Alias]
                                                          {[TipoJoin] join Tabella [[as] Alias] on CondizionediJoin}

                                                          TipoJoin:
                                                             Inner   default, si puo’ omettere
                                                             Right outer
                                                             Left outer
                                                             Full outer




                                                                               dott. ing. Francesco Guerra             13

            2                                      DB
SISTEMI INFORMATIVI PER LA GESTIONE DELL’AZIENDA


                                                                  Il linguaggio SQL: interrogazioni innestate

                                                        Una interrogazione e’ innestata se la sua condizione e’
                                                        formulata utilizzando il risultato di un’altra interrogazione,
                                                        chiamata subquery:
                                                           Operatori quantificati
                                                           Operatori di set
                                                           Quantificatore esistenziale


                                                        pag 152/158 [BERGAMASCHI]




                                                                                dott. ing. Francesco Guerra              14

            2                                      DB
SISTEMI INFORMATIVI PER LA GESTIONE DELL’AZIENDA


                                                                       Il linguaggio SQL: operatori aggregati

                                                        Gli operatori aggregati sono gestiti come una estensione
                                                        delle normali interrogazioni: prima viene eseguita
                                                        l’interrogazione e poi viene applicato l’operatore aggregato.
                                                        Ci sono 5 operatori aggregati:
                                                           Count
                                                           Sum
                                                           Max
                                                           Min
                                                           Avg


                                                        pag 159/160 [BERGAMASCHI]



                                                                              dott. ing. Francesco Guerra           15

            2                                      DB
SISTEMI INFORMATIVI PER LA GESTIONE DELL’AZIENDA


                                                                                                            Bibliografia

                                                        Atzeni, Ceri, Paraboschi, Torlone: Basi di dati: Modelli e
                                                        linguaggi di interrogazione, McGraw-Hill
                                                        Beneventano, Bergamaschi, Guerra, Vincini: Progetto di
                                                        basi di dati relazionali, Pitagora Editrice Bologna, 2007




                                                                              dott. ing. Francesco Guerra             16

            2                                      DB
SISTEMI INFORMATIVI PER LA GESTIONE DELL’AZIENDA


                                                                                                              Schema di esempio
                                                   S(Matr,SNome,Citta,ACorso)
                                                   C(CC,CNome,CD)
                                                        FK: CD REFERENCES D
                                                   D(CD,CNome,Citta)
                                                   E(Matr,CC,Data,Voto)
                                                        FK: Matr REFERENCES S
                                                        FK: CC REFERENCES C




                                                                                dott. ing. Francesco Guerra                   17

            2                                      DB

More Related Content

Viewers also liked

05 - Programmazione: Funzioni
05 - Programmazione: Funzioni05 - Programmazione: Funzioni
05 - Programmazione: FunzioniMajong DevJfu
 
12 - Programmazione: Array dinamici e puntatori
12 - Programmazione: Array dinamici e puntatori12 - Programmazione: Array dinamici e puntatori
12 - Programmazione: Array dinamici e puntatoriMajong DevJfu
 
03 - Programmazione: Istruzioni C++
03 - Programmazione: Istruzioni C++03 - Programmazione: Istruzioni C++
03 - Programmazione: Istruzioni C++Majong DevJfu
 
09 - Programmazione: Ingegneria del Codice
09 - Programmazione: Ingegneria del Codice09 - Programmazione: Ingegneria del Codice
09 - Programmazione: Ingegneria del CodiceMajong DevJfu
 
Pe a2 perl-documentazione
Pe a2 perl-documentazionePe a2 perl-documentazione
Pe a2 perl-documentazioneMajong DevJfu
 
09 Esercizi Generali
09  Esercizi Generali09  Esercizi Generali
09 Esercizi Generaliguestbe916c
 
08 choosing connectors
08 choosing connectors08 choosing connectors
08 choosing connectorsMajong DevJfu
 
10 - Architetture Software - More architectural styles
10 - Architetture Software - More architectural styles10 - Architetture Software - More architectural styles
10 - Architetture Software - More architectural stylesMajong DevJfu
 
7 - Architetture Software - Software product line
7 - Architetture Software - Software product line7 - Architetture Software - Software product line
7 - Architetture Software - Software product lineMajong DevJfu
 
9 - Architetture Software - SOA Cloud
9 - Architetture Software - SOA Cloud9 - Architetture Software - SOA Cloud
9 - Architetture Software - SOA CloudMajong DevJfu
 
8 - Architetture Software - Architecture centric processes
8 - Architetture Software - Architecture centric processes8 - Architetture Software - Architecture centric processes
8 - Architetture Software - Architecture centric processesMajong DevJfu
 
Pillole di programmazione in C
Pillole di programmazione in CPillole di programmazione in C
Pillole di programmazione in CNicola Corti
 

Viewers also liked (18)

05 - Programmazione: Funzioni
05 - Programmazione: Funzioni05 - Programmazione: Funzioni
05 - Programmazione: Funzioni
 
esercizio sigda n 8
esercizio sigda n 8esercizio sigda n 8
esercizio sigda n 8
 
12 - Programmazione: Array dinamici e puntatori
12 - Programmazione: Array dinamici e puntatori12 - Programmazione: Array dinamici e puntatori
12 - Programmazione: Array dinamici e puntatori
 
03 - Programmazione: Istruzioni C++
03 - Programmazione: Istruzioni C++03 - Programmazione: Istruzioni C++
03 - Programmazione: Istruzioni C++
 
09 - Programmazione: Ingegneria del Codice
09 - Programmazione: Ingegneria del Codice09 - Programmazione: Ingegneria del Codice
09 - Programmazione: Ingegneria del Codice
 
Py a5 python-text
Py a5 python-textPy a5 python-text
Py a5 python-text
 
Pe a2 perl-documentazione
Pe a2 perl-documentazionePe a2 perl-documentazione
Pe a2 perl-documentazione
 
Pe t1 perl-intro
Pe t1 perl-introPe t1 perl-intro
Pe t1 perl-intro
 
5
55
5
 
Py a4 python-file
Py a4 python-filePy a4 python-file
Py a4 python-file
 
09 Esercizi Generali
09  Esercizi Generali09  Esercizi Generali
09 Esercizi Generali
 
08 choosing connectors
08 choosing connectors08 choosing connectors
08 choosing connectors
 
10 - Architetture Software - More architectural styles
10 - Architetture Software - More architectural styles10 - Architetture Software - More architectural styles
10 - Architetture Software - More architectural styles
 
Uml3
Uml3Uml3
Uml3
 
7 - Architetture Software - Software product line
7 - Architetture Software - Software product line7 - Architetture Software - Software product line
7 - Architetture Software - Software product line
 
9 - Architetture Software - SOA Cloud
9 - Architetture Software - SOA Cloud9 - Architetture Software - SOA Cloud
9 - Architetture Software - SOA Cloud
 
8 - Architetture Software - Architecture centric processes
8 - Architetture Software - Architecture centric processes8 - Architetture Software - Architecture centric processes
8 - Architetture Software - Architecture centric processes
 
Pillole di programmazione in C
Pillole di programmazione in CPillole di programmazione in C
Pillole di programmazione in C
 

Similar to 2 Sigda - Database

Guida SQL: le basi per iniziare a programmare i database
Guida SQL: le basi per iniziare a programmare i databaseGuida SQL: le basi per iniziare a programmare i database
Guida SQL: le basi per iniziare a programmare i databaseBTF Traduzioni SEO Sviluppo Web
 
noSQL La nuova frontiera dei Database [DB05-S]
noSQL La nuova frontiera dei Database [DB05-S]noSQL La nuova frontiera dei Database [DB05-S]
noSQL La nuova frontiera dei Database [DB05-S]Andrea Maddalena
 
Basi di dati e gis n
Basi di dati e gis nBasi di dati e gis n
Basi di dati e gis nimartini
 
Note di Data Warehouse e Business Intelligence - Tecniche di Naming Conventio...
Note di Data Warehouse e Business Intelligence - Tecniche di Naming Conventio...Note di Data Warehouse e Business Intelligence - Tecniche di Naming Conventio...
Note di Data Warehouse e Business Intelligence - Tecniche di Naming Conventio...Massimo Cenci
 
2b. lezione ss biblioteca digitale org
2b. lezione ss biblioteca digitale org2b. lezione ss biblioteca digitale org
2b. lezione ss biblioteca digitale orgMau-Messenger
 
Basi di Dati - A1 - Introduzione alle basi di dati
Basi di Dati - A1 - Introduzione alle basi di datiBasi di Dati - A1 - Introduzione alle basi di dati
Basi di Dati - A1 - Introduzione alle basi di datiMajong DevJfu
 
MySQL
MySQLMySQL
MySQLjekil
 
Py a6 python-database
Py a6 python-databasePy a6 python-database
Py a6 python-databaseMajong DevJfu
 
MongoDB
MongoDBMongoDB
MongoDBNaLUG
 
Sql Injection: attacchi e rimedi
Sql Injection: attacchi e rimediSql Injection: attacchi e rimedi
Sql Injection: attacchi e rimediDavide Micale
 

Similar to 2 Sigda - Database (20)

Guida SQL: le basi per iniziare a programmare i database
Guida SQL: le basi per iniziare a programmare i databaseGuida SQL: le basi per iniziare a programmare i database
Guida SQL: le basi per iniziare a programmare i database
 
Basi Di Dati 01
Basi Di Dati 01Basi Di Dati 01
Basi Di Dati 01
 
Dbms
DbmsDbms
Dbms
 
1 Siadb Studenti
1 Siadb Studenti1 Siadb Studenti
1 Siadb Studenti
 
noSQL La nuova frontiera dei Database [DB05-S]
noSQL La nuova frontiera dei Database [DB05-S]noSQL La nuova frontiera dei Database [DB05-S]
noSQL La nuova frontiera dei Database [DB05-S]
 
Basi di dati e gis n
Basi di dati e gis nBasi di dati e gis n
Basi di dati e gis n
 
Note di Data Warehouse e Business Intelligence - Tecniche di Naming Conventio...
Note di Data Warehouse e Business Intelligence - Tecniche di Naming Conventio...Note di Data Warehouse e Business Intelligence - Tecniche di Naming Conventio...
Note di Data Warehouse e Business Intelligence - Tecniche di Naming Conventio...
 
1 Sigda - Database
1 Sigda - Database1 Sigda - Database
1 Sigda - Database
 
2b. lezione ss biblioteca digitale org
2b. lezione ss biblioteca digitale org2b. lezione ss biblioteca digitale org
2b. lezione ss biblioteca digitale org
 
Basi di Dati - A1 - Introduzione alle basi di dati
Basi di Dati - A1 - Introduzione alle basi di datiBasi di Dati - A1 - Introduzione alle basi di dati
Basi di Dati - A1 - Introduzione alle basi di dati
 
ORM - Introduzione
ORM - IntroduzioneORM - Introduzione
ORM - Introduzione
 
MySQL
MySQLMySQL
MySQL
 
Relazione Agic
Relazione AgicRelazione Agic
Relazione Agic
 
Oracle 1
Oracle 1Oracle 1
Oracle 1
 
Py a6 python-database
Py a6 python-databasePy a6 python-database
Py a6 python-database
 
Corso UML
Corso UMLCorso UML
Corso UML
 
MongoDB
MongoDBMongoDB
MongoDB
 
Database Data Aggregator
Database Data AggregatorDatabase Data Aggregator
Database Data Aggregator
 
Sql Injection: attacchi e rimedi
Sql Injection: attacchi e rimediSql Injection: attacchi e rimedi
Sql Injection: attacchi e rimedi
 
Dot net framework 2
Dot net framework 2Dot net framework 2
Dot net framework 2
 

More from Majong DevJfu

6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformation6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformationMajong DevJfu
 
5 - Architetture Software - Metamodelling and the Model Driven Architecture
5 - Architetture Software - Metamodelling and the Model Driven Architecture5 - Architetture Software - Metamodelling and the Model Driven Architecture
5 - Architetture Software - Metamodelling and the Model Driven ArchitectureMajong DevJfu
 
4 - Architetture Software - Architecture Portfolio
4 - Architetture Software - Architecture Portfolio4 - Architetture Software - Architecture Portfolio
4 - Architetture Software - Architecture PortfolioMajong DevJfu
 
3 - Architetture Software - Architectural styles
3 - Architetture Software - Architectural styles3 - Architetture Software - Architectural styles
3 - Architetture Software - Architectural stylesMajong DevJfu
 
2 - Architetture Software - Software architecture
2 - Architetture Software - Software architecture2 - Architetture Software - Software architecture
2 - Architetture Software - Software architectureMajong DevJfu
 
1 - Architetture Software - Software as a product
1 - Architetture Software - Software as a product1 - Architetture Software - Software as a product
1 - Architetture Software - Software as a productMajong DevJfu
 
25 architectural adaptation
25 architectural adaptation25 architectural adaptation
25 architectural adaptationMajong DevJfu
 
24 dssa and_product_lines
24 dssa and_product_lines24 dssa and_product_lines
24 dssa and_product_linesMajong DevJfu
 
22 deployment and_mobility
22 deployment and_mobility22 deployment and_mobility
22 deployment and_mobilityMajong DevJfu
 
21 security and_trust
21 security and_trust21 security and_trust
21 security and_trustMajong DevJfu
 
20 nfp design_techniques
20 nfp design_techniques20 nfp design_techniques
20 nfp design_techniquesMajong DevJfu
 

More from Majong DevJfu (20)

6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformation6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformation
 
5 - Architetture Software - Metamodelling and the Model Driven Architecture
5 - Architetture Software - Metamodelling and the Model Driven Architecture5 - Architetture Software - Metamodelling and the Model Driven Architecture
5 - Architetture Software - Metamodelling and the Model Driven Architecture
 
4 - Architetture Software - Architecture Portfolio
4 - Architetture Software - Architecture Portfolio4 - Architetture Software - Architecture Portfolio
4 - Architetture Software - Architecture Portfolio
 
3 - Architetture Software - Architectural styles
3 - Architetture Software - Architectural styles3 - Architetture Software - Architectural styles
3 - Architetture Software - Architectural styles
 
2 - Architetture Software - Software architecture
2 - Architetture Software - Software architecture2 - Architetture Software - Software architecture
2 - Architetture Software - Software architecture
 
1 - Architetture Software - Software as a product
1 - Architetture Software - Software as a product1 - Architetture Software - Software as a product
1 - Architetture Software - Software as a product
 
Uml2
Uml2Uml2
Uml2
 
6
66
6
 
4 (uml basic)
4 (uml basic)4 (uml basic)
4 (uml basic)
 
3
33
3
 
2
22
2
 
1
11
1
 
Tmd template-sand
Tmd template-sandTmd template-sand
Tmd template-sand
 
26 standards
26 standards26 standards
26 standards
 
25 architectural adaptation
25 architectural adaptation25 architectural adaptation
25 architectural adaptation
 
24 dssa and_product_lines
24 dssa and_product_lines24 dssa and_product_lines
24 dssa and_product_lines
 
23 intro to_dsse
23 intro to_dsse23 intro to_dsse
23 intro to_dsse
 
22 deployment and_mobility
22 deployment and_mobility22 deployment and_mobility
22 deployment and_mobility
 
21 security and_trust
21 security and_trust21 security and_trust
21 security and_trust
 
20 nfp design_techniques
20 nfp design_techniques20 nfp design_techniques
20 nfp design_techniques
 

2 Sigda - Database

  • 1. SISTEMI INFORMATIVI PER LA GESTIONE DELL’AZIENDA dott. ing. Francesco Guerra francesco.guerra@unimore.it
  • 2. SISTEMI INFORMATIVI PER LA GESTIONE DELL’AZIENDA Introduzione al linguaggio SQL dott. ing. Francesco Guerra 2 2 DB
  • 3. SISTEMI INFORMATIVI PER LA GESTIONE DELL’AZIENDA Il linguaggio SQL SQL e’ il linguaggio di riferimento per le basi di dati relazionali. Il linguaggio SQL contiene al suo interno le funzionalità di: DDL (Data Definition Language): insieme di comandi per la definizione dello schema di una base di dati relazionale DML (Data Manipulation language): insieme di comandi per la modifica e l’interrogazione dell’istanza di una base di dati DCL (Data Control Language): insieme di comandi per la gestione degli utenti e dei privilegi di accesso. dott. ing. Francesco Guerra 3 2 DB
  • 4. SISTEMI INFORMATIVI PER LA GESTIONE DELL’AZIENDA Il linguaggio SQL: tipi di dato Il linguaggio SQL mette a disposizione 6 famiglie di domini elementari: Caratteri Bit Tipi numerici esatti Tipi numerici approssimati Data e ora Intervalli temporali Nuove versioni dello standard (SQL:1999) hanno introdotto nuovi domini: Boolean, BLOB, CLOB dott. ing. Francesco Guerra 4 2 DB
  • 5. SISTEMI INFORMATIVI PER LA GESTIONE DELL’AZIENDA Il linguaggio SQL: definizione di tabella Una tabella e’ costituita da una collezione di attributi e da un insieme (eventualmente) vuoto di attributi: create table NomeTabella (NomeAttributo Dominio [Valore Default] [Vincoli] {, NomeAttributo Dominio [Valore Default] [Vincoli]} Altri Vincoli ) Vincoli intrarelazionali: check, not null, unique, primary key Vincoli interrelazionali: foreign key dott. ing. Francesco Guerra 5 2 DB
  • 6. SISTEMI INFORMATIVI PER LA GESTIONE DELL’AZIENDA Il linguaggio SQL: interrogazioni SQL esprime le interrogazioni in modo dichiarativo, ovvero viene specificato l’obiettivo dell’interrogazione e non il modo in cui ottenerlo. L’interrogazione viene passata all’ottimizzatore, un componente del DBMS che analizza l’interrogazione e formula una interrogazione nel linguaggio procedurale interno utilizzato dal DBMS (il linguaggio procedurale specifica i passi necessari per ottenere il risultato). In generale, esistono diversi modi per esprimere la stessa interrogazione. dott. ing. Francesco Guerra 6 2 DB
  • 7. SISTEMI INFORMATIVI PER LA GESTIONE DELL’AZIENDA Il linguaggio SQL: interrogazioni (2) Sintassi per l’interrogazione: Select <lista select> From <lista from> [Where <condizione>] [Order by <lista order>] Clausola select: specifica gli elementi dello schema della tabella risultato Clausola from: indica le tabelle sulle quali effettuare l’interrogazione Clausola where: specifica le condizioni sulle quali verificare l’interrogazione Clausola order by: specifica un’ordinamento del risultato dott. ing. Francesco Guerra 7 2 DB
  • 8. SISTEMI INFORMATIVI PER LA GESTIONE DELL’AZIENDA Il linguaggio SQL: clausola select E’ possibile selezionare tutti gli attributi attraverso un unico simbolo * Possono comparire delle generiche espressioni sul valore degli attributi di ciascuna riga selezionata: Select stipendio/12 as stipendio_mensile dott. ing. Francesco Guerra 8 2 DB
  • 9. SISTEMI INFORMATIVI PER LA GESTIONE DELL’AZIENDA Il linguaggio SQL: clausola where predicati semplici Predicati semplici: operatori =,<>,>, >=, <, <= pag 142/143 [BERGAMASCHI] Nel caso in cui i predicati sono separati dall’operatore and, sono selezionate solo le righe nelle quali tutti i predicati sono veri. Quando i predicati sono separati dall’operatore or, sono selezionate solo le righe per cui almeno uno dei predicati risulta vero. L’operatore logico not è unario e inverte il valore di verita’ del predicato. Se si esprime una relazione con l’uso di and e or, conviene esplicitare l’ordine di valutazione mediante l’uso delle parentesi. Selezionare gli studenti iscritti al primo anno di corso e che risiedano a Modena o a Reggio Emilia dott. ing. Francesco Guerra 9 2 DB
  • 10. SISTEMI INFORMATIVI PER LA GESTIONE DELL’AZIENDA Il linguaggio SQL: clausola where predicati semplici Uso del like: nel confronto tra stringhe l’operatore like permette di utilizzare dei caratteri speciali _ per rappresentare il confronto con un carattere arbitrario e % per una stringa di un numero arbitrario (eventualmente nullo) di caratteri arbitrari. dott. ing. Francesco Guerra 10 2 DB
  • 11. SISTEMI INFORMATIVI PER LA GESTIONE DELL’AZIENDA Il linguaggio SQL: gestione dei duplicati E’ possibile che una interrogazione restituisca più volte uno stesso valore (anni di corso degli studenti che abitano a Modena). L’eliminazione dei duplicati è specificata con la parola chiave distinct. Se la clausola select contiene una primary key per ogni tabella che compare nella clausola from, il risultato non contiene dei duplicati dott. ing. Francesco Guerra 11 2 DB
  • 12. SISTEMI INFORMATIVI PER LA GESTIONE DELL’AZIENDA Il linguaggio SQL Operatori quantificati: pag 143 [BERGAMASCHI] ANY | ALL Operatore di confronto con valori NULL: Attributo is [not] null Ordinamento del risultato: pag 143 [BERGAMASCHI] Order by Attributo [asc | desc] {, Attributo [asc | desc]} dott. ing. Francesco Guerra 12 2 DB
  • 13. SISTEMI INFORMATIVI PER LA GESTIONE DELL’AZIENDA Il linguaggio SQL: prodotto cartesiano e join pag 144/151 [BERGAMASCHI] Sintassi: Select attr From Tabella [[as] Alias] {[TipoJoin] join Tabella [[as] Alias] on CondizionediJoin} TipoJoin: Inner default, si puo’ omettere Right outer Left outer Full outer dott. ing. Francesco Guerra 13 2 DB
  • 14. SISTEMI INFORMATIVI PER LA GESTIONE DELL’AZIENDA Il linguaggio SQL: interrogazioni innestate Una interrogazione e’ innestata se la sua condizione e’ formulata utilizzando il risultato di un’altra interrogazione, chiamata subquery: Operatori quantificati Operatori di set Quantificatore esistenziale pag 152/158 [BERGAMASCHI] dott. ing. Francesco Guerra 14 2 DB
  • 15. SISTEMI INFORMATIVI PER LA GESTIONE DELL’AZIENDA Il linguaggio SQL: operatori aggregati Gli operatori aggregati sono gestiti come una estensione delle normali interrogazioni: prima viene eseguita l’interrogazione e poi viene applicato l’operatore aggregato. Ci sono 5 operatori aggregati: Count Sum Max Min Avg pag 159/160 [BERGAMASCHI] dott. ing. Francesco Guerra 15 2 DB
  • 16. SISTEMI INFORMATIVI PER LA GESTIONE DELL’AZIENDA Bibliografia Atzeni, Ceri, Paraboschi, Torlone: Basi di dati: Modelli e linguaggi di interrogazione, McGraw-Hill Beneventano, Bergamaschi, Guerra, Vincini: Progetto di basi di dati relazionali, Pitagora Editrice Bologna, 2007 dott. ing. Francesco Guerra 16 2 DB
  • 17. SISTEMI INFORMATIVI PER LA GESTIONE DELL’AZIENDA Schema di esempio S(Matr,SNome,Citta,ACorso) C(CC,CNome,CD) FK: CD REFERENCES D D(CD,CNome,Citta) E(Matr,CC,Data,Voto) FK: Matr REFERENCES S FK: CC REFERENCES C dott. ing. Francesco Guerra 17 2 DB