presentazione standard di powerpoint...• date le relazioni r1, r2, …,rn onsideriamo...
TRANSCRIPT
![Page 1: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/1.jpg)
SQL
Concetti base
Prof. Aniello Cimitile
![Page 2: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/2.jpg)
Gli standard
• E’ un linguaggio fondato su uno Standard, ovvero su un documento formale di definizione prodotto dalla ISO ( International Standard Organization ) che ne cura anche l’aggiornamento e l’evoluzione
![Page 3: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/3.jpg)
IL PRIMO SANDARD:
3 Anni per produrlo • ISO 157 paesi
• IEC 60 paesi
• In ISO gli organismi di standardizzazione nazionali
– ANSI
– BSI
– DIN
– AFNOR
– JISC
– CEI/UNI
– ………….
ISO
JTC1
IEC
SQL ISO 9075: 1987
![Page 4: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/4.jpg)
… le origini …
• IBM Research Laboratory - San Josè
– Dove lavorava Codd
• … 1974 D.D. Chamberlain definisce
SEQUEL (Structured English Query Language)
• … 1977 prime versioni commerciali su SEQUEL/2
• … 1982 IBM usa la sigla SQL , … anche per DB2 nel 1983
• ANSI comincia a lavorare alla standardizzazione
• ANSI pubblica lo standard X3.155 nel 1986
• ISO adotta e completa la proposta ANSI e nel 1987 pubblica lo standard SQL ISO : 9075 , viene indicato come SQL- 86
![Page 5: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/5.jpg)
L’evoluzione dello standard
• ISO 9076 : 1989
Indicato con SQL-89
• ISO/IEC 9075 : 1992
July 30
Indicato come SQL - 2
• SQL : 1999
• SQL : 2003
• SQL : 2008
• SQL : 2011
Indicati come SQL - 3
SQL – 2 è il linguaggio di riferimento
SQL-3 introduce estensioni ( per oggetti, Java, XML, ….)
![Page 6: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/6.jpg)
DD Definizione dei dati
DM Modifica dei Dati
QL Interrogazioni
![Page 7: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/7.jpg)
i Tipi ( …Domini)
character [varying] [( Lunghezza )] character char è il tipo carattere character ( k ) char ( k) k è una costante intera; è il tipo stringa di caratteri di lunghezza fissa k character varying ( k ) varchar (k)
k è una costante intera; è il tipo stringa di caratteri di lunghezza variabile ed al massimo pari a k
![Page 8: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/8.jpg)
Numerici esatti
numeric [ (Precisione [ , Scala ] )]
decimal [ (Precisione [ , Scala ] )]
tipo numerico a virgola fissa; Precisione è una
costante intera che indica il numero di cifre significative (1 per default); Scala è una costante intera che indica il numero di cifre dopo il punto decimale (0 per default)
esempi numeric (4) -9999 +9999 numeric ( 6 , 2) -9999.99 +9999.99
![Page 9: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/9.jpg)
• L’importanza dei tipi numerici esatti nelle applicazioni non tecnico-scientifiche
• Numeric e Decimal sono funzionalmente equivalenti … ( dettagli implementativi con differente interpretazione della precisione…)
• Altri, noti e con precisione fissata nelle specifiche implementazioni del linguaggio
integer smallint
![Page 10: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/10.jpg)
• Numerici variabili
– real
– double precision
– float [( k)] consente di specificare la precisione k desiderata
• Temporali
– date yyyy – mm - dd
– time [Precisione] HH: MM: SS [.ssssss]
– Timestamp [Precisione] yyyy-mm-dd H H:MM: SS[.ssssss]
• Intervalli Temporali
– interval Per indicare un intervallo temporale in anni, mesi,… ore, etc..
• Es. interval ‘ 5 ‘ YEAR è un intervallo di 5 anni
interval ‘ 80 – 6’ YEAR TO MONTH è un intervallo di 80 anni e 6 mesi
![Page 11: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/11.jpg)
… altri …
• In SQL-2 rimossi con SQL -3 – bit
– bit (k)
– bit varying ( k )
• In SQL -3 – Boolean …. a tre valori … { T, F, UN}
– BLOB
– CLOB
– bigint
![Page 12: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/12.jpg)
TIPI di UTENTE
• Tipi definiti dall’utente a partire dai tipi primitivi o da tipi di utente precedentemente definiti
• Un tale tipo richiede che vengano specificati: – Il nome
– Il tipo da cui è derivato
– Il valore di default, se si vuole
– Gli eventuali vincoli restrittivi rispetto al tipo da cui è derivato
![Page 13: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/13.jpg)
create domain NuovoTipo as Definizione [default Valore] [ Vincolo]
Es. create domain Tqualifica as char (10) default ‘ Impiegato’ create domain Tvoto as smallint default ‘null’ check ( value >= 18 and value <= 30)
![Page 14: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/14.jpg)
La principale istruzione DD di
SQL
create table NomeTabella
(NomeAttributo Dominio [ vincoli]
{, NomeAttributo Dominio [ vincoli] }
)
![Page 15: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/15.jpg)
create table IMPIEGATI
(
CODE numeric (5) primary Key ,
NOME char (40) not null ,
INDIRIZZO varchar (200) ,
SESSO char ,
SECTOR_COD char(3) references DIPART (SECTOR_CODE),
TEL_UF numeric (9) unique ,
STIPENDIO numeric (6) default 0
)
RELAZIONE
ATTRIBUTO
TIPO
VINCOLO
![Page 16: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/16.jpg)
• C’è una differenza fra la Table di SQL … e la relazione
– Nella table SQL è possibile avere righe uguali
– Perché sia una relazione:
DEVE SEMPRE ESSERE ESPLICITAMENTE DEFINITA UNA CHIAVE, ovvero ALMENO UN ATTRIBUTO DEVE ESSERE VINCOLATO A CHIAVE
WARNING
![Page 17: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/17.jpg)
Chiavi
• Per la specifica delle chiavi è a disposizione la clausola PRIMARY KEY – PRIMARY KEY è il vincolo di Chiave Primaria (impone che i
valori siano non nulli e diversi in ogni tupla, e quindi implica i vincoli NOT NULL e UNIQUE) • Si può avere UNA SOLA chiave primaria con uno o più attributi
primi; • La clausola subito dopo l’attributo primo se la chiave è composta
da un solo attributo o, più in gnerale, con apposita istruzione PRIMARY KEY (ListaAttributi)
– Altri con vincolo di univocità :UNIQUE • Dopo l’attributo vincolato • o, se su più attributi UNIQUE ( ListaAttributi)
![Page 18: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/18.jpg)
• create table STUDENTE
(
NOME char (20) not null
COGNOME char (20) not null
unique ( COGNOME, NOME )
……………….
)
• create table STUDENTE
(
NOME char (20) not null unique
COGNOME char (20) not null unique
………………..
)
WARNING
Non sono la stessa cosa
![Page 19: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/19.jpg)
Create STUDENTE
(
MATRICOLA char ( 9) primary key
………………….
)
Create STUDENTE
(
MATRICOLA char ( 9)
primary key (MATRICOLA)
………………….
)
s Sono la Stessa cosa
![Page 20: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/20.jpg)
… altri vincoli intrarelazionali …
• Obbligatorietà di valore per attributo
– NOT NULL
– DEFAULT val
• Vincoli predicativi su attributo o su tuple
– CHECK ( p )
• Dove p è un predicato ….
![Page 21: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/21.jpg)
… vincoli interrelazionali …
• sostanzialmente vincoli di integrità referenziale – Un attributo della relazione ( referente, o anche interna) fa riferimento ad un
attributo di un’altra relazione ( riferita, o Anche esterna): il vincolo impone che ogni valore ( non nullo) dell’attributo referente esistente in tabella, sia un valore dell’attributo riferito esistente nella tabella della relazione riferita
• … sono disponibili – references RELRIFERITA ( ATTRIBUTORIFERITO)
– foreign key ( ListaAttributiReferenti) references RELRIFERITA ( ListaAttributiRiferiti)
NB . Gli attributi Riferiti debbono formare chiave o essere vincolati UNIQUE
![Page 22: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/22.jpg)
DD Definizione dei dati
DM Modifica dei Dati
QL Interrogazioni
![Page 23: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/23.jpg)
L’istruzione SELECT
• È il costrutto linguistico fondamentale di QL
• La sua struttura base è composta da una sequenza di tre sezioni
– La sezione di apertura è detta clausola SELECT o anche Target List, ed è obbligatoria
– La seconda sezione è detta clausola FROM ed è obbligatoria
– La terza sezione è detta clausola WHERE ed è opzionale
![Page 24: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/24.jpg)
• La prima sezione Definisce gli Attributi della relazione risultato ( le informazioni che vogliamo ….)
• La seconda sezione le Relazioni da cui bisogna derivare il risultato
• La terza sezione definisce le eventuali condizioni di derivazione
select ListaAttributi from ListaTabelle [where Condizione]
![Page 25: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/25.jpg)
… con una sola relazione …
…dalla Tabella R … voglio le colonne di A, B, C …
![Page 26: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/26.jpg)
Studente Voto Lode Data
30501 26 no 15/01/2014
30541 30 si 20/01/2014
30489 28 no 03/02/2014
30511 30 si 05/02/2014
30497 18 no 03/02/2014
30503 27 no 20/01/2014
Studente Data
30501 15/01/2014
30541 20/01/2014
30489 03/02/2014
30511 05/02/2014
30497 03/02/2014
30503 20/01/2014
select STUDENTE, DATA from ESAMI
ESAMI
![Page 27: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/27.jpg)
WARNING
• In SQL le Tabelle non sono Relazioni …
Studente Voto Lode Data
30501 26 no 15/01/2014
30541 30 si 20/01/2014
30489 28 no 03/02/2014
30511 30 si 05/02/2014
30497 18 no 03/02/2014
30503 27 no 20/01/2014
Data
15/01/2014
20/01/2014
03/02/2014
05/02/2014
Data
15/01/2014
20/01/2014
03/02/2014
05/02/2014
03/02/2014
20/01/2014
select DATA from ESAMI
![Page 28: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/28.jpg)
• … un primo arricchimento: l’opzione
distinct
associata a select … elimina ogni duplicazione di tupla
select [distinct ] ListaAttributi
from Tabella
Solo se lista attributi contiene una chiave o si è
aggiunta l’opzione distinct … abbiamo l’equivalenza con la proiezione…
![Page 29: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/29.jpg)
Studente Voto Lode Data
30501 26 no 15/01/2014
30541 30 si 20/01/2014
30489 28 no 03/02/2014
30511 30 si 05/02/2014
30497 18 no 03/02/2014
30503 27 no 20/01/2014
Data
15/01/2014
20/01/2014
03/02/2014
05/02/2014
select distinct DATA from ESAMI
ESAMI
Progetto Nomeprog
INGINF42 ISIDE
INGINF03 SINTESI
Nomeprog Ricercatore Progetto
ISIDE Visaggio INGINF42
ISIDE Mercaldo INGINF42
SINTESI Visaggio INGINF03
RICERCATORI
select distinct PROGETTO,NOMEPROG
from RICERCATORI
![Page 30: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/30.jpg)
• … un secondo arricchimento: nel definire gli attributi con la clausola select, posso ridenominarli
nella ListaAttributi, per ogni attributo può essere usata l’opzione as seguita dal nuovo nome
NomeAttributo as NewAttributo
![Page 31: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/31.jpg)
select distinct FILM as GRANDIFILM
from INTERPRETI
INTERPRETI
Interprete FILM Anno
Robert De Niro Taxi Driver 1976
Richard Gere Pretty Woman 1990
Roberto Benigni La vita è bella 1997
Kristin Scott Thomas La chiave di Sara 2010
Vivien Leigh Via col vento 1939
Meryl Streep Kramer contro Kramer 1983
Giulia Roberts Pretty Woman 1990
GRANDI FILM
Taxi Driver
Pretty Woman
La vita è bella
La chiave di Sara
Via col vento
Kramer contro Kramer
![Page 32: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/32.jpg)
• select [distinct] Attributo [as NuovoNome ] {, Attributo [as NuovoNome ] }
from Tabella
…. l’istruzione consente di ridenominare attributi di una relazione …
…e farne una proiezione
![Page 33: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/33.jpg)
![Page 34: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/34.jpg)
• …. Il nuovo assetto della target list
select [distinct] <Attrib [as NuovoNome ] | e(Attrib) as NuovoNome>
{, Attrib [as NuovoNome ] | e(Attrib) as NuovoNome }
dove e (Attrib) è una espressione aritimetica .. .
• …ampia possibilità di scelta e ridefinizione di attributi, … ma anche di lasciare nella relazione risultato tutti gli attributi delle relazioni operando
select * Dove * sta per tutti gli attributi delle tabelle elencate nella clausola from
![Page 35: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/35.jpg)
La selezione dell’algebra relazionale è realizzabile con la clausola where
![Page 36: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/36.jpg)
Studente Voto Lode Data
30501 26 no 15/01/2014
30541 30 si 20/01/2014
30489 28 no 03/02/2014
30511 30 si 05/02/2014
30497 18 no 03/02/2014
30503 27 no 20/01/2014
Studente Voto Lode Data
30541 30 si 20/01/2014
30511 30 si 05/02/2014
select * from ESAMI where VOTO = 30
ESAMI
![Page 37: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/37.jpg)
… con più relazioni …
• Date le Relazioni R1, R2, …,Rn consideriamo l’istruzione
Select *
From R1,R2,…,Rn
Avendo rinunciato alla clausola where e alla selezione di attributi ( quindi in pratica anche all’azione della clausola select) , è attiva la sola clausola from
…. è il prodotto cartesiano R1x R2 x …Rn (con ridenominazione implicita )
![Page 38: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/38.jpg)
• … nella istruzione select … from … where ..
– from descrive il prodotto cartesiano
– where la selezione
– select la proiezione e la ridenominazione
select R1.AttrA, …. , Rh. AttrY from R1, R2, …..Rn where p
Le seguenti interrogazioni sono equivalenti
![Page 39: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/39.jpg)
• Osserviamo che, poiché per le relazioni in from parliamo di ridenominazione implicita e al generico attributo AX di Ri facciamo riferimento con Ri.AX,
• Ricordando che Se gli schemi degli operandi non hanno attributi uguali, Join Naturale coincide col Prodotto cartesiano,
select R1.AttrA, …. , Rh. AttrY from R1, R2, …..Rn where p
sono equivalenti anche
![Page 40: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/40.jpg)
create table IMPIEGATI ( COD numeric (5) primary Key NOME char (40) not null INDIRIZZO varchar (200) SESSO char SETTORE char(3) UFFICIO char (3) TEL_UF numeric (9) unique STIPENDIO numeric (7,2) default 0 PREMIPROD numeric (6,2) default 0 QUALIFICA varchar ( 20 ) foreign key (UFFICIO, SETTORE)
references UFFICI ( UFF_COD, SET_COD) ) create table DSTAFF (
COD numeric(5) primary key NOME varchar (50) STIPENDIO numeric(8,2) )
create table UFFICI ( UFF_COD char(3)
SET_COD char(3) references SETTORI (CODICE) NOMEUFF varchar (50) CAPUFF numeric(5) references DSTAFF (COD) SEDE varchar (100) PECMAIL char(15) unique primary key ( UFF_COD, SET_COD) ) create table SETTORI (
CODICE char(3) primary key NOMESET varchar (50) unique DIRIGENTE numeric(5) references DSTAFF (COD) )
![Page 41: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/41.jpg)
• ESERCIZIO 1: elenco telefonico aziendale degli impiegati – select NOME, TEL_UF from IMPIEGATI
• ESERCIZIO 2 : elenco impiegati con ufficio – select COD, NOME, UFFICIO from IMPIEGATI
• ESERCIZIO 3: solo impiegate (tutte le informazioni) – select * from IMPIEGATI where SESSO= ‘F’
• ESERCIZIO 4 : elenco impiegate con ufficio e telefono – select NOME, UFFICIO, TEL_UF from IMPIEGATI where SESSO= ‘F’
![Page 42: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/42.jpg)
![Page 43: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/43.jpg)
• select SETTORI.NOMSET, DSTAFF.NOME
from SETTORI, DSTAFF
where SETTORI.DIRIGENTE = DSTAFF.COD
• select UFFICI.NOMEUFF, DSTAFF.NOME
from UFFICI, DSTAFF
where UFFICI.CAPUFF = DSTAFF.COD
![Page 44: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/44.jpg)
… as in from …
• La individuazione degli attributi nelle clausole select e where attraverso la notazione
nomerelazione.nomeattributo
può essere ‘alleggerita’ sostituendo a nomerelazione
un altro identificatore univocamente definito (Alias)
from Relazione [[as] Alias]
{,Relazione [[as] Alias]}
![Page 45: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/45.jpg)
• select S.NOMSET, D.NOME
from SETTORI as S, DSTAFF as D
where S.DIRIGENTE = D.COD
• select U.NOMEUFF, D.NOME
from UFFICI U, DSTAFF D
where U.CAPUFF = D.COD
Scegliere un equilibrato compromesso fra esigenza di stringatezza ed agilità e quella di identificatori ‘significativi’ … Anteporre sempre la esigenza di chiarezza ed agevole riconoscimento ‘semantico’
![Page 46: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/46.jpg)
…operatore like in where…
• è un operatore di confronto fra stringhe di caratteri in cui una delle due stringhe ha componenti costanti ed altre variabili
• le componenti variabili della stringa vengono rappresentate con due simboli chiave : _ %
_ il carattere underscore indica un qualsiasi carattere
% indica una qualsiasi sottostringa di caratteri di lunghezza compatibile ….
![Page 47: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/47.jpg)
• ESEMPIO
NOMEUFF like ‘ % PROTOCOLLO %’
L’operazione di confronto da risultato TRUE se la parola PROTOCOLLO è contenuta nel valore di NOMEUFF
La sottostringa rappresentata da % può anche essere vuota
select NOMEUFF, PECMAIL from UFFICI where NOMEUFF like ‘% PROTOCOLLO %’
Tutte le tuple che nel nome dell’ufficio hanno la parola PROTOCOLLO
![Page 48: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/48.jpg)
select *
from IMPIEGATI
where INDIRIZZO like ‘% BENEVENTO %’
select *
from DSTAFF
where NOME like ‘ PAOLO D_ MA_O’
Di Majo, De Majo, Di Maio, De Maio, Da Maio … Di Mare, De Mare, …
Beneventani o no, ma … abitano qui
![Page 49: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/49.jpg)
SQL e Algebra Relazionale
• SQL è un linguaggio di interrogazione dichiarativo: – Specifica l’obiettivo dell’interrogazione ( una
descrizione del risultato desiderato e delle sue caratteristiche)
• L’Algebra Relazionale è un linguaggio di interrogazione procedurale: – Descrive le operazioni ( un algoritmo) da fare per
ottenere il risultato desiderato
N.B. … ovviamente SQL è fondato sui principi del calcolo relazionale …
![Page 50: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/50.jpg)
• ESERCIZIO 8
– Nome e Qualifica di tutti gli impiegati che hanno uno stipendio > 70000 euro e lavorano nel settore diretto da Mario Esposito
Quante e quali relazioni saranno coinvolte nella clusola from ?
Ci sarà davvero il prodotto cartesiano di tali relazioni?
![Page 51: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/51.jpg)
• Le operazioni ovvero gli algoritmi che verranno eseguiti per ottenere il risultato descritto da interrogazioni SQL verranno definiti dal DBMS
• … che seguirà criteri di efficienza compilando interrogazioni equivalenti «ottimizzate» nel linguaggio procedurale interno
Interrogazione SQL
Interrogazione Procedurale Interna QUERY
OPTIMIZER
![Page 52: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/52.jpg)
• Chi scrive interrogazioni SQL può trascurare gli aspetti di ‘ottimizzazione’ per l’efficienza, e anteporre l’esigenza di CHIAREZZA
• … chi lavora ai ‘query optimizer’ dei DBMS …
• … tools sempre più sofisticati ed efficienti, fondati su raffinate tecniche di ottimizzazione …
Esempio: … evitare quanto più è possibile prodotti cartesiani …
![Page 53: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/53.jpg)
• ESERCIZIO 8: codice , nomi ‘operai’ e nome settore di appartenenza
• ESERCIZIO 9: codice, nome, nome ufficio e nome settore di ogni impiegato
• ESERCIZIO 10: tutti gli impiegati che hanno uno stipendio superiore a 70000 euro e hanno come dirigente di settore Mario Esposito
sia interrogazione in SQL che in Algebra Relazionale
![Page 54: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/54.jpg)
Esplicite Operazioni di Join
• Abbiamo sottolineato come le operazioni di Theta Join ( Equi-Join inclusa ) possono essere implicitamente realizzate inserendo nella clausola where le condizioni di giunzione
• SQL – 2 offre anche la possibilità di ricorrere ad un esplicito operatore di Join inseribile direttamente nella clausola from dove vengono naturalmente spostate le condizioni di ϴ - Join
![Page 55: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/55.jpg)
• select *
from R1, R2
where p
• select *
• from R1 join R2 on p
Join Implicito
Join Esplicito
NB. p: confronto fra un attributo di R1 ed uno di R2
![Page 56: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/56.jpg)
Codice Nomeprog
INGINF42 ISIDE
INGINF03 SINTESI
Ricercatore Progetto
Visaggio INGINF42
Mercaldo INGINF42
Visaggio INGINF03
Codice Nomeprog Ricercatore Progetto
INGINF42 ISIDE Visaggio INGINF42
INGINF42 ISIDE Mercaldo INGINF42
INGINF03 SINTESI Visaggio INGINF03
Progetti
Ricercatori
select * from Progetti P join Ricercatori R on P.CODICE = R. Progetto
Codice Nomeprog Ricercatore
INGINF42 ISIDE Visaggio
INGINF42 ISIDE Mercaldo
INGINF03 SINTESI Visaggio
select P.CODICE, NOMEPROG, RICERCATORE from Progetti P join Ricercatori R on P.CODICE = R. Progetto
![Page 57: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/57.jpg)
aggiorniamo la clausola from …
from Relazione [[ as ] alias ] {[ TipoJoin] join Relazione [[as] alias] on CondJoin} dove TipoJoin è una delle seguenti qualificazioni: natural right [outer] left [outer] full [outer] inner
![Page 58: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/58.jpg)
• Riscrivere soluzione ESERCIZIO 6 utilizzando l’operatore Join
• Riscrivere soluzione ESERCIZIO 7 utilizzando l’operatore Join
• select SETTORI.NOMSET, DSTAFF.NOME
from SETTORI join DSTAFF
on SETTORI.DIRIGENTE =DSTAFF.COD
• select UFFICI.NOMEUFF, DSTAFF.NOME
from UFFICI join DSTAFF
on UFFICI.CAPUFF = DSTAFF.COD
![Page 59: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/59.jpg)
Nome Cognome Seduta
Ciro Bianchi 2
Alba Verde 1
Rosa Aulente 2
Fosco Avaro 1
Nome Cognome Tasse
Aldo Rossi Si
Rosa Spinosa No
Ciro Bianchi Si
Alba Verde Si
Fosco Avaro No
Nome Cognome
Seduta Tasse
Ciro Bianchi 2 Si
Alba Verde 1 Si
Rosa Aulente 2 NULL
Fosco Avaro 1 No
Prenotati InRegola
![Page 60: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/60.jpg)
Nome Cognome Seduta
Ciro Bianchi 2
Alba Verde 1
Rosa Aulente 2
Fosco Avaro 1
Nome Cognome Tasse
Aldo Rossi Si
Rosa Spinosa No
Ciro Bianchi Si
Alba Verde Si
Fosco Avaro No
Prenotati InRegola
Nome Cognome
Seduta Tasse
Ciro Bianchi 2 Si
Alba Verde 1 Si
Aldo Rossi NULL Si
Rosa Spinosa NULL No
Fosco Avaro 1 No
![Page 61: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/61.jpg)
• ESERCIZIO 11
– Ancora sugli esercizi 6 e 7
• Invece di join fare l’operazione di left join e … commentare
• Invece di join fare l’operazione di right join e spiegarne … commentare
DIRIGENTE e CAPUFF … e valori NULL
![Page 62: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/62.jpg)
OPERAZIONI NON RELAZIONALI
• Abbiamo già visto l’uso di operatori aritmetici nella clausola select
• … introduciamo la possibilità di introdurre una relazione d’ordine fra le tuple del risultato di una query
• NB. Nell’algebra relazionale le tuple delle istanze di una relazione sono non ordinate ..
![Page 63: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/63.jpg)
la clausola order by
• Poiché gli attributi di una relazione possono essere di tipo ordinato ( es. il tipo carattere ed i tipi numerici), è possibile pensare di ordinare le tuple secondo i valori di uno degli attributi ordinati ( … ordinare le righe sulla base dell’ordinamento dei valori di una colonna)
order by AttributoDiOrdinamento [ asc | desc ]
{, AttributoDiOrdinamento [ asc | desc ]}
![Page 64: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/64.jpg)
![Page 65: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/65.jpg)
• Prima ordinamento secondo il primo attributo della lista; per righe che per tale attributo presentano lo stesso valore, si ordina secondo l’attributo successivo … e così via
• Esempio:
select *
from DSTAFF
order by NOME, COD desc
… a parità di Nome viene prima quello con il COD più piccolo …
![Page 66: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/66.jpg)
Nome Cognome Seduta
Ciro Bianchi 2
Alba Verde 1
Rosa Aulente 2
Ottavio Bianchi Si
Bianca Verde Si
Fosco Avaro 1 Nome Cognome
Rosa Aulente
Fosco Avaro
Ottavio
Bianchi
Ciro Bianchi
Bianca Verde
Alba Verde
select Nome, Cognome from Prenotati order by Cognome, Nome desc
![Page 67: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/67.jpg)
Operatori su aggregati
• Un operatore che applicato ad una relazione ci consenta di estrarne la cardinalità ( … numero di tuple, … numero righe della tabella …)
• L’operatore count (*) nella clausola select
Esempio: select count (*) from PRENOTATI Restituisce come risultato il numero dei prenotati
![Page 68: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/68.jpg)
• È possibile fare l’operazione di conteggio count sui valori di un attributo o di un insieme di attributi ?
• … e se non è coinvolta una chiave ( … e quindi sono possibili ripetizioni di valori) stabilire se il conteggio deve riguardare tutti i valori o solo quelli diversi ( … non conteggio dei doppioni) ?
Count (* | ([distinct|all ] ListaAttributi )
NB. Per default si ha ALL ( conta anche i doppioni ) ALL non conta i NULL
![Page 69: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/69.jpg)
select count (*) from IMPIEGATI
select count (*) from IMPIEGATI
where QUALIFICA = ‘OPERAI ’
select count (distinct DIRIGENTI) from SETTORI
Numero Impiegati
Numero Dirigenti
Numero Operai
![Page 70: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/70.jpg)
• I valori NULL nel count su un attributo non vengono considerati
Nome Cognome Seduta Tasse
Ciro Bianchi 2 Si
Alba Verde 1 Si
Rosa Aulente 2 NULL
Fosco Avaro 1 No
ESAMI2
select count(*) from ESAMI2 Risultato 4
select count(TASSE) from ESAMI2 Risultato 3
select count ( distinct TASSE) from ESAMI2 Risultato 2
![Page 71: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/71.jpg)
• Operazioni su tutti i valori di un attributo ( … i valori di una colonna …)
– Quando il tipo dell’attributo è numerico si possono fare
• Somma di tutti i valori
• Media di tutti i valori
– Quando il tipo è ordinato
• Individuazione del Massimo
• Individuazione del Minimo
NB. I valori NULL non vengono presi in considerazione
ALTRE OPERAZIONI
![Page 72: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/72.jpg)
• Inserire l’operazione nella clausola select secondo
op ([distinct|all ] NomeAttributo )
• Dove op è una fra
sum
max
min
avg
![Page 73: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/73.jpg)
select avg ( all STIPENDIO) from IMPIEGATI
select avg ( distinct STIPENDIO) from IMPIEGATI
select min ( STIPENDIO) from IMPIEGATI
select sum ( all PREMIPROD) from IMPIEGATI
select max ( PREMIPROD) from IMPIEGATI
Costo Medio Stipendi
Stipendio Medio
Stipendio Minimo
Montepremio produzione
Premio Prod
Massimo
![Page 74: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/74.jpg)
select min ( STIPENDIO), max (STIPENDIO), avg (distinct STIPENDIO)
from IMPIEGATI
select min ( STIPENDIO), max (STIPENDIO), avg (distinct STIPENDIO)
from IMPIEGATI
where QUALIFICA = ‘OPERAI’
select sum ( PREMIPROD), avg (distinct STIPENDIO), avg (PREMIPROD)
from IMPIEGATI
where SESSO = ‘F’
Stipendio Minimo, Massimo e Medio di un dipendente
Montepremio, Stipendio e Premio Produzione
Medio delle donne
Stipendio Minimo, Massimo e Medio di un operaio
![Page 75: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/75.jpg)
Le clausole di raggruppamento
• È possibile applicare le operazioni count, min, max, avg, sum su aggregati che non siano costituiti da tutte le tuple (righe) della relazione (tabella)?
• E’ possibile farlo grazie ad una clausola che consente di partizionare l’insieme delle tuple definite da from e where in sottoinsiemi di tuple (righe) aventi lo stesso valore per uno o più attributi (una o più colonne)
![Page 76: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/76.jpg)
La clausola group by
• La clausola :
group by ListaAttributi definisce la organizzazione delle tuple in gruppi aventi lo stesso valore per gli attributi di ListaAttributi
Esempio:
select SETTORE, sum ( PREMIPROD)
from IMPIEGATI
group by SETTORE
![Page 77: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/77.jpg)
SETTORE PREMI PROD
ST1 6000
ST3 5300
ST1 2400
ST2 8000
ST3 2700
ST2 15000
ST1 7500
SETTORE PREMIPROD
ST1 6000
ST1 2400
ST1 7500
ST3 5300
ST3 2700
ST2 8000
ST2 15000
SETTORE SUM(PREMIPROD)
ST1 15900
ST3 8000
ST2 23000
Settore e Premiprod da IMPIEGATI
...il raggruppamneto …
...il risultato …
![Page 78: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/78.jpg)
• ESERCIZIO 12
come nell’esempio precedente ma anche con nome dei settori
WARNING
Se si usa la clausola group by, gli attributi usati nella clausola select debbono far parte di quelli usati
nella stessa clausola group
![Page 79: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/79.jpg)
• ESERCIZIO 13
Numero di impiegati maschi e donne
select SESSO , count(*)
from IMPIEGATI
group by SESSO
• ESERCIZIO 14
Settori in codice e nome col numero di dipendenti
select I.SETTORI, S.NOMESET, count (*)
from SETTORI S join IMPIEGATI I
on I.SETTORE= S.CODICE
group by I.SETTORE, S.NOMESET
![Page 80: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/80.jpg)
La clausola having
• … la possibilità di selezionare fra gli aggregati prodotti da group solo quelli che soddisfano una condizione p
having p
Esempio: select SETTORE, sum ( PREMIPROD) from IMPIEGATI group by SETTORE having sum (PREMIPROD) > 8500
![Page 81: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/81.jpg)
SETTORE SUM(PREMIPROD)
ST1 15900
ST3 8000
ST2 23000
SETTORE SUM(PREMIPROD)
ST1 15900
ST2 23000
con clausola having > 8500
Senza clausola having
![Page 82: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/82.jpg)
• Possiamo avere predicati p sia nella clausola where che nella clausola having
• Distingueremo:
– Predicati semplici : espressioni senza operatori su aggregati
– Predicati su aggregati : espressioni con operatori su aggregati ( count, sum, avg, min, max)
È opportuno: Nella clausola having SOLO PREDICATI SU AGGREGATI
…invece, predicati semplici in clausola where
![Page 83: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/83.jpg)
ESERCIZIO 15 Codice , nome e numero di dipendenti dei settori con media di premi produzione superiore ad 800
select I.SETTORI, S.NOMESET, count (*)
from SETTORI S join IMPIEGATI I
on I.SETTORE= S.CODICE
group by I.SETTORE, S.NOMESET
having avg (PREMIPROD) > 800
ESERCIZIO 16 Codice, Nome, stipendio minimo, stipendio massimo, stipendio medio di tutti gli uffici con più di due dipendenti
![Page 84: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/84.jpg)
Istruzione select SQL
– Due sezioni fisse introdotte dalle clausole
• select
• from
– Quattro sezioni opzionali introdotte dalle clausole
• where
• group by
• having
• order by
IstruzioneSELECT : : = select ListaAttrEspr from ListaTabelle [ where CondizioneSemplice] [ group by ListaAttrDiRaggruppamento ] [ having CondizizioneSuAggregati ] [ order by ListaAttrDiOrdinamento ]
![Page 85: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/85.jpg)
OPERAZIONI INSIEMISTICHE
• SQL mette a disposizione gli operatori
– union per l’Unione
– intersect per l’intersezione
– except per la differenza
• … con la seguente sintassi
IstruzioneSelect ( union|intersect|except ) IstruzioneSelect
![Page 86: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/86.jpg)
select (*) from STUDENTIDB intersect select (*) from STUDENTIPROG
select (*) from STUDENTIDB except select (*) from STUDENTIPROG
Studenti sia di DB che di PROG
Studenti di DB Ma non di PROG
![Page 87: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/87.jpg)
• select NOMEUFF
from UFFICI
union
select NOMESET
from SETTORI
Elenco Settori ed Uffici
È possibile perché NOMEUFF e NOMESET sono dello stesso tipo varchar (50)
NB. Essendo operazioni su insiemi vengono eliminati eventuali doppioni …
se si vogliono mantenere aggiungere l’opzione all IstSelect ( union|intersect|except ) [ all ] IstSelect
![Page 88: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/88.jpg)
INTERROGAZIONI NIDIFICATE NELLA CLAUSOLA where
![Page 89: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/89.jpg)
• L’insieme a cui applicare un operatore di appartenenza o di esistenza può essre ottenuto attraverso il NESTING di una istruzione select nella clausola where
• …interpretando il risultato della select innestata come un insieme di tuple
• …al quale si possono applicare gli operatori SQL IN NOT IN ANY ALL
![Page 90: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/90.jpg)
• Esempio: vogliamo conoscere il nome dei Settori il cui dirigente percepisce uno stipendio superiore a 150000 euro
select NOMESET from SETTORI where DIRIGENTE in ( select COD from DSTAFF where STIPENDIO> 150000 )
ESERCIZIO 17 : formulare la stessa interrogazione senza far ricorso al nesting ( nidificazione) di query
![Page 91: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/91.jpg)
Condizioni in where con any o all
![Page 92: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/92.jpg)
• ESEMPIO: vogliamo i nomi dei settori in cui non lavorino impiegati di cognome Rossi
select NOMESET from SETTORI where CODICE <> all ( select SETTORE from IMPIEGATI where NOME = (%ROSSI) )
• ESERCIZIO 18 : formulare la stessa interrogazione senza far ricorso al nesting ( nidificazione) di query
![Page 93: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/93.jpg)
• ESERCIZIO 19: nomi impiegati con lo stipendio più elevato
select NOME
from IMPIEGATI
where STIPENDIO
>= all ( select STIPENDIO
from IMPIEGATI
)
• ESERCIZIO 20: nomi dei dirigenti che non sono al massimo stipendio
select NOME
from DSTAFF
where STIPENDIO
< any ( select STIPENDIO
from DSTAFF
)
![Page 94: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/94.jpg)
• ESERCIZIO 21: nomi impiegati che lavorano in uno degli uffici di protocollo
select NOME from IMPIEGATI where UFFICIO = any ( select COD_UFF from UFFICI where NOMEUFF = (% PROTOCOLLO%) )
![Page 95: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/95.jpg)
Un altro operatore
• Un operatore per verificare che il risultato di una query innestata non sia VUOTO
exists Query
Ne vedremo nel seguito qualche esempio di applicazione
![Page 96: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/96.jpg)
Studenti con voto superiore alla media
![Page 97: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/97.jpg)
ESERCIZIO 22 Nome degli impiegati che hanno uno stipendio superiore alla media ESERCIZIO 23 Nome degli impiegati che hanno uno stipendio superiore a quello di uno o più dirigenti ESERCIZIO 24 Nome degli impiegati che guadagnano più del dirigente del proprio settore ESERCIZIO 25 Nome dei Capiufficio con stipendio più alto di quello del proprio dirigente di settore
![Page 98: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/98.jpg)
Select NOME from IMPIEGATI I where STIPENDIO > ( select STIPENDIO from DSTAFF D, SETTORI S where I.SETTORE = S.CODICE and S.DIRIGENTE = D.COD )
Una soluzione ES 24
Passaggio di BINDING
![Page 99: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/99.jpg)
REGOLE DI VISIBILITA’
• In un nesting di query ciascuna di esse può far riferimento a ciò che è definito nelle query più esterne ( quella Q1 in cui è innestata, la Q2 in cui è innestata Q1, … etc.) ( salvo eventuali ridefinizioni locali )
• Non vale il contrario, né è possibile riferire ciò che è definito in query che non siano un diretto ascendente nella propria catena di innesto ( … non è possibile riferirsi a … fratelli, zii, etc. )
![Page 100: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/100.jpg)
• ESERCIZIO 26 Estrarre da Impiegati quelli che hanno degli impiegati omonimi select * from IMPIEGATI I where exists ( select * from IMPIEGATI I2 where I2.NOME = I.NOME and I2.COD < > I.COD ) Uso di
exists
DUE RIFERIMENTI ALLA QUERY ESTERNA
![Page 101: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/101.jpg)
ESERCIZIO 27 Vogliamo i Capiufficio degli uffici appartenenti al settore ragioneria o a settori che hanno lo stesso dirigente della ragioneria select CAPUFF from UFFICI where SET_COD in (select COD from SETTORI S where NOMSET = ‘ RAGIONERIA’) or in ( select COD from SETTORI S1 where S. DIRIGENTE = S1.DIRIGENTE)
ERRORE: tutto ciò che Riguarda S NON E’ VISIBILE da questa query
Formulare una soluzione Corretta dell’esercizio
![Page 102: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/102.jpg)
Risolvere con e senza operatore exists i seguenti esercizi
ESERCIZIO 28
Nome Stipendio dipendenti che lavorano in uffici con sede a Benevento
ESECIZIO 29
Nome uffici in cui lavorano donne
![Page 103: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/103.jpg)
… qualche avvertenza …
• Il ricorso a query innestate ( dette anche subquery) può porre problemi di efficienza ma può offrire vantaggi di maggiore leggibilità
• … sulla ottimizzazione e sulla efficienza, rilevante differenza fra nesting con e senza passaggio di binding
• … in assenza di binding, una subquery può essere eseguita una sola volta e prima di analizzare le tuple ( righe) della query che la contiene
• … in presenza di binding la subquery deve essere eseguita per ogni tupla della query esterna
NB. Le subquery NON POSSONO contenere gli operatori inisemistici ( UNION, INTERSECT, EXCEPT)
![Page 104: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/104.jpg)
DD Definizione dei dati
DM Modifica dei Dati
QL Interrogazioni
![Page 105: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/105.jpg)
OPERAZIONI DI MODIFICA
• Operazioni sulla istanza di una relazione
– Modifica dell’insieme delle tuple
– Modifica dei valori di una o più tuple
• Operazioni sullo schema della tabella
– Modifica della Lista degli attributi
– Modifica di vincoli
![Page 106: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/106.jpg)
MODIFICA DELL’ISTANZA
• Sono operazioni di inserimento, eliminazione o aggiornamento ( cambiamenti di valori) di una o più tuple ( righe ) di una relazione (tabella)
insert
delete
update
![Page 107: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/107.jpg)
Operazione insert
• insert into NomeRelazione [ ListaAttributi]
Values (ListaValori | IstrSelect)
Opzione ListaValori : l’inserimento si riferisce ad una sola riga e la lista specifica i valori delle colonne Opzione IstrSelect : l’inserimento si riferisce a tutte le righe del risultato dell’operazione select
![Page 108: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/108.jpg)
• ESEMPIO Insert into DSTAFF (COD, NOME, STIPENDIO) values ( 00123 , ‘SIMEONE PAOLI’, 57000) È l’istruzione usata nel «caricamento dati» da parte di un utente o di «un terminalista»; in questi casi, in generale, l’istruzione viene ‘nascosta’ attraverso ‘maschere (o form)’ che agevolano l’utente guidandolo all’inserimento dati ‘voce’ ( attributo) per voce
La corrispondenza fra Attributi e Valori è POSIZIONALE
![Page 109: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/109.jpg)
• ESEMPIO insert into CNTRLMEDICO ( COD, NOME) ( select COD, NOME from IMPIEGATI where QUALIFICA = (‘OPERAIO’) ) insert into CNTRLMEDICO ( COD, NOME) ( select COD, NOME from IMPIEGATI where UFFICIO in ( select UFF_COD from UFFICI where NOMEUFF = ( % LABORATORIO% ) ) )
Inserimento nella tabella Delle visite mediche di
Tutti gli operai
Inserimento ….. quelli che Lavorano nei laboratori
Nesting di select in Insert into
Nesting di select in Insert into
e di select in select
![Page 110: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/110.jpg)
WARNING
• Naturalmente, il tipo degli attributi delle tuple da inserire ( nel caso di select) o dei valori di una nuova tupla ( nel caso di values) deve coincidere con quello dei corrispondenti attributi nella lista di insert into
• Se nell’inserimento non vengono specificati i valori di tutti gli attributi, a quelli mancanti vengono assegnati i valori di default ed in assenza il valore NULL
• … ma, se viene violato un vincolo di NOT NULL l’inserimento VIENE RIFIUTATO, e lo stesso accade, naturalmente, se viene violato un vincolo di referenza esterno
![Page 111: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/111.jpg)
OPERAZIONE delete
delete from NomeRel [ where Condizione] Se non viene usata l’opzione where, tutte le tuple di NomeRel vengono cancellate ( la tabella viene svuotata, … salvo l’intestazione) Se viene usata l’opzione where, vengono cancellate solo le tuple (righe) che soddisfano la Condizione specificata - naturalmente la condizione può essere costruita anche usando IstrSelect innestate
![Page 112: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/112.jpg)
• ESEMPI
delete from PRENOTATIDB
delete from CNTRLMEDICO
In ogni seduta esami, … svuoto la tabella … che si riempirà per la prossima
seduta
Ad ogni seduta di visita medica svuoto ….
Operazione preziosa per tutte le tabelle permanenti … ma con ciclo di vita breve delle istanze
![Page 113: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/113.jpg)
• ESEMPI delete from ESAMIDB where TASSE = ‘NO’ delete from IMPIEGATI where QUALIFICA = ‘GIARDINIERE’
ESERCIZIO 30 In tutti i settori con più di 10 impiegati cancellare quello con il codice più piccolo. Delete from IMPIEGATI where ( SETTORE, COD) in ( select SETTORE, min (COD) from IMPIEGATI grouped by SETTORE having count (*) > 10 ) ESERCIZIO 31 Cancellare gli uffici che non hanno impiegati
Crisi … taglio giardini e .. giardinieri
Cisi: taglio un dip per ogni settore
più grande
![Page 114: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/114.jpg)
Il problema dei vincoli di referenza esterna in delete
• … se l’operazione di cancellazione coinvolge Attributi RIFERITI ( o referenziati ) da Attributi Referenti in altra relazione , che succede?
Esempio: se nella relazione UFFICI cancello un ufficio ( … una riga …) cosa succede nella relazione IMPIEGATI ( … che fine fanno gli impiegati dell’ ufficio cancellato ) visto che nella create table di definizione risulta: ………. SETTORE char (3) UFFICIO char (3) ………. foreign key ( SETTORE, UFFICIO ) references UFFICI (SET_COD, UFF_COD) ……….
?
![Page 115: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/115.jpg)
• SQL mette a disposizione la possibilità di scegliere fra 4 possibili azioni:
cascade , set null , set default , no action
– cascade : propagazione a cascata delle cancellazione;
tutte le righe della tabella referente vincolate alla riga cancellata vengono a loro volta cancellate
Esempio: gli impiegati che stavano nell’ufficio cancellato vengono a loro volta cancellati
– set null : all’attributo referente, in sostituzione del valore cancellato nell’attributo riferito, viene assegnato il valore null
Esempio: agli impiegati che lavoravano nell’ufficio cancellato viene assegnato un ufficio NULL, in attesa di … definizione
![Page 116: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/116.jpg)
– set default : all’attributo referente, in sostituzione del valore cancellato nell’attributo riferito, viene assegnato il valore di default
Esempio: gli impiegati dell’ufficio cancellato vengono assegnati ad un ufficio di default se è stato definito ( … nel nostro esempio non c’è)
– no action : LA CANCELLAZIONE VIENE NEGATA
Esempio: se vuoi cancellare l’ufficio devi prima licenziarne gli impiegati o collocarli in altro ufficio non cancellato
![Page 117: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/117.jpg)
• Il tipo di azione da attivare NON PUO’ essere decisa dall’istruzione di cancellazione, e quindi non può essere definita ad ogni specifica istruzione di delete
• … ma è una caratteristica di schema che deve essere decisa nel momento della definizione del vincolo di referenza esterno nella create table, dove la sintassi della classe references ( associata o meno ad una foreign key) è :
references RelRiferita ( ListaAttrRiferiti) [on (delete | update) ( cascade |set null | set default| no action)
• Per default : no action
![Page 118: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/118.jpg)
create table STUD create PRENOTATIDB
( (
MATRICOLA numeric (6) MATR numeric (6)
NOME varchar (30) references STUD (MATRICOLA)
COGNOME varchar (40) on delete cascade
………………………………….. NOMECOGN varchar (70)
………………………………….. E_MAIL varchar (100)
) )
Con qualsiasi istruzione delete from STUD …… per ogni riga cancellata con valore di MATRICOLA x Vengono cancellate anche le righe di PRENOTATIDB aventi x come valore di MATR
![Page 119: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/119.jpg)
OPERAZIONE update
• L’operazione viene definita attraverso 3 clausole: – la clausola di apertura introdotta dalla parola chiave
update specifica la Relazione (Tabella) su cui debbono essere fatti gli aggiornamenti
– la clausola obbligatoria introdotta dalla parola chiave set che, per ogni attributo da aggiornare descrive la relativa istruzione di assegnazione di nuovo valore
– la clausola opzionale introdotta dalla parola chiave where per selezionare le tuple (righe) che debbono essere aggiornate • Nel caso di non uso della clausola where, il valore degli
attributi da modificare verrà aggiornato ( calcolato ed assegnato) in tutte le tuple della relazione
![Page 120: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/120.jpg)
… la sintassi di update …
Update NomeRel
set Attributo = ( Espressione | IstrSelect | null | default )
{ , Attributo = ( Espressione | IstrSelect | null| default )}
where Condizione
NB. = , associato a set, diventa un operatore di assegnazione di valore
NB. Per i vincoli di referenza esterna vale quanto detto per delete
![Page 121: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/121.jpg)
• ESEMPIO: Portare a 70000 gli stipendi dei dirigenti che sono al di sotto di tale cifra
update DSTAFF set STIPENDIO = 70000 where STIPENDIO < 70000 • ESEMPIO: Il nuovo dirigente del settore ‘ DESIGN’ è Gae
Aulenti; assume lo stesso codice e lo stesso stipendio del predecessore
update DSTAFF set NOME = ‘GAE AULENTI’ where COD = ( select CODICE from SETTORI where NOMESET = ‘DESIGN’ )
Op di assegnazione
Op di confronto
Op di confronto
![Page 122: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/122.jpg)
warning
NON SONO LA STESSA COSA !
![Page 123: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/123.jpg)
MODIFICA DELLO SCHEMA
• Aggiungere un nuovo attributo in schema definito con create table:
alter table NomeRel add [ column ] DefAttributo
NomeRel è il nome della relazione(tabella) alla quale si vuole aggiungere un nuovo attributo ( colonna)
DefAttributo è costituito dal nome, dal tipo e da eventuali vincoli ( es. valore di default, etc.)
La colonna aggiunta viene riempita col valore di default se c’è, altrimenti con NULL
![Page 124: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/124.jpg)
• Eliminare un attributo in una relazione definita con create table:
alter table NomeRel drop [ column ] Attributo [ restrict| cascade] NomeRel è il nome della relazione(tabella) nella quale si vuole eliminare un attributo, Attributo è il nome dell’attributo da eliminare restrict la eliminazione è rifiutata se l’Attributo è esplicitamente citato in altre entità (ad esempio se è riferito (referenziato) in altra relazione cascade la eliminazione è estesa agli attributi referenti NB. per default : restrict
NB. NON E’ CONSENTITO ELIMINARE L’UNICA COLONNA DI UNA RELAZIONE DI ORDINE 1 ( Tabella con una sola colonna)
![Page 125: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/125.jpg)
• ESEMPI
alter table IMPIEGATI add column
DATASSUNZIONE date
alter table IMPIEGATI drop column TEL_UFF
agli IMPIEGATI aggiungiamo la data di assunzione
…taglio dei telefoni …
![Page 126: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/126.jpg)
Modifica valore di default di un attributo
alter table NomeRel alter [ columnn] Attributo
( set default NuovoVal | drop default)
drop default cancella il default preesistente
set default definisce nuovo valore di default
ESEMPIO alter table IMPIEGATI alter column STIPENDIO set default 18000
![Page 127: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/127.jpg)
CANCELLAZIONE DI TABELLA
In SQL viene messa a disposizione l’istruzione distruttiva drop, che, con riferimento alla cancellazione di una relazione, può essere così definita
drop table NomeRel restrict | cascade
restrict l’eliminazione della tabella viene negata se la stessa è usata ( es. riferita) nella definizione di altre entità DDL
cascade tutto ciò che fa riferimento alla tabella che viene cancellata viene revocato, annullato, cancellato
![Page 128: Presentazione standard di PowerPoint...• Date le Relazioni R1, R2, …,Rn onsideriamo l’istruzione Select * From R1,R2,…,Rn Avendo rinunciato alla clausola where e alla selezione](https://reader034.vdocumenti.com/reader034/viewer/2022050510/5f9b45d8a3746b101008cac9/html5/thumbnails/128.jpg)
CONCLUSIONI
• L’operazione drop è molto più articolata e complessa;
• In generale, le istruzioni di modifica dello schema vanno inquadrate in un set di operazioni che si estendono ad entità SQL che non abbiamo trattato;
• Alcuni ulteriori arricchimenti verranno fatti nelle esercitazioni, anche con specifico apprendimento di «Complementi di SQL»