32
S Q L S tructured Q uery L anguage Prof. Rocco Ciurleo Istituto Tecnico Industriale Statale “Conte Michele Maria Milano” Polistena

S Q L · 2018-11-18 · Il linguaggio SQL utilizza i caratteri alfabetici, le cifre decimali, gli operatori aritmetici e di confronto (+ - / * = < >) più altri caratteri che

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: S Q L · 2018-11-18 · Il linguaggio SQL utilizza i caratteri alfabetici, le cifre decimali, gli operatori aritmetici e di confronto (+ - / * = < >) più altri caratteri che

S Q L

Structured Query Language

Prof. Rocco Ciurleo

Istituto Tecnico Industriale Statale“Conte Michele Maria Milano” Polistena

Page 2: S Q L · 2018-11-18 · Il linguaggio SQL utilizza i caratteri alfabetici, le cifre decimali, gli operatori aritmetici e di confronto (+ - / * = < >) più altri caratteri che

21/04/2016 ITIS "M. M. Milano" Polistena - Prof. Rocco Ciurleo 2

IntroduzioneLa storia dei DBMS (Data Base Management Systems =

Sistemi di Gestione delle Basi di Dati) si sviluppa negli anni '60 e'70, in seguito al crescente fabbisogno di gestire e manipolaregrandi quantità di dati.

Subito, in seguito all'affermarsi di una teoria con basi formali(algebra relazionale) nascono i database relazionali chiamatiRDBMS (Relational Data Base Management Systems = Sistemidi Gestione delle Basi di Dati Relazionali) e di conseguenza illinguaggio SQL (Structured Query Language = Linguaggio diInterrogazione Strutturato - alcuni traducono "linguaggio perinterrogazioni strutturate", ma la versione più corretta sembraessere la prima) nasce e si sviluppa con loro.

Ormai il linguaggio SQL è definito da norme ANSI(American Standard Code for Information Interchange -ovvero CodiceStandard Americano per lo Scambio di Informazioni) che lo rendonouno standard internazionale, anche se le varie implementazionidifferiscono leggermente fra loro.

Page 3: S Q L · 2018-11-18 · Il linguaggio SQL utilizza i caratteri alfabetici, le cifre decimali, gli operatori aritmetici e di confronto (+ - / * = < >) più altri caratteri che

21/04/2016 ITIS "M. M. Milano" Polistena - Prof. Rocco Ciurleo 3

Breve storia di SQL 1/3

La storia di SQL inizia nel 1974 con la definizione da parte di DonaldChamberlin e di altre persone che lavoravano presso i laboratori diricerca dell'IBM di un linguaggio per la specificazione dellecaratteristiche dei database che adottavano il modello relazionale.Questo linguaggio si chiamava SEQUEL (Structured English QueryLanguage). Le sperimentazioni con tale prototipo portarono fra il1976 ed il 1977 ad una revisione del linguaggio (SEQUEL/2), che inseguito cambiò nome per motivi legali, diventando SQL. Il prototipo(System R) basato su questo linguaggio venne adottato ed utilizzatointernamente da IBM e da alcuni sui clienti scelti. Grazie al successodi questo sistema, che non era ancora commercializzato, anche altrecompagnie iniziarono a sviluppare i loro prodotti relazionali basati suSQL. Nel corso degli anni ottanta numerose compagnie (ad esempioOracle e Sybase, solo per citarne alcune) commercializzaronoprodotti basati su SQL, che divenne lo standard industriale di fattoper quanto riguarda i database relazionali.

Page 4: S Q L · 2018-11-18 · Il linguaggio SQL utilizza i caratteri alfabetici, le cifre decimali, gli operatori aritmetici e di confronto (+ - / * = < >) più altri caratteri che

21/04/2016 ITIS "M. M. Milano" Polistena - Prof. Rocco Ciurleo 4

Breve storia di SQL 2/3

Nel 1986 l'ANSI adottò SQL (sostanzialmente adottò il dialetto SQL diIBM) come standard per i linguaggi relazionali e nel 1987 essodiventò anche standard ISO. Questa versione dello standard va sottoil nome di SQL/86. Negli anni successivi esso ha subito varierevisioni: SQL/89, SQL/92 SQL/99 e SQL/2003 . La versione SQL/92diventò uno standard fatto proprio anche dall’International StandardOrganization (ISO).

Il fatto di avere uno standard definito per un linguaggio per databaserelazionali, apre potenzialmente la strada alla intercomunicabilità fratutti i prodotti che si basano su di esso, ma in generale ogniproduttore adotta ed implementa nel proprio database solo il cuoredel linguaggio SQL (il cosiddetto Entry level), mettendo sul mercatoversioni personalizzate, chiamate convenzionalmente dialetti, nellequali ai comandi essenziali di SQL se ne aggiungono altri, che inalcuni casi svolgono funzioni sostanzialmente estranee alla naturapropria di SQL.

Page 5: S Q L · 2018-11-18 · Il linguaggio SQL utilizza i caratteri alfabetici, le cifre decimali, gli operatori aritmetici e di confronto (+ - / * = < >) più altri caratteri che

21/04/2016 ITIS "M. M. Milano" Polistena - Prof. Rocco Ciurleo 5

Breve storia di SQL 3/3

Attualmente e’ in corso un processo di revisionedel linguaggio da parte dei comitati ANSI e ISO,che dovrebbe portare alla definizione di cio’ cheal momento e’ noto come SQL3.

Le caratteristiche principali di questa nuovaincarnazione di SQL dovrebbero essere la suatrasformazione in un linguaggio stand-alone(mentre ora viene usato come linguaggio ospitatoin altri linguaggi) e l’introduzione di nuovi tipi didato piu’ complessi per permettere, ad esempio,il trattamento di dati multimediali.

Page 6: S Q L · 2018-11-18 · Il linguaggio SQL utilizza i caratteri alfabetici, le cifre decimali, gli operatori aritmetici e di confronto (+ - / * = < >) più altri caratteri che

I linguaggi “dentro” SQLDDL (Data Definition Language, linguaggio di definizione dei dati).Consente di descrivere la struttura delle tabelle e di tutti gli elementi di supporto (come indici, vincoli, trigger, viste ecc.). Viene utilizzato per realizzare lo schema logico e lo schema fisico del database.

DML (Data Manipulation Language, linguaggio per la manipolazione dei dati). Operazioni di inserimento, modifica e cancellazione dei dati.

DCL (Data Control Language, linguaggio di controllo dei dati).Limiti sui dati (permessi di accesso, vincoli di integrità).

QL (Query Language, linguaggio di interrogazione)Interrogare il database al fine di individuare i dati che corrispondono ai parametri di ricerca dell’utente.

Page 7: S Q L · 2018-11-18 · Il linguaggio SQL utilizza i caratteri alfabetici, le cifre decimali, gli operatori aritmetici e di confronto (+ - / * = < >) più altri caratteri che

21/04/2016 ITIS "M. M. Milano" Polistena - Prof. Rocco Ciurleo 7

SQL: Linguaggio dichiarativo

Forse il problema più grosso che un esperto programmatoreincontra nell’imparare a programmare in SQL è che devedimenticare gli altri linguaggi di programmazione, SQL infattichiede a chi lo studia di cambiare il modo di pensare circa laprogrammazione.

Molti programmatori usano linguaggi procedurali come C++,FORTRAN, PASCAL, COBOL e altri, detti linguaggi di terzagenerazione; si tratta di linguaggi che fanno da ponte tral’assembler e la lingua naturale, con i quali si scrivonoprogrammi i cui statement descrivono passo passo, in modopreciso e rigoroso, che cosa il computer deve fare.

SQL invece è un linguaggio dichiarativo, che cioè dichiara,o descrive, ciò che si vuole ottenere, e lascia al computer didecidere come ottenerlo.

Page 8: S Q L · 2018-11-18 · Il linguaggio SQL utilizza i caratteri alfabetici, le cifre decimali, gli operatori aritmetici e di confronto (+ - / * = < >) più altri caratteri che

21/04/2016 ITIS "M. M. Milano" Polistena - Prof. Rocco Ciurleo 8

Linguaggio dichiarativo: esempio

Per fare un’analogia, si immagini di andare in un supermercatocon la lista della spesa e con una dettagliata descrizione deglispostamenti da fare per raggiungere i corridoi e gli scaffali checontengono le varie merci. Si esegue la procedura – seguendole indicazioni – e si fanno gli acquisti: questo è un approccioprocedurale. In termini di programma, i file di dati sono gliscaffali, i dati sono le merci e il programma è costituito dalleindicazioni degli spostamenti.

Ora si immagini di andare in un negozio e consegnare alcommesso che si trova al banco la lista della spesa, in modoche egli procuri il materiale mentre si aspetta. La lista dellaspesa è dichiarativa – “questo è quello che voglio!” – e ilcommesso è il traduttore del linguaggio, che decide comeprocurare la merce in base alle conoscenze che ha sul negozio,come la pianta degli scaffali, la quantità disponibili dei variarticoli e tutto quello che gli serve per soddisfare il cliente.

Page 9: S Q L · 2018-11-18 · Il linguaggio SQL utilizza i caratteri alfabetici, le cifre decimali, gli operatori aritmetici e di confronto (+ - / * = < >) più altri caratteri che

21/04/2016 ITIS "M. M. Milano" Polistena - Prof. Rocco Ciurleo 9

Identificatori

Il linguaggio SQL utilizza i caratteri alfabetici, le cifre decimali,gli operatori aritmetici e di confronto (+ - / * = < >) più altricaratteri che assumono particolari significati nella sintassi delleistruzioni e che verranno descritti in seguito.

Gli identificatori (nomi di tabelle e di attributi) sono costituiti dasequenze di caratteri con lunghezza massima di 18 caratteri:devono iniziare con una lettera e possono anche contenere ilcarattere _ .

Quando è necessario identificare il nome di un attributo dellatabella si deve usare la notazione

NomeTabella.NomeAttributo

(separati dal punto).

(dipende dal compilatore che si usa, basta anche solo il nomedel campo)

Page 10: S Q L · 2018-11-18 · Il linguaggio SQL utilizza i caratteri alfabetici, le cifre decimali, gli operatori aritmetici e di confronto (+ - / * = < >) più altri caratteri che

21/04/2016 ITIS "M. M. Milano" Polistena - Prof. Rocco Ciurleo 10

Tipi di DatiNella dichiarazione della struttura di una tabella occorre specificare il tipo dei dati scelto per gli attributi.

I tipi standard del linguaggio SQL sono:

Per i dati numerici la precisione p indica il numero massimo di cifre che il numero può contenere, esclusi ilsegno e il punto decimale.

Per i numeri reali il valore s indica il numero di cifre che seguono il punto decimale.

I dati numerici floating point (numeri approssimati) sono memorizzati in forma esponenziale; la precisioneriguarda solo le cifre della mantissa.

CHARACTER(n) o CHAR(n) Stinga di lunghezza n N da 1 a 15000

DATE Data nella forma GG/MM/AA

TIME Ora nella forma HH:MM

INTEGER(p) o INT(p) Numero intero con precisione p P da 1 a 45

SMALLINT Numero intero con precisione 5 Da –32768 a 32767

INTEGER Numero intero con precisione 10 Da –2.147.483.648 a 2.147.483.647

DECIMAL(p,s) o DEC(p,s) Numero decimale con presicione p e s cifre

decimali

P da 1 a 45 ed s da 0 a p

REAL Numero reale con mantissa di precisione 7 Valore 0 oppure valore assoluto da 1E-38

a 1E+38

FLOAT (o DOUBLE PRECISIN) Numero reale con mantissa di precisione 15 Valore 0 oppure valore assoluto da 1E-38

a 1E+38

FLOAT(p) Numero reale con mantissa di precisione p P da 1 a 45

Page 11: S Q L · 2018-11-18 · Il linguaggio SQL utilizza i caratteri alfabetici, le cifre decimali, gli operatori aritmetici e di confronto (+ - / * = < >) più altri caratteri che

21/04/2016 ITIS "M. M. Milano" Polistena - Prof. Rocco Ciurleo 11

Come creare una tabella

Il database relazionale è composto da un insieme di "relazioni" dette anche tabelle, ad esempio:

Per ogni tabella è attribuito un nome che la identifica, poniamo di chiamare la precedente tabella "anagrafica" escopriamo come costruirla in SQL.

La sintassi per creare la tabella "anagrafica" è la seguente:

CREATE TABLE anagrafica

(nome CHAR(25),

città CHAR(20),

anno_di_nascita INTEGER NOT NULL,

sesso CHAR(1));

Come si può capire il comando CREATE TABLE crea la tabella "anagrafica" e definisce le 4 colonne nel nomee negli attributi (numerica, alfanumerica ecc.).

Accanto alla definizione dell’attributo può essere specificata la clausola NOT NULL, per indicare che in tutte lerighe della tabella quella colonna deve essere inserito un valore pertinente il tipo specificato, nelle operazioni diinserimento e aggiornamento.

NOME CITTA’ ANNO NASCITA SESSO

Rocco Tritanti 1960 M

Paola Vicenza 1961 F

Michele Milano 1957 M

Page 12: S Q L · 2018-11-18 · Il linguaggio SQL utilizza i caratteri alfabetici, le cifre decimali, gli operatori aritmetici e di confronto (+ - / * = < >) più altri caratteri che

21/04/2016 ITIS "M. M. Milano" Polistena - Prof. Rocco Ciurleo 12

Come modificare una tabella

La struttura della tabella può essere successivamente modificata con ilcomando ALTER

Aggiunta di una nuova colonna nella tabella

ALTER TABLE nome_tabella ADD definizione_colonna

nome_tabella è il nome della tabella che si vuole modificare. Nel definire lacolonna dovranno quindi essere specificati il nome della colonna, il suo tipo edeventualmente il suo valore di default e i vincoli imposti sulla colonna.

Eliminazione di una colonna dalla tabella

ALTER TABLE nome_tabella DROP nome_colonna

nome_tabella è il nome della tabella che si vuole modificare, nome_colonna lacolonna che si vuole eliminare.

Page 13: S Q L · 2018-11-18 · Il linguaggio SQL utilizza i caratteri alfabetici, le cifre decimali, gli operatori aritmetici e di confronto (+ - / * = < >) più altri caratteri che

21/04/2016 ITIS "M. M. Milano" Polistena - Prof. Rocco Ciurleo 13

Inserimento dei dati

L’istruzione SQL che effettua l'inserimento di una nuova tupla in una tabella èINSERT. La sintassi con cui essa viene più usata è:

INSERT INTO nome_tabella [ ( elenco_campi ) ]

VALUES ( elenco_valori )

dove nome_tabella è il nome della tabella in cui deve essere inserita la nuovatupla, elenco_campi è l'elenco dei nomi dei campi a cui deve essere assegnatoun valore, separati fra loro da una virgola. I campi non compresi nell'elencoassumeranno il loro valore di default o nessun valore (NULL).

Nel caso in cui l'elenco non venga specificato, dovranno essere specificati ivalori di tutti i campi della tabella; elenco_valori è l'elenco dei valori che verrannoassegnati ai campi della tabella nell'ordine e numero specificatidall'elenco_campi o in quello della definizione della tabella (se elenco_campi nonviene specificato).

L’esempio mostra come inserire la prima tupla nella tabella anagrafica.

INSERT INTO anagrafica (nome, città, anno_di_nascita, sesso)

VALUES (‘Rocco', ‘Tritanti', '1960', 'M')

Page 14: S Q L · 2018-11-18 · Il linguaggio SQL utilizza i caratteri alfabetici, le cifre decimali, gli operatori aritmetici e di confronto (+ - / * = < >) più altri caratteri che

21/04/2016 ITIS "M. M. Milano" Polistena - Prof. Rocco Ciurleo 14

Eliminazione di tuple

SQL consente di eliminare o modificare tuple di una tabella, ma non si devedimenticare che queste operazioni possono avere effetti a cascata su altretabelle grazie ai vincoli di integrità referenziale.

Per eliminare uno o più record da una tabella si può utilizzare il comandoDELETE, la cui struttura sintattica è:

DELETE FROM nome_tabella

[WHERE condizione]

Se non si utilizza la clausola WHERE, che è facoltativa, il comando cancella ilcontenuto di tutti i record, senza possibilità di recupero, lasciando soltanto lastruttura della tabella.

Esempio1:

DELETE From anagrafica

Where nome=“Rocco”

Esempio2:

DELETE From anagrafica

Where nome=“Rocco” AND città=“Tritanti”

Page 15: S Q L · 2018-11-18 · Il linguaggio SQL utilizza i caratteri alfabetici, le cifre decimali, gli operatori aritmetici e di confronto (+ - / * = < >) più altri caratteri che

21/04/2016 ITIS "M. M. Milano" Polistena - Prof. Rocco Ciurleo 15

Modificare datiLe informazioni presenti in un database non sono statiche, ma evolvono nel tempo. C‘è quindi la necessitànon solo di aggiungere nuovi dati, ma di modificare quelli che sono già inseriti nelle tabelle del database.L’istruzioni SQL utilizzata a questo scopo è UPDATE. La quale permette di modificare i valori presenti inuna o più colonne di una o più righe di una tabella.

La sintassi di UPDATE è la seguente:

UPDATE nome_tabella

SET elenco_assegnamenti

[ WHERE espressione_condizionale ];

Gli assegnamenti vengono specificati nella forma:

nome_colonna = espressione_scalare

L'istruzione UPDATE aggiorna le colonne della tabella che sono state specificate nella clausola SET,utilizzando i valori che vengono calcolati dalle corrispondenti espressioni scalari. Se viene espressa anchela clausola WHERE, vengono aggiornale solo le righe che soddisfano l'espressione condizionale.

Vediamo un esempio:

UPDATE anagrafica

SET nome = ‘Giorgio‘

WHERE città = ‘Milano‘ ;

L’ istruzione cambia il valore della colonna nome della tabella anagrafica nelle righe in cui l’attributo cittàha valore ‘Milano'.

Page 16: S Q L · 2018-11-18 · Il linguaggio SQL utilizza i caratteri alfabetici, le cifre decimali, gli operatori aritmetici e di confronto (+ - / * = < >) più altri caratteri che

21/04/2016 ITIS "M. M. Milano" Polistena - Prof. Rocco Ciurleo 16

S E L E C TInterrogazione del database

L’aspetto più importante del linguaggio SQL è

costituito dalla possibilità di porre interrogazioni

(query) in modo molto semplice alla base di dati per

ritrovare le informazioni che interessano.

Queste prestazioni sono fornite dal comando

SELECT, che è nello stesso tempo molto potente e

molto semplice da usare. Il comando SELECT è

quello che viene più utilizzato nella programmazione

SQL, si può considerare che l’80% o il 90% di SQL

sia tutto in questo comando.

Page 17: S Q L · 2018-11-18 · Il linguaggio SQL utilizza i caratteri alfabetici, le cifre decimali, gli operatori aritmetici e di confronto (+ - / * = < >) più altri caratteri che

21/04/2016 ITIS "M. M. Milano" Polistena - Prof. Rocco Ciurleo 17

S E L E C TNella forma più semplice il comando SELECT restituisce

semplicemente un’intera tabella, oppure colonne, oppure alcunerighe, e la sua forma di base è:

SELECT lista_elementi_selezione

FROM tabella

[ WHERE espressione_condizionale ]

Quindi, dopo aver digitato la parola SELECT si elencano gliattributi (le colonne) che si vogliono includere nella query (si usaun asterisco (*) per indicare tutti gli attributi della tabella); seguela parola FROM con il nome della tabella che contiene i dati chesi vuole interrogare. La clausola WHERE (facoltativa) permette diinserire eventuali condizioni (vincoli) che valgono per i dati dareperire

Page 18: S Q L · 2018-11-18 · Il linguaggio SQL utilizza i caratteri alfabetici, le cifre decimali, gli operatori aritmetici e di confronto (+ - / * = < >) più altri caratteri che

21/04/2016 ITIS "M. M. Milano" Polistena - Prof. Rocco Ciurleo 18

SELECTsintassi completa

La sintassi completa dell'istruzione SELECT è la seguente:

SELECT [ ALL | DISTINCT ] lista_elementi_selezione

FROM lista_riferimenti_tabella

[ WHERE espressione_condizionale ]

[ GROUP BY lista_colonne ]

[ HAVING espressione_condizionale ]

[ ORDER BY lista_colonne ]

Per comprendere meglio il funzionamento del comando SELECT ciaiuteremo con degli esempi, supponendo di utilizzare una tabella di nomeanagrafica con i seguenti attributi: cogn, nome, città, prov, indirizzo,data_nascita.

Page 19: S Q L · 2018-11-18 · Il linguaggio SQL utilizza i caratteri alfabetici, le cifre decimali, gli operatori aritmetici e di confronto (+ - / * = < >) più altri caratteri che

21/04/2016 ITIS "M. M. Milano" Polistena - Prof. Rocco Ciurleo 19

Proiezione su una tabella

SELECT prov

FROM anagrafica;

Questo statement estrae dalla tabella anagrafica tutte le righedella colonna provincia.

SELECT DISTINCT prov

FROM anagrafica;

Se viene specificato il predicato DISTINCT le righe duplicatenella tabella risultante vengono ridotte a una.

Page 20: S Q L · 2018-11-18 · Il linguaggio SQL utilizza i caratteri alfabetici, le cifre decimali, gli operatori aritmetici e di confronto (+ - / * = < >) più altri caratteri che

21/04/2016 ITIS "M. M. Milano" Polistena - Prof. Rocco Ciurleo 20

Elencare l’intera tabella

SELECT *

FROM anagrafica;

Il risultato produrrà una tabella con tutte le colonne nell’ordine in

cui sono state descritte al momento della creazione della tabella.

Se si vogliono le colonne disposte in un ordine diverso, bisogna

digitare i nomi degli attributi nell’ordine desiderato separando i

nomi con una virgola.

Page 21: S Q L · 2018-11-18 · Il linguaggio SQL utilizza i caratteri alfabetici, le cifre decimali, gli operatori aritmetici e di confronto (+ - / * = < >) più altri caratteri che

21/04/2016 ITIS "M. M. Milano" Polistena - Prof. Rocco Ciurleo 21

Intestazioni diverse alle colonne

selezionate

Normalmente la tabella che si ottiene da una query con SELECTpossiede un’intestazione della colonne che riporta i nomi degli attributi,se si vuole modificare l’intestazione, occorre dichiarare la stringa dellanuova intestazione insieme alla clausola AS

SELECT prov AS PROVINCIA

FROM anagrafica;

SELECT cogn AS COGNOME, prov AS PROVINCIA,

FROM anagrafica;

Per inserire l’intestazione formata da due parole, si devono racchiuderetra apici: ‘DATA DI NASCITA’; in ACCESS si devono racchiudere traparentesi quadre [DATA DI NASCITA].

Page 22: S Q L · 2018-11-18 · Il linguaggio SQL utilizza i caratteri alfabetici, le cifre decimali, gli operatori aritmetici e di confronto (+ - / * = < >) più altri caratteri che

21/04/2016 ITIS "M. M. Milano" Polistena - Prof. Rocco Ciurleo 22

Ordinamento

Nel comando SELECT si può inserire la clausola ORDER BY per ottenere i risultati diun’interrogazione ordinati secondo i valori contenuti in una o più colonne tra quelleelencate accanto alla parola SELECT. L’ordinamento è crescente per default e vaspecificata la parola DESC solo se si desidera l’ordinamento decrescente.(Comunque può essere usata la parola chiave ASC per l’ordinamento crescente)

SELECT cognome, nome, città

FROM anagrafica

ORDER BY cognome, nome;

SELECT cognome, nome, classe

FROM anagrafica

ORDER BY cognome DESC, classe;

Il primo esempio ordina in senso crescente di cognome e a parità di cognome insenso crescente di nome, il secondo esempio produce l’elenco delle persone inordine decrescente rispetto al cognome e, a cognome uguale, in ordine crescente diclasse.

Page 23: S Q L · 2018-11-18 · Il linguaggio SQL utilizza i caratteri alfabetici, le cifre decimali, gli operatori aritmetici e di confronto (+ - / * = < >) più altri caratteri che

21/04/2016 ITIS "M. M. Milano" Polistena - Prof. Rocco Ciurleo 23

Funzione COUNT

La funzione COUNT conta il numero di righe presenti in una tabella. Lafunzione conta il numero delle righe indipendentemente dei valori in essememorizzati.

SELECT COUNT (*)

FROM anagrafica

Lo statement restituisce il numero di tutte le righe presenti nella tabellaanagrafica.

Se un comando Select contiene una condizione (Where), la funzioneCOUNT restituisce il numero delle righe che soddisfano la condizione:

SELECT COUNT (*)

FROM anagrafica

Where prov =“RC”

Page 24: S Q L · 2018-11-18 · Il linguaggio SQL utilizza i caratteri alfabetici, le cifre decimali, gli operatori aritmetici e di confronto (+ - / * = < >) più altri caratteri che

21/04/2016 ITIS "M. M. Milano" Polistena - Prof. Rocco Ciurleo 24

Funzione SUM

La funzione SUM restituisce la somma di tutti i valori contenuti in

una colonna specificata come argomento della funzione,

naturalmente l’attributo utilizzato nel calcolo deve essere numerico.

SELECT SUM (stipendio)

FROM personale

WHERE livello = 5 ;

L’argomento della funzione SUM può anche essere un’espressione

numerica contenente i nomi di attributi di tipo numerico

SELECT SUM (prezzo_unitario * quantità ) AS totale

FROM fattura ;

Page 25: S Q L · 2018-11-18 · Il linguaggio SQL utilizza i caratteri alfabetici, le cifre decimali, gli operatori aritmetici e di confronto (+ - / * = < >) più altri caratteri che

21/04/2016 ITIS "M. M. Milano" Polistena - Prof. Rocco Ciurleo 25

Funzioni MIN e MAX

Le funzioni MIN e MAX restituiscono rispettivamente il valore minimo e il

valore massimo tra i valori della colonna specificata come argomento della

funzione

SELECT MIN (stipendio), Max(stipendio)

FROM personale ;

Le funzioni MIN e Max consentono di determinare i valori minimi e massimi

anche per campi di tipo carattere

SELECT MIN (cognome), Max(cognome)

FROM anagrafica ;

Lo statement restituisce il primo e l’ultimo cognome in ordine alfabetico

Page 26: S Q L · 2018-11-18 · Il linguaggio SQL utilizza i caratteri alfabetici, le cifre decimali, gli operatori aritmetici e di confronto (+ - / * = < >) più altri caratteri che

21/04/2016 ITIS "M. M. Milano" Polistena - Prof. Rocco Ciurleo 26

Raggruppamento: clausola GROUP BY

La clausola GROUP BY raggruppa un insieme di righe aventi lo

stesso valore nelle colonne indicate: questa opzione produce una

riga di risultati per ogni raggruppamento.

Supponiamo di avere una tabella (ordini) con i seguenti campi:

numero_ordine, cod_articolo, quantità, prezzo, la query:

SELECT numero_ordine, SUM(quantità*prezzo)

FROM ordini

GROUP BY numero_ordine ;

produce una riga per ogni tipo ordine calcolando i totali dei singoli

ordini. Se nella query non mettiamo la clausola GROUP BY come

risultato si otterrebbe una sola riga con il totale generale.

Page 27: S Q L · 2018-11-18 · Il linguaggio SQL utilizza i caratteri alfabetici, le cifre decimali, gli operatori aritmetici e di confronto (+ - / * = < >) più altri caratteri che

21/04/2016 ITIS "M. M. Milano" Polistena - Prof. Rocco Ciurleo 27

Clausola HAVING

La struttura del comando SELECT con raggruppamento può

essere ulteriormente ampliata con la clausola HAVING, con la

quale è possibile sottoporre al controllo di una o più condizioni i

gruppi creati con la clausola GROUP BY.

Consideriamo la query nella diapositiva precedente ed

aggiungiamo una clausola Having:

SELECT numero_ordine, SUM(quantità*prezzo)

FROM ordini

GROUP BY numero_ordine ;

HAVING SUM(quantità*prezzo) > 200;

Come risultato otteniamo solo le righe che soddisfano la

condizione espressa con HAVING.

Page 28: S Q L · 2018-11-18 · Il linguaggio SQL utilizza i caratteri alfabetici, le cifre decimali, gli operatori aritmetici e di confronto (+ - / * = < >) più altri caratteri che

I vincoli

I vincoli consentono di specificare controlli

sui dati, al fine di assicurare la correttezza e

consistenza dell’informazione.

I vincoli possono essere: interni (o intrarelazionali) specificano controlli sulla singola tabella

intesa come entità a se stante

di integrità referenziale riguardano i rapporti tra una tabella e

l’altra.

Page 29: S Q L · 2018-11-18 · Il linguaggio SQL utilizza i caratteri alfabetici, le cifre decimali, gli operatori aritmetici e di confronto (+ - / * = < >) più altri caratteri che

Vincoli interni

NOT NULL

Impedisce di inserire un dato nullo nel

campo in cui viene specificato.

<NomeCampo> <Tipo> NOT NULL;

PRIMARY KEY

Imposta un campo (o più campi) come

chiave primaria della tabella.

PRIMARY KEY (<NomeCampo>);

CHECK

Indica un controllo su un’espressione tra i

Page 30: S Q L · 2018-11-18 · Il linguaggio SQL utilizza i caratteri alfabetici, le cifre decimali, gli operatori aritmetici e di confronto (+ - / * = < >) più altri caratteri che

Vincoli di integrità referenziale

FOREIGN KEY

Imposta una chiave esterna in una tabella,

con campi che fanno riferimento ad un’altra

tabella del DataBase.

FOREIGN KEY (<ElencoCampi>)

REFERENCES <NomeTabella>

(<ElencoCampiTabella>);

<ElencoCampi>

Elenco dei campi della tabella corrente.

Page 31: S Q L · 2018-11-18 · Il linguaggio SQL utilizza i caratteri alfabetici, le cifre decimali, gli operatori aritmetici e di confronto (+ - / * = < >) più altri caratteri che

Integrità referenziale

L’integrità referenziale viene controllata

anche dalle parole chiave RESTRICT,

CASCADE e SET NULL, che

consentono di controllare la risposta del

database a un vincolo.

RESTRICT

Il database rifiuta le modifiche violano un

vincolo

CASCADE

Il database propaga a cascata le modifiche

Page 32: S Q L · 2018-11-18 · Il linguaggio SQL utilizza i caratteri alfabetici, le cifre decimali, gli operatori aritmetici e di confronto (+ - / * = < >) più altri caratteri che

21/04/2016 ITIS "M. M. Milano" Polistena - Prof. Rocco Ciurleo 32

S Q L

Fine