G. Mecca – mecca@unibas.it – Università della Basilicata Basi di Dati SQL-92 Dettagli e...

Post on 01-May-2015

218 views 1 download

Transcript of G. Mecca – mecca@unibas.it – Università della Basilicata Basi di Dati SQL-92 Dettagli e...

G. Mecca – mecca@unibas.it – Università della BasilicataG. Mecca – mecca@unibas.it – Università della Basilicata

Basi di Dati

SQL-92Dettagli e Approfondimenti

versione 2.0

Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)

2G. Mecca - mecca@unibas.it - Basi di DatiG. Mecca - mecca@unibas.it - Basi di Dati

Dettagli e Approfondimenti

DDL: Tabellevalori di defaultvincoli di riferimentomodifiche allo schema

DDL: Vistedefinizione e uso

DDL: Indici DCL

utenti

autorizzazionischemi esterni

DML: Aggiornamentiinserimenti

DML: Interrogazionioperatori insiemisticiSELECT: espressioniFROM: joinWHERE: op. like

SQL-92 >> Sommario

3G. Mecca - mecca@unibas.it - Basi di DatiG. Mecca - mecca@unibas.it - Basi di Dati

SQL

SQL-92 Intermediate DDL

“Data Definition Language”definizione degli oggetti dello schemaCREATE DATABASEDROP DATABASECREATE TABLEDROP TABLE

SQL-92 >> Dettagli e Approdondimenti

4G. Mecca - mecca@unibas.it - Basi di DatiG. Mecca - mecca@unibas.it - Basi di Dati

SQL

DCL“Data Control Language”utenti e autorizzazioni

DML“Data Manipulation Language”interrogazioni e aggiornamentiINSERT, DELETE, UPDATESELECT

SQL-92 >> Dettagli e Approdondimenti

5G. Mecca - mecca@unibas.it - Basi di DatiG. Mecca - mecca@unibas.it - Basi di Dati

DDL: Tabelle

CreazioneCREATE TABLE <nome> (<schema>);

<schema>una o più definizioni di attributozero o più definizioni di vincoli di tabella

Definizione di attributo<nomeattributo> <tipo> [<vincoli di colonna>]

SQL-92 >> Dettagli e Approdondimenti >> DDL: Tabelle

6G. Mecca - mecca@unibas.it - Basi di DatiG. Mecca - mecca@unibas.it - Basi di Dati

Valori di Default

Nella CREATE TABLE e’ possibile specificare valori standard per gli attributi

CREATE TABLE Studenti ( matr integer PRIMARY KEY,

cognome varchar(20) NOT NULL,nome varchar(20) NOT NULL,ciclo char(20) DEFAULT ‘laurea tr.’,anno integer NOT NULL DEFAULT 1,relatore char(4) REFERENCES

Professori(cod));

SQL-92 >> Dettagli e Approdondimenti >> DDL: Tabelle

7G. Mecca - mecca@unibas.it - Basi di DatiG. Mecca - mecca@unibas.it - Basi di Dati

Vincoli di Riferimento

Vincoli di riferimento di colonna<attr> <tipo> REFERENCES <chiave est.>es: docente char(4) REFERENCES Professori(cod)

Vincoli di riferimento di tabellaFOREIGN KEY (<attributi>)

REFERENCES <chiave est.>es: se la chiave di Collegi è prov. e numero FOREIGN KEY (provincia, collegio) REFERENCES Collegi(provincia, numero)

SQL-92 >> Dettagli e Approdondimenti >> DDL: Tabelle

8G. Mecca - mecca@unibas.it - Basi di DatiG. Mecca - mecca@unibas.it - Basi di Dati

Vincoli di Riferimento

Aggiornamenti in cascataON {UPDATE | DELETE} <azione>

<azione>CASCADESET NULLSET DEFAULTes: docente char(4) REFERENCES Professori(cod) ON UPDATE SET NULL;

SQL-92 >> Dettagli e Approdondimenti >> DDL: Tabelle

9G. Mecca - mecca@unibas.it - Basi di DatiG. Mecca - mecca@unibas.it - Basi di Dati

Modifiche allo Schema

Modifiche ad una tabella già esistenteALTER TABLE

Tre funzioniridenominazione della tabellaaggiunta, ridenominazione ed eliminazione

di attributiaggiunta ed eliminazione di vincoli

SQL-92 >> Dettagli e Approdondimenti >> DDL: Tabelle

10G. Mecca - mecca@unibas.it - Basi di DatiG. Mecca - mecca@unibas.it - Basi di Dati

Modifiche allo Schema

Ridenominazione della tabellaALTER TABLE <nome> RENAME TO

<nuovo nome>;es: ALTER TABLE Professori RENAME TO Docenti;

Modifiche agli attributiALTER TABLE <nome> RENAME COLUMN

<vecchio attributo> TO <nuovo attributo>;ALTER TABLE <nome> ADD COLUMN

<nuovo attributo> <tipo>;ALTER TABLE <nome> DROP COLUMN

<nome attributo>;

SQL-92 >> Dettagli e Approdondimenti >> DDL: Tabelle

11G. Mecca - mecca@unibas.it - Basi di DatiG. Mecca - mecca@unibas.it - Basi di Dati

Modifiche allo Schema

EsempioALTER TABLE Studenti ADD COLUMN

dataNascita DATE;ALTER TABLE Studenti ADD COLUMN

luogoNascita VARCHAR(20);ALTER TABLE Studenti ADD COLUMN

reddito DECIMAL(8,2);ALTER TABLE Studenti RENAME COLUMN

dataNascita TO dataDiNascita;ALTER TABLE Studenti DROP COLUMN

dataDiNascita;

SQL-92 >> Dettagli e Approdondimenti >> DDL: Tabelle

12G. Mecca - mecca@unibas.it - Basi di DatiG. Mecca - mecca@unibas.it - Basi di Dati

Modifiche allo Schema

Semantica dell’aggiunta di colonnela nuova colonna viene aggiunta allo schemaa tutte le ennuple viene aggiunto NULLoppure il valore standard se è stato specif.

Semantica dell’eliminazione di colonnela colonna viene eliminata dallo schema,

assieme agli eventuali vincoli relativiviene effettuata la proiezione delle ennuple

SQL-92 >> Dettagli e Approdondimenti >> DDL: Tabelle

13G. Mecca - mecca@unibas.it - Basi di DatiG. Mecca - mecca@unibas.it - Basi di Dati

Modifiche allo Schema

Aggiunta di vincoliALTER TABLE <nome> ADD CONSTRAINT

<nome vincolo> <def. vincolo di tabella>;l’istanza deve rispettare il vincolo

EsempioALTER TABLE Studenti ADD CONSTRAINT cf

UNIQUE (nome, cognome, dataNascita, luogoNascita);

SQL-92 >> Dettagli e Approdondimenti >> DDL: Tabelle

14G. Mecca - mecca@unibas.it - Basi di DatiG. Mecca - mecca@unibas.it - Basi di Dati

Modifiche allo Schema

Eliminazione di vincoliALTER TABLE <nome> DROP CONSTRAINT

<nome vincolo>;

EsempioALTER TABLE Studenti DROP CONSTRAINT cf;

Attenzione:molti DBMS non supportano nè DROP

COLUMN, né DROP CONSTRAINT

SQL-92 >> Dettagli e Approdondimenti >> DDL: Tabelle

15G. Mecca - mecca@unibas.it - Basi di DatiG. Mecca - mecca@unibas.it - Basi di Dati

DDL: Viste

Vistetabelle “virtuali”definite attraverso un’interrogazionepossono essere utilizzate come tabelle reali

Due funzioni fondamentalicreazione degli schemi esterni (privatezza

dei dati o ristrutturazioni)semplificazione di interrogazioni ricorrenti

SQL-92 >> Dettagli e Approdondimenti >> DDL: Viste

16G. Mecca - mecca@unibas.it - Basi di DatiG. Mecca - mecca@unibas.it - Basi di Dati

DDL: Viste

Creazione di visteCREATE VIEW <nome> AS <SELECT>;

Semanticala vista viene ricalcolata sulla base della sua

definizione ogni volta che viene usata Eliminazione di viste

DROP VIEW <nome>;

SQL-92 >> Dettagli e Approdondimenti >> DDL: Viste

17G. Mecca - mecca@unibas.it - Basi di DatiG. Mecca - mecca@unibas.it - Basi di Dati

DDL: Viste

Privatezza: esami senza votiCREATE VIEW EsamiSenzaVoti AS SELECT studente, corso FROM Esami;

SELECT * FROM EsamiSenzaVoti;

SELECT * FROM Studenti, EsamiSenzaVotiWHERE matr=studente;

DROP VIEW EsamiSenzaVoti;

SQL-92 >> Dettagli e Approdondimenti >> DDL: Viste

18G. Mecca - mecca@unibas.it - Basi di DatiG. Mecca - mecca@unibas.it - Basi di Dati

DDL: Viste

Compiti ricorrenti: professori e numeriCREATE VIEW ProfessoriNumeri AS SELECT codice, nome, cognome, numero FROM Professori JOIN Numeri ON cod=professore;

SELECT * FROM ProfessoriNumeriORDER BY cognome, nome;

SQL-92 >> Dettagli e Approdondimenti >> DDL: Viste

19G. Mecca - mecca@unibas.it - Basi di DatiG. Mecca - mecca@unibas.it - Basi di Dati

DDL: Viste

Differenza tra tabelle e vistele tabelle sono materializzate nella base di

dati, le viste no (sono derivate dalle tabelle)schema di una vista = attributi e tipi della

selectistanza di una vista = risultato della selectle tabelle sono aggiornabili, le viste nole viste sono sempre aggiornate e consistentinon hanno impatto sulle prestazioni

SQL-92 >> Dettagli e Approdondimenti >> DDL: Viste

20G. Mecca - mecca@unibas.it - Basi di DatiG. Mecca - mecca@unibas.it - Basi di Dati

DDL: Indici

Aggiunta di indici CREATE [UNIQUE] INDEX <nome> ON

<tabella>(<attributi>);UNIQUE: impone un vincolo di chiave sugli

attributi Esempio:

CREATE INDEX annociclo ON Studenti(anno, ciclo);

SQL-92 >> Dettagli e Approdondimenti >> DDL: Indici

21G. Mecca - mecca@unibas.it - Basi di DatiG. Mecca - mecca@unibas.it - Basi di Dati

DDL: Indici

Annotazioniindici secondariIn alcuni sistemi (es: PgSQL) anche il tipo di

indice (BTREE, HASH, ecc.)attenzione all’impatto sulle prestazioni

Eliminazione di indiciDROP INDEX <nome>;

EsempioDROP INDEX annociclo;

SQL-92 >> Dettagli e Approdondimenti >> DDL: Indici

22G. Mecca - mecca@unibas.it - Basi di DatiG. Mecca - mecca@unibas.it - Basi di Dati

DCL “Data Control Language”

Due funzioni principalicreazione ed eliminazione di utenticoncessione e revoca di autorizzazionisintassi non standard

UtentiCREATE USER, DROP USER

AutorizzazioniGRANT, REVOKE

SQL-92 >> Dettagli e Approdondimenti >> DCL

23G. Mecca - mecca@unibas.it - Basi di DatiG. Mecca - mecca@unibas.it - Basi di Dati

Creazione ed Eliminazione di Utenti Esempio: in PgSQL

CREATE USER <nome> [WITH [PASSWORD ‘<password>’] [CREATEDB] [CREATEUSER]];

es: CREATE USER pguser WITH PASSWORD‘pguser’ CREATEDB;

inserimenti nella tabella pg_shadow Eliminazione di utenti

DROP USER <nome>;es; CREATE USER pguser;

SQL-92 >> Dettagli e Approdondimenti >> DCL

24G. Mecca - mecca@unibas.it - Basi di DatiG. Mecca - mecca@unibas.it - Basi di Dati

Concessione e Revoca di privilegi

Autorizzazioninon tutti gli utenti sono autorizzati ad

accedere alle basi di datitipicamente: l’utente che crea la base di dati

e/o le tabelle (il proprietario) è autorizzato a fare tutto

gli altri utenti non possono fare niente il proprietario può concedere autorizzazioni

ad altri utenti

SQL-92 >> Dettagli e Approdondimenti >> DCL

25G. Mecca - mecca@unibas.it - Basi di DatiG. Mecca - mecca@unibas.it - Basi di Dati

Concessione e Revoca di privilegi

Istruzione GRANTGRANT <privilegi> ON <risorsa>

TO <utente> [WITH GRANT OPTION];<privilegi>: SELECT, INSERT, DELETE,

UPDATE, REFERENCES, ALL<risorsa>: tabella o vista<utente>: nome oppure PUBLICWITH GRANT OPTION: l’utente può

trasmettere i privilegi con l’istruzione GRANT

SQL-92 >> Dettagli e Approdondimenti >> DCL

26G. Mecca - mecca@unibas.it - Basi di DatiG. Mecca - mecca@unibas.it - Basi di Dati

Concessione e Revoca di Privilegi

EsempiGRANT ALL ON Studenti TO pguser;GRANT SELECT ON Professori TO pguser WITH GRANT OPTION;

GRANT SELECT ON EsamiSenzaVoti TO PUBLIC;

Revoca di privilegiREVOKE <privilegio> ON <risorsa>

FROM <utente>;es: REVOKE DELETE ON Studenti FROM pguser;

SQL-92 >> Dettagli e Approdondimenti >> DCL

27G. Mecca - mecca@unibas.it - Basi di DatiG. Mecca - mecca@unibas.it - Basi di Dati

Schemi Esterni

Costruzione dello schema logicol’utente o il DBA creano la base di datil’utente o il DBA creano lo schema

Costruzione degli schemi esternil’utente o il DBA definiscono eventuali vistel’utente o il DBA definiscono le autorizzazioni

Schema esterno di un utenteinsieme delle risorse visibili all’utente

SQL-92 >> Dettagli e Approdondimenti >> DCL

28G. Mecca - mecca@unibas.it - Basi di DatiG. Mecca - mecca@unibas.it - Basi di Dati

DML: Aggiornamenti

CancellazioniDELETE FROM <tabella> [<WHERE>];es: DELETE FROM Professori WHERE qualifica=‘supplente’;

ModificheUPDATE <tabella> SET

<attributo>=<espressione> [<WHERE>];es: UPDATE Professori SET qualifica=‘ordinario’ WHERE cod=‘VC’;

SQL-92 >> Dettagli e Approdondimenti >> DML: Aggiornamenti

29G. Mecca - mecca@unibas.it - Basi di DatiG. Mecca - mecca@unibas.it - Basi di Dati

Inserimenti

Istruzione INSERTdue forme

Una ennupla alla voltavengono specificati i valori della ennupla

Più ennuple alla voltaviene specificata una SELECTtutto il risultato della SELECT viene inserito

nella tabella

SQL-92 >> Dettagli e Approdondimenti >> DML: Aggiornamenti

30G. Mecca - mecca@unibas.it - Basi di DatiG. Mecca - mecca@unibas.it - Basi di Dati

Inserimenti

Una ennupla alla voltaINSERT INTO <tabella> VALUES (<valori>);

Non è necessario specificare tutti i valorilista di attributi assieme alla tabellai valori corrispondono ordinatamente agli attr.altri attributi: NULL oppure DEFAULT

EsempioINSERT INTO Corsi(cod, titolo) VALUES (‘BD’, ‘Basi di Dati’);

SQL-92 >> Dettagli e Approdondimenti >> DML: Aggiornamenti

31G. Mecca - mecca@unibas.it - Basi di DatiG. Mecca - mecca@unibas.it - Basi di Dati

Inserimenti

Più ennuple alla volta (“copia” di ennuple)INSERT INTO <tabella> <SELECT>;tutti o parte degli attributi (corrispondenza)

Esempio:

SQL-92 >> Dettagli e Approdondimenti >> DML: Aggiornamenti

CREATE TABLE CorsiTriennale ( cod char(3) PRIMARY KEY, titolo varchar(20), docente char(4) REFERENCES Professori(cod) );

INSERT INTO CorsiTriennaleSELECT cod, titolo, docenteFROM CorsiWHERE ciclo=‘laurea tr.’;

differenza con le viste

32G. Mecca - mecca@unibas.it - Basi di DatiG. Mecca - mecca@unibas.it - Basi di Dati

DML: Interrogazioni

Istruzione SELECTuna sintassi concreta per esprimere

operazioni dell’algebra relazionale Interrogazioni, forma generale

più blocchi SELECT correlati da operatori insiemistici, UNION, INTERSECT, EXCEPT

blocco SELECT: fatto di varie clausole

SQL-92 >> Dettagli e Approdondimenti >> DML: Interrogazioni

33G. Mecca - mecca@unibas.it - Basi di DatiG. Mecca - mecca@unibas.it - Basi di Dati

DML: Interrogazioni

SQL-92 >> Dettagli e Approfondimenti >> DML: Interrogazioni

UNION, INTERSECT, EXCEPT

Sottointerrogazione

Sottointerrogazione

ORDER BY

FROM

WHERE

SELECT

U oppure ∩ oppure –

Sottointerrogazione

Sottointerrogazione

ORDER BY

DISTINCT

tabelle con X o

34G. Mecca - mecca@unibas.it - Basi di DatiG. Mecca - mecca@unibas.it - Basi di Dati

DML: Interrogazioni

Blocco SELECTSELECT [DISTINCT] <proiezioni e ridenom.>FROM <tabelle, prod. cartesiani, join, alias>[WHERE <selezioni>][ORDER BY <attributi>];

Clausole obbligatorieSELECT e FROMWHERE e ORDER BY sono opzionali

SQL-92 >> Dettagli e Approdondimenti >> DML: Interrogazioni

35G. Mecca - mecca@unibas.it - Basi di DatiG. Mecca - mecca@unibas.it - Basi di Dati

Esempi

“Titolo dei corsi tenuti dal Professor Francesco Totti, in ordine alfabetico”

SQL-92 >> Dettagli e Approfondimenti >> DML: Interrogazioni

SELECT titolo

Risultato = ORDER BY titolo (

Corsi docente=cod Professori

cognome=‘Totti’ AND nome=‘Francesco’ (

)

titolo (

)

FROM Corsi JOIN Professori ON docente=cod

WHERE cognome=‘Totti’ AND nome=‘Francesco’

ORDER BY titolo

)

36G. Mecca - mecca@unibas.it - Basi di DatiG. Mecca - mecca@unibas.it - Basi di Dati

Esempi

“Nome e cognome degli studenti il cui tutor è Pasquale Bruno”

SQL-92 >> Dettagli e Approfondimenti >> DML: Interrogazioni

SELECT Studenti.cognome, Studenti.nome

Risultato =

Studenti Studenti.matr=studente Tutorato

)

Tutor.cognome=‘Bruno’ AND Tutor.nome=‘Pasquale’ (

)

Studenti.cognome, Studenti.nome (

FROM Studenti JOIN Tutorato ON Studenti.matr=studente

WHERE Tutor.cognome=‘Bruno’ AND Tutor.nome=‘Pasquale’

JOIN Studenti AS Tutor ON tutor=Tutor.matr

tutor=Tutor.matr (Studenti AS Tutor)

37G. Mecca - mecca@unibas.it - Basi di DatiG. Mecca - mecca@unibas.it - Basi di Dati

DML: Interrogazioni

Suggerimenti metodologiciper scrivere l’interrogazione SQL, ragionare

sugli operatori dell’algebra necessariseguire l’ordine di scrittura delle clausole

suggerito dalla forma standardragionare sulla struttura e sul contenuto dei

risultati intermedi

SQL-92 >> Dettagli e Approdondimenti >> DML: Interrogazioni

38G. Mecca - mecca@unibas.it - Basi di DatiG. Mecca - mecca@unibas.it - Basi di Dati

Operatori Insiemistici

Eliminano i duplicati E’ possibile mantenere i duplicati

UNION ALL, INTERSECT ALL, EXCEPT ALL

Esempio: professori e studenti

SQL-92 >> Dettagli e Approdondimenti >> DML: Interrogazioni

SELECT cognome, nomeFROM Professori

SELECT cognome, nomeFROM Studenti;

UNION

SELECT cognome, nomeFROM Professori

SELECT cognome, nomeFROM Studenti;

UNION ALL

39G. Mecca - mecca@unibas.it - Basi di DatiG. Mecca - mecca@unibas.it - Basi di Dati

Operatori Insiemistici

Ordinamentile SELECT coinvolte non possono contenere

ORDER BYun’unica ORDER BY finale per il risultato

SQL-92 >> Dettagli e Approdondimenti >> DML: Interrogazioni

SELECT cognome, nomeFROM ProfessoriORDER BY cognome

SELECT cognome, nomeFROM Studenti;

UNION

SELECT cognome, nomeFROM Professori

SELECT cognome, nomeFROM StudentiORDER BY cognome;

UNION

(

)

40G. Mecca - mecca@unibas.it - Basi di DatiG. Mecca - mecca@unibas.it - Basi di Dati

Clausola SELECT

DISTINCT, proiezioni, ridenominazioni Eventuali funzioni aggregative

COUNT, SUM, MAX, MIN, AVGDISTINCT

Esempio: contare le facoltà dei professori

SQL-92 >> Dettagli e Approdondimenti >> DML: Interrogazioni

SELECT COUNT(facolta)FROM Professori

SELECT COUNT(DISTINCT facolta))FROM Professori

risultato scorretto, uguale al numero dei professori

risultato corretto, uguale al numerodi facoltà distinte

41G. Mecca - mecca@unibas.it - Basi di DatiG. Mecca - mecca@unibas.it - Basi di Dati

Espressioni

Possono comparire nella SELECT Operandi

valori degli attributi Operatori (non standard)

operatori aritmetici +, -, *, % ed altrifunzioni matematiche log, exp, sin, …funzioni su stringhe length, substring, …funzioni su date e tempi

SQL-92 >> Dettagli e Approdondimenti >> DML: Interrogazioni

42G. Mecca - mecca@unibas.it - Basi di DatiG. Mecca - mecca@unibas.it - Basi di Dati

Espressioni

Esempio: reddito familiare in lireSELECT cognome, nome, reddito*1936.27FROM Studenti;

Esempio: media degli esami dello studente Pasquale Bruno in 110miSELECT AVG(voto)/30*110 AS media110miFROM Studenti JOIN Esami ON cod=studenteWHERE cognome=‘Bruno’ AND nome=‘Pasquale’;

SQL-92 >> Dettagli e Approdondimenti >> DML: Interrogazioni

43G. Mecca - mecca@unibas.it - Basi di DatiG. Mecca - mecca@unibas.it - Basi di Dati

Clausola FROM

Tabelle, prodotti cartesiani, join e alias Join

FROM R [INNER] JOIN S ON A=B Altre forme di join

FROM R NATURAL JOIN SFROM R LEFT [OUTER] JOIN S ON A=BFROM R RIGHT [OUTER] JOIN S ON A=BFROM R FULL [OUTER] JOIN S ON A=B

SQL-92 >> Dettagli e Approdondimenti >> DML: Interrogazioni

44G. Mecca - mecca@unibas.it - Basi di DatiG. Mecca - mecca@unibas.it - Basi di Dati

Join Esterni

Esempio: tutti i professori con i loro eventuali numeri telefonici

SELECT Professori.*, numeroFROM Professori LEFT OUTER JOIN Numeri ON cod=professore;

SQL-92 >> Dettagli e Approdondimenti >> DML: Interrogazioni

45G. Mecca - mecca@unibas.it - Basi di DatiG. Mecca - mecca@unibas.it - Basi di Dati

Clausola WHERE

Condizioni di selezionecondizioni sui valori degli attributioperatori di confronto =, >, <, >=, <=, <>espressioni con operatori e funzioniconnettivi booleani AND, OR, NOT

Operatori specialiIS NULL, IS NOT NULLLIKE

SQL-92 >> Dettagli e Approdondimenti >> DML: Interrogazioni

46G. Mecca - mecca@unibas.it - Basi di DatiG. Mecca - mecca@unibas.it - Basi di Dati

Operatore LIKE

Operatore LIKEcorrispondenza “parziale” tra valori testuali

“Pattern”sequenza di caratteri e simboli speciali%: una sequenza di 0 o più caratteri_ : un carattere qualsiasicorrisponde ad un insieme di stringhe

SQL-92 >> Dettagli e Approdondimenti >> DML: Interrogazioni

47G. Mecca - mecca@unibas.it - Basi di DatiG. Mecca - mecca@unibas.it - Basi di Dati

Operatore LIKE

Esempi:‘B%i’: {‘Bianchi’, ‘Belli’, ‘Brutti’, ‘Bi’, …}‘p_ _ _a’: {‘palla’, ‘pasta’, ‘pista’, …}‘A_t%’: {‘Antonio’, ‘Artrite’, …}

Condizioni<attributo di tipo testo> LIKE <pattern>vera se il valore dell’attributo appartiene

all’insieme di stringhe corrispondenti

SQL-92 >> Dettagli e Approdondimenti >> DML: Interrogazioni

48G. Mecca - mecca@unibas.it - Basi di DatiG. Mecca - mecca@unibas.it - Basi di Dati

Operatore LIKE

EsempiSELECT cognome, nomeFROM StudentiWHERE cognome LIKE ‘A%’;

SELECT *FROM CorsiWHERE titolo LIKE ‘%programmazione%’;

SQL-92 >> Dettagli e Approdondimenti >> DML: Interrogazioni

49G. Mecca - mecca@unibas.it - Basi di DatiG. Mecca - mecca@unibas.it - Basi di Dati

Dettagli e Approfondimenti

DDL: Tabellevalori di defaultvincoli di riferimentomodifiche allo schema

DDL: Vistedefinizione e uso

DDL: Indici DCL

utenti

autorizzazionischemi esterni

DML: Aggiornamentiinserimenti

DML: Interrogazionioperatori insiemisticiSELECT: espressioniFROM: joinWHERE: op. like

SQL-92 >> Sommario

50G. Mecca - mecca@unibas.it - Basi di DatiG. Mecca - mecca@unibas.it - Basi di Dati

SQL-92 >> Dettagli e Approfondimenti >> La Base di Dati di Esempio

CREATE TABLE Studenti ( matr integer PRIMARY KEY, cognome varchar(20) NOT NULL, nome varchar(20) NOT NULL, ciclo char(20), anno integer, relatore char(4) REFERENCES Professori(cod));

CREATE TABLE Professori ( cod char(4) PRIMARY KEY, cognome varchar(20) NOT NULL, nome varchar(20) NOT NULL, qualifica char(15), facolta char(10) );

CREATE TABLE Tutorato ( studente integer REFERENCES Studenti(matr), tutor integer REFERENCES Studenti(matr), PRIMARY KEY (studente,tutor));

CREATE TABLE Esami ( studente integer REFERENCES Studenti(matr) ON DELETE cascade ON UPDATE cascade, corso char(3) REFERENCES Corsi(cod), voto integer, lode bool, CHECK (voto>=18 and voto<=30), CHECK (not lode or voto=30), PRIMARY KEY (studente, corso));

CREATE TABLE Corsi ( cod char(3) PRIMARY KEY, titolo varchar(20) NOT NULL, ciclo char(20), docente char(4) REFERENCES Professori(cod) );

CREATE TABLE Numeri ( professore char(4) REFERENCES Professori(cod), numero char(9), PRIMARY KEY (professore,numero));

51G. Mecca - mecca@unibas.it - Basi di DatiG. Mecca - mecca@unibas.it - Basi di Dati

SQL-92 >> Dettagli e Approfondimenti >> La Base di Dati di Esempio

Tutorato T

studente INTEGER PK, FK

tutor INTEGER PK, FK

Studenti T

matr INTEGER PK

cognome VARCHAR(20)

nome VARCHAR(20)

ciclo CHAR(20)

anno INTEGER

relatore CHAR(4) FK

Professori T

cod CHAR(4) PK

cognome VARCHAR(20)

nome VARCHAR(20)

qualifica CHAR(15)

facolta CHAR(10)

Esami T

corso CHAR(3) PK, FK

studente INTEGER PK, FK

voto INTEGER

lode BOOL

Corsi T

codice CHAR(3) PK

titolo VARCHAR(20)

ciclo CHAR(20)

docente CHAR(4) FK

Numeri T

numero CHAR(9) PK

docente CHAR(4) PK, FK

52G. Mecca - mecca@unibas.it - Basi di DatiG. Mecca - mecca@unibas.it - Basi di Dati

SQL-92 >> Dettagli e Approfondimenti >> La Base di Dati di Esempio

cod cognome nome qualifica facolta

FT Totti Francesco ordinario Ingegneria

CV Vieri Christian associato Scienze

ADP Del Piero Alessandro supplente null

Professori

matr cognome nome ciclo anno relatore

111 Rossi Mario laurea tr. 1 null

222 Neri Paolo laurea tr. 2 null

333 Rossi Maria laurea tr. 1 null

444 Pinco Palla laurea tr. 3 FT

77777 Bruno Pasquale laurea sp. 1 FT

88888 Pinco Pietro laurea sp. 1 CV

Studenti

cod titolo ciclo docente

PR1 Programmazione I laurea tr. FT

ASD Algoritmi e Str. Dati laurea tr. CV

INFT Informatica Teorica laurea sp. ADP

Corsi

53G. Mecca - mecca@unibas.it - Basi di DatiG. Mecca - mecca@unibas.it - Basi di Dati

SQL-92 >> Dettagli e Approfondimenti >> La Base di Dati di Esempio

studente tutor

111 77777

222 77777

333 88888

444 88888

Tutorato

studente corso voto lode

111 PR1 27 false

222 ASD 30 true

111 INFT 24 false

77777 PR1 21 false

77777 ASD 20 false

88888 ASD 28 false

88888 PR1 30 false

88888 INFT 30 true

Esami

professore numero

FT 0971205145

FT 347123456

VC 0971205227

ADP 0971205363

ADP 338123456

Numeri

54G. Mecca - mecca@unibas.it - Basi di DatiG. Mecca - mecca@unibas.it - Basi di Dati

Termini della Licenza

Termini della Licenza

This work is licensed under the Creative Commons Attribution-ShareAlike License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/1.0/ or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Questo lavoro viene concesso in uso secondo i termini della licenza “Attribution-ShareAlike” di Creative Commons. Per ottenere una copia della licenza, è possibile visitare http://creativecommons.org/licenses/by-sa/1.0/ oppure inviare una lettera all’indirizzo Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.