G. Mecca – – Università della Basilicata Basi di Dati SQL-92 Dettagli e Approfondimenti versione 2.0 Questo lavoro è concesso in uso secondo.

Slides:



Advertisements
Presentazioni simili
Interrogazioni Semplici Le operazioni di interrogazione vengono specificate per mezzo dellistruzione select select ListaAttributi from ListaTabelle [where.
Advertisements

TIPI STANDARD DI SQL BOOLEAN Valori: vero, falso CHAR(n)
Structured Query Language
SQL applicato a SQL Server
Sicurezza e concorrenza nelle basi di dati
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità C1 Il linguaggio SQL.
Structured Query Language (SQL) Presentazione 13.1 Informatica Generale (Prof. Luca A. Ludovico)
1 Biglietti: schema E/R. 2 Biglietti: albero degli attributi.
Esercitazioni del Corso di Sistemi Informativi Marina Mongiello
1 SQL come linguaggio di definizione di dati Eugenio Di Sciascio.
Esercitazioni del Corso di Sistemi Informativi Marina Mongiello
G. Mecca – – Università della Basilicata Basi di Dati Progettazione di Basi di Dati: Introduzione versione 2.0 Questo lavoro è concesso.
G. Mecca – – Università della Basilicata Basi di Dati Progettazione Logica versione 2.0 Questo lavoro è concesso in uso secondo i termini.
G. Mecca – – Università della Basilicata Basi di Dati Sistemi per Basi di Dati Relazionali: Modello Logico Concetti Fondamentali versione.
Modello Concettuale dei Dati: Concetti Fondamentali
Algebra Relazionale Concetti Fondamentali
SQL-92 Concetti Fondamentali
Modello Concettuale Dettagli e Approfondimenti
G. Mecca – – Università della Basilicata Basi di Dati SQL-92 Concetti Avanzati versione 2.0 Questo lavoro è concesso in uso secondo i termini.
G. Mecca – – Università della Basilicata Tecnologie di Sviluppo per il Web XML: Dettagli e Approfondimenti versione 2.0 Questo lavoro è
Progettazione e Forme Normali
G. Mecca – – Università della Basilicata Basi di Dati Tecnologia di un DBMS: Concorrenza e Affidabilità Concetti Avanzati versione 2.0.
Algebra Relazionale Dettagli e Approfondimenti
G. Mecca – – Università della Basilicata Basi di Dati Progettazione Fisica e Tuning: Concetti Avanzati versione 2.0 Questo lavoro è concesso.
Frontespizio Economia Monetaria Anno Accademico
SQL.
SQL Structured Query Language
Programmazione Procedurale in Linguaggio C++
19/01/2014 Viste. 19/01/2014 Viste Le Viste Logiche o Viste o View possono essere definite come delle tabelle virtuali, i cui dati sono riaggregazioni.
1 IT FOR BUSINESS AND FINANCE ACCESS INTRODUCTION.
Corso di Informatica (Basi di Dati)
1 Corso di Laurea in Biotecnologie Informatica (Basi di Dati) SQL: Data Manipulation Language (DML) Anno Accademico 2009/2010 Da: Atzeni, Ceri, Paraboschi,
Ufficio Studi UNIONCAMERE TOSCANA 1 Presentazione di Riccardo Perugi Ufficio Studi UNIONCAMERE TOSCANA Firenze, 19 dicembre 2000.
Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, 1999
Basi di dati Università Degli Studi Parthenope di Napoli
SQL: Lezione 7 Nataliya Rassadko
Algoritmi e Strutture Dati
1 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 7 - Tabelle hash Alberto Montresor Università di Trento This work is licensed under the Creative.
Algoritmi e Strutture Dati
SQL Per la definizione di basi di dati SQL per definire ed amministrare Ogni utente puo definire una base di dati di cui diventa lamministratore potendo.
G. Mecca – – Università della Basilicata Basi di Dati Sistemi per Basi di Dati Relazionali: Modello Logico Dettagli e Approfondimenti versione.
Duplicati Lalgebra relazionale non ammette duplicati, SQL li ammette. Quindi select Città from Persona where Cognome= Rossi estrae una lista di città in.
SQL SQL (pronunciato anche come l’inglese sequel) è l’acronimo di Structured Query Language (linguaggio di interrogazione strutturato) E’ un linguaggio.
SELECT STATEMENT Clausola WHERE permette di limitare il numero di record da estrarre SELECT */ [DISTINCT] colonna/ espressione [alias],… FROM table [WHERE.
Viste. Cosè una vista? è possibile creare un subset logico di dati o una combinazione di dati una vista è una tabella logica basata su una tabella o su.
Creazione e manipolazione tabelle. TABELLE una tabella può essere creata in qualsiasi momento,anche quando gli utenti stanno usando il database la struttura.
SQL basato su ANSI (American National Standards Institute) – standard SQL SQL – Structured Query Language è un linguaggio dichiarativo e permette di comunicare.
Basi di dati Claudia Raibulet
SQL: Structured Query Language
Corso di INFORMATICA anno scolastico 2009/10 Linguaggio SQL IDENTIFICATORI di tabelle e attributi: stringhe di lunghezza max 18 caratteri, composte da.
1 Negozi Nuove idee realizzate per. 2 Negozi 3 4.
TECNOLOGIE DELLINFORMAZIONE E DELLA COMUNICAZIONE PER LE AZIENDE Materiale di supporto alla didattica.
Corso di Basi di Dati Il Linguaggio SQL Home page del corso:
sql: esempi di linguaggio sql nell'implementazione mysql
1 Il Linguaggio SQL Il Linguaggio SQL Prof. Lorenzo Vita, Ing. Luigi Testa.
Riconfigurare il diritto dautore. Lipertesto, una necessità di riconfigurazione. Secondo G. P. Landow, lavvento dellipertesto implica la necessità di.
Basi di Dati e Sistemi Informativi
Basi di Dati e Sistemi Informativi Il Linguaggio SQL Home page del corso:
SQL (IV) Data Definition Language/ Data Manipulation Language.
IL GIOCO DEL PORTIERE CASISTICA. Caso n. 1 Il portiere nella seguente azione NON commette infrazioni.
Il Linguaggio SQL. Le interrogazioni in SQL (continua…) La parte di SQL dedicata alla formulazione di interrogazioni fa parte del DML. SQL esprime le.
SQL, esempi 30/10/2014Basi di dati SQL1. 30/10/2014Basi di dati SQL2 CREATE TABLE, esempi CREATE TABLE corsi( codice numeric NOT NULL PRIMARY KEY, titolo.
SQL (III) Data Definition Language/ Data Manipulation Language.
Vincoli Interrelazionali Per i vincoli visti l’inserimento di un valore che li viola viene semplicemente impedito. In caso di vincoli di integrità referenziale,
Vincoli interrelazionali
Funzionalità del DBMS relazionale l Funzioni per –definizione della base di dati –inserimento / rimozione /aggiornamento di informazioni deve soddisfare.
Approfondimenti SQL.
Basi di Dati e Sistemi Informativi Esercitazione: Il Linguaggio SQL (DDL+DML) Home page del corso:
Linguaggio SQL prima parte Linguaggio SQL prima parte A. Lorenzi, E. Cavalli INFORMATICA PER SISTEMI INFORMATIVI AZIENDALI Copyright © Istituto Italiano.
Linguaggio SQL. Linguaggi per database La diffusione del modello relazionale ha favorito l’uso prevalente di linguaggi non procedurali: in questo modo.
Transcript della presentazione:

G. Mecca – – Università della Basilicata Basi di Dati SQL-92 Dettagli e Approfondimenti versione 2.0 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)

2 G. Mecca - - Basi di Dati Dettagli e Approfondimenti m DDL: Tabelle valori di default vincoli di riferimento modifiche allo schema m DDL: Viste definizione e uso m DDL: Indici m DCL utenti autorizzazioni schemi esterni m DML: Aggiornamenti inserimenti m DML: Interrogazioni operatori insiemistici SELECT: espressioni FROM: join WHERE: op. like SQL-92 >> Sommario

3 G. Mecca - - Basi di Dati SQL m SQL-92 Intermediate m DDL Data Definition Language definizione degli oggetti dello schema CREATE DATABASE DROP DATABASE CREATE TABLE DROP TABLE SQL-92 >> Dettagli e Approdondimenti

4 G. Mecca - - Basi di Dati SQL m DCL Data Control Language utenti e autorizzazioni m DML Data Manipulation Language interrogazioni e aggiornamenti INSERT, DELETE, UPDATE SELECT SQL-92 >> Dettagli e Approdondimenti

5 G. Mecca - - Basi di Dati DDL: Tabelle m Creazione CREATE TABLE ( ); m una o più definizioni di attributo zero o più definizioni di vincoli di tabella m Definizione di attributo [ ] SQL-92 >> Dettagli e Approdondimenti >> DDL: Tabelle

6 G. Mecca - - Basi di Dati Valori di Default m 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

7 G. Mecca - - Basi di Dati Vincoli di Riferimento m Vincoli di riferimento di colonna REFERENCES es: docente char(4) REFERENCES Professori(cod) m Vincoli di riferimento di tabella FOREIGN KEY ( ) REFERENCES es: se la chiave di Collegi è prov. e numero FOREIGN KEY (provincia, collegio) REFERENCES Collegi(provincia, numero) SQL-92 >> Dettagli e Approdondimenti >> DDL: Tabelle

8 G. Mecca - - Basi di Dati Vincoli di Riferimento m Aggiornamenti in cascata ON {UPDATE | DELETE} m CASCADE SET NULL SET DEFAULT es: docente char(4) REFERENCES Professori(cod) ON UPDATE SET NULL; SQL-92 >> Dettagli e Approdondimenti >> DDL: Tabelle

9 G. Mecca - - Basi di Dati Modifiche allo Schema m Modifiche ad una tabella già esistente ALTER TABLE m Tre funzioni ridenominazione della tabella aggiunta, ridenominazione ed eliminazione di attributi aggiunta ed eliminazione di vincoli SQL-92 >> Dettagli e Approdondimenti >> DDL: Tabelle

10 G. Mecca - - Basi di Dati Modifiche allo Schema m Ridenominazione della tabella ALTER TABLE RENAME TO ; es: ALTER TABLE Professori RENAME TO Docenti; m Modifiche agli attributi ALTER TABLE RENAME COLUMN TO ; ALTER TABLE ADD COLUMN ; ALTER TABLE DROP COLUMN ; SQL-92 >> Dettagli e Approdondimenti >> DDL: Tabelle

11 G. Mecca - - Basi di Dati Modifiche allo Schema m Esempio ALTER 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

12 G. Mecca - - Basi di Dati Modifiche allo Schema m Semantica dellaggiunta di colonne la nuova colonna viene aggiunta allo schema a tutte le ennuple viene aggiunto NULL oppure il valore standard se è stato specif. m Semantica delleliminazione di colonne la colonna viene eliminata dallo schema, assieme agli eventuali vincoli relativi viene effettuata la proiezione delle ennuple SQL-92 >> Dettagli e Approdondimenti >> DDL: Tabelle

13 G. Mecca - - Basi di Dati Modifiche allo Schema m Aggiunta di vincoli ALTER TABLE ADD CONSTRAINT ; listanza deve rispettare il vincolo m Esempio ALTER TABLE Studenti ADD CONSTRAINT cf UNIQUE (nome, cognome, dataNascita, luogoNascita); SQL-92 >> Dettagli e Approdondimenti >> DDL: Tabelle

14 G. Mecca - - Basi di Dati Modifiche allo Schema m Eliminazione di vincoli ALTER TABLE DROP CONSTRAINT ; m Esempio ALTER TABLE Studenti DROP CONSTRAINT cf; m Attenzione: molti DBMS non supportano nè DROP COLUMN, né DROP CONSTRAINT SQL-92 >> Dettagli e Approdondimenti >> DDL: Tabelle

15 G. Mecca - - Basi di Dati DDL: Viste m Viste tabelle virtuali definite attraverso uninterrogazione possono essere utilizzate come tabelle reali m Due funzioni fondamentali creazione degli schemi esterni (privatezza dei dati o ristrutturazioni) semplificazione di interrogazioni ricorrenti SQL-92 >> Dettagli e Approdondimenti >> DDL: Viste

16 G. Mecca - - Basi di Dati DDL: Viste m Creazione di viste CREATE VIEW AS ; m Semantica la vista viene ricalcolata sulla base della sua definizione ogni volta che viene usata m Eliminazione di viste DROP VIEW ; SQL-92 >> Dettagli e Approdondimenti >> DDL: Viste

17 G. Mecca - - Basi di Dati DDL: Viste m Privatezza: esami senza voti CREATE VIEW EsamiSenzaVoti AS SELECT studente, corso FROM Esami; SELECT * FROM EsamiSenzaVoti; SELECT * FROM Studenti, EsamiSenzaVoti WHERE matr=studente; DROP VIEW EsamiSenzaVoti; SQL-92 >> Dettagli e Approdondimenti >> DDL: Viste

18 G. Mecca - - Basi di Dati DDL: Viste m Compiti ricorrenti: professori e numeri CREATE VIEW ProfessoriNumeri AS SELECT codice, nome, cognome, numero FROM Professori JOIN Numeri ON cod=professore; SELECT * FROM ProfessoriNumeri ORDER BY cognome, nome; SQL-92 >> Dettagli e Approdondimenti >> DDL: Viste

19 G. Mecca - - Basi di Dati DDL: Viste m Differenza tra tabelle e viste le tabelle sono materializzate nella base di dati, le viste no (sono derivate dalle tabelle) schema di una vista = attributi e tipi della select istanza di una vista = risultato della select le tabelle sono aggiornabili, le viste no le viste sono sempre aggiornate e consistenti non hanno impatto sulle prestazioni SQL-92 >> Dettagli e Approdondimenti >> DDL: Viste

20 G. Mecca - - Basi di Dati DDL: Indici m Aggiunta di indici CREATE [UNIQUE] INDEX ON ( ); UNIQUE: impone un vincolo di chiave sugli attributi m Esempio: CREATE INDEX annociclo ON Studenti(anno, ciclo); SQL-92 >> Dettagli e Approdondimenti >> DDL: Indici

21 G. Mecca - - Basi di Dati DDL: Indici m Annotazioni indici secondari In alcuni sistemi (es: PgSQL) anche il tipo di indice (BTREE, HASH, ecc.) attenzione allimpatto sulle prestazioni m Eliminazione di indici DROP INDEX ; m Esempio DROP INDEX annociclo; SQL-92 >> Dettagli e Approdondimenti >> DDL: Indici

22 G. Mecca - - Basi di Dati DCL Data Control Language m Due funzioni principali creazione ed eliminazione di utenti concessione e revoca di autorizzazioni sintassi non standard m Utenti CREATE USER, DROP USER m Autorizzazioni GRANT, REVOKE SQL-92 >> Dettagli e Approdondimenti >> DCL

23 G. Mecca - - Basi di Dati Creazione ed Eliminazione di Utenti m Esempio: in PgSQL CREATE USER [WITH[PASSWORD ] [CREATEDB] [CREATEUSER]]; es: CREATE USER pguser WITH PASSWORDpguser CREATEDB; inserimenti nella tabella pg_shadow m Eliminazione di utenti DROP USER ; es; CREATE USER pguser; SQL-92 >> Dettagli e Approdondimenti >> DCL

24 G. Mecca - - Basi di Dati Concessione e Revoca di privilegi m Autorizzazioni non tutti gli utenti sono autorizzati ad accedere alle basi di dati tipicamente: lutente 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

25 G. Mecca - - Basi di Dati Concessione e Revoca di privilegi m Istruzione GRANT GRANT ON TO [WITH GRANT OPTION]; : SELECT, INSERT, DELETE, UPDATE, REFERENCES, ALL : tabella o vista : nome oppure PUBLIC WITH GRANT OPTION: lutente può trasmettere i privilegi con listruzione GRANT SQL-92 >> Dettagli e Approdondimenti >> DCL

26 G. Mecca - - Basi di Dati Concessione e Revoca di Privilegi m Esempi GRANT ALL ON Studenti TO pguser; GRANT SELECT ON Professori TO pguser WITH GRANT OPTION; GRANT SELECT ON EsamiSenzaVoti TO PUBLIC; m Revoca di privilegi REVOKE ON FROM ; es: REVOKE DELETE ON Studenti FROM pguser; SQL-92 >> Dettagli e Approdondimenti >> DCL

27 G. Mecca - - Basi di Dati Schemi Esterni m Costruzione dello schema logico lutente o il DBA creano la base di dati lutente o il DBA creano lo schema m Costruzione degli schemi esterni lutente o il DBA definiscono eventuali viste lutente o il DBA definiscono le autorizzazioni m Schema esterno di un utente insieme delle risorse visibili allutente SQL-92 >> Dettagli e Approdondimenti >> DCL

28 G. Mecca - - Basi di Dati DML: Aggiornamenti m Cancellazioni DELETE FROM [ ]; es: DELETE FROM Professori WHERE qualifica=supplente; m Modifiche UPDATE SET = [ ]; es: UPDATE Professori SET qualifica=ordinario WHERE cod=VC; SQL-92 >> Dettagli e Approdondimenti >> DML: Aggiornamenti

29 G. Mecca - - Basi di Dati Inserimenti m Istruzione INSERT due forme m Una ennupla alla volta vengono specificati i valori della ennupla m Più ennuple alla volta viene specificata una SELECT tutto il risultato della SELECT viene inserito nella tabella SQL-92 >> Dettagli e Approdondimenti >> DML: Aggiornamenti

30 G. Mecca - - Basi di Dati Inserimenti m Una ennupla alla volta INSERT INTO VALUES ( ); m Non è necessario specificare tutti i valori lista di attributi assieme alla tabella i valori corrispondono ordinatamente agli attr. altri attributi: NULL oppure DEFAULT m Esempio INSERT INTO Corsi(cod, titolo) VALUES (BD, Basi di Dati); SQL-92 >> Dettagli e Approdondimenti >> DML: Aggiornamenti

31 G. Mecca - - Basi di Dati Inserimenti m Più ennuple alla volta (copia di ennuple) INSERT INTO ; tutti o parte degli attributi (corrispondenza) m 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 CorsiTriennale SELECT cod, titolo, docente FROM Corsi WHERE ciclo=laurea tr.; differenza con le viste

32 G. Mecca - - Basi di Dati DML: Interrogazioni m Istruzione SELECT una sintassi concreta per esprimere operazioni dellalgebra relazionale m 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

33 G. Mecca - - Basi di Dati DML: Interrogazioni SQL-92 >> Dettagli e Approfondimenti >> DML: Interrogazioni UNION, INTERSECT, EXCEPT Sottointerrogazione ORDER BY FROM WHERE SELECT U oppure oppure – Sottointerrogazione ORDER BY DISTINCT tabelle con X o

34 G. Mecca - - Basi di Dati DML: Interrogazioni m Blocco SELECT SELECT [DISTINCT] FROM [WHERE ] [ORDER BY ]; m Clausole obbligatorie SELECT e FROM WHERE e ORDER BY sono opzionali SQL-92 >> Dettagli e Approdondimenti >> DML: Interrogazioni

35 G. Mecca - - Basi di Dati Esempi m 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 )

36 G. Mecca - - Basi di Dati Esempi m 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)

37 G. Mecca - - Basi di Dati DML: Interrogazioni m Suggerimenti metodologici per scrivere linterrogazione SQL, ragionare sugli operatori dellalgebra necessari seguire lordine di scrittura delle clausole suggerito dalla forma standard ragionare sulla struttura e sul contenuto dei risultati intermedi SQL-92 >> Dettagli e Approdondimenti >> DML: Interrogazioni

38 G. Mecca - - Basi di Dati Operatori Insiemistici m Eliminano i duplicati m E possibile mantenere i duplicati UNION ALL, INTERSECT ALL, EXCEPT ALL m Esempio: professori e studenti SQL-92 >> Dettagli e Approdondimenti >> DML: Interrogazioni SELECT cognome, nome FROM Professori SELECT cognome, nome FROM Studenti; UNION SELECT cognome, nome FROM Professori SELECT cognome, nome FROM Studenti; UNION ALL

39 G. Mecca - - Basi di Dati Operatori Insiemistici m Ordinamenti le SELECT coinvolte non possono contenere ORDER BY ununica ORDER BY finale per il risultato SQL-92 >> Dettagli e Approdondimenti >> DML: Interrogazioni SELECT cognome, nome FROM Professori ORDER BY cognome SELECT cognome, nome FROM Studenti; UNION SELECT cognome, nome FROM Professori SELECT cognome, nome FROM Studenti ORDER BY cognome; UNION ( )

40 G. Mecca - - Basi di Dati Clausola SELECT m DISTINCT, proiezioni, ridenominazioni m Eventuali funzioni aggregative COUNT, SUM, MAX, MIN, AVG DISTINCT m 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 numero di facoltà distinte

41 G. Mecca - - Basi di Dati Espressioni m Possono comparire nella SELECT m Operandi valori degli attributi m Operatori (non standard) operatori aritmetici +, -, *, % ed altri funzioni matematiche log, exp, sin, … funzioni su stringhe length, substring, … funzioni su date e tempi SQL-92 >> Dettagli e Approdondimenti >> DML: Interrogazioni

42 G. Mecca - - Basi di Dati Espressioni m Esempio: reddito familiare in lire SELECT cognome, nome, reddito* FROM Studenti; Esempio: media degli esami dello studente Pasquale Bruno in 110mi SELECT AVG(voto)/30*110 AS media110mi FROM Studenti JOIN Esami ON cod=studente WHERE cognome=Bruno AND nome=Pasquale; SQL-92 >> Dettagli e Approdondimenti >> DML: Interrogazioni

43 G. Mecca - - Basi di Dati Clausola FROM m Tabelle, prodotti cartesiani, join e alias m Join FROM R [INNER] JOIN S ON A=B m Altre forme di join FROM R NATURAL JOIN S FROM R LEFT [OUTER] JOIN S ON A=B FROM R RIGHT [OUTER] JOIN S ON A=B FROM R FULL [OUTER] JOIN S ON A=B SQL-92 >> Dettagli e Approdondimenti >> DML: Interrogazioni

44 G. Mecca - - Basi di Dati Join Esterni m Esempio: tutti i professori con i loro eventuali numeri telefonici SELECT Professori.*, numero FROM Professori LEFT OUTER JOIN Numeri ON cod=professore; SQL-92 >> Dettagli e Approdondimenti >> DML: Interrogazioni

45 G. Mecca - - Basi di Dati Clausola WHERE m Condizioni di selezione condizioni sui valori degli attributi operatori di confronto =, >, =, espressioni con operatori e funzioni connettivi booleani AND, OR, NOT m Operatori speciali IS NULL, IS NOT NULL LIKE SQL-92 >> Dettagli e Approdondimenti >> DML: Interrogazioni

46 G. Mecca - - Basi di Dati Operatore LIKE m Operatore LIKE corrispondenza parziale tra valori testuali m Pattern sequenza di caratteri e simboli speciali %: una sequenza di 0 o più caratteri _ : un carattere qualsiasi corrisponde ad un insieme di stringhe SQL-92 >> Dettagli e Approdondimenti >> DML: Interrogazioni

47 G. Mecca - - Basi di Dati Operatore LIKE m Esempi: B%i: {Bianchi, Belli, Brutti, Bi, …} p_ _ _a: {palla, pasta, pista, …} A_t%: {Antonio, Artrite, …} m Condizioni LIKE vera se il valore dellattributo appartiene allinsieme di stringhe corrispondenti SQL-92 >> Dettagli e Approdondimenti >> DML: Interrogazioni

48 G. Mecca - - Basi di Dati Operatore LIKE m Esempi SELECT cognome, nome FROM Studenti WHERE cognome LIKE A%; SELECT * FROM Corsi WHERE titolo LIKE %programmazione%; SQL-92 >> Dettagli e Approdondimenti >> DML: Interrogazioni

49 G. Mecca - - Basi di Dati Dettagli e Approfondimenti m DDL: Tabelle valori di default vincoli di riferimento modifiche allo schema m DDL: Viste definizione e uso m DDL: Indici m DCL utenti autorizzazioni schemi esterni m DML: Aggiornamenti inserimenti m DML: Interrogazioni operatori insiemistici SELECT: espressioni FROM: join WHERE: op. like SQL-92 >> Sommario

50 G. Mecca - - 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));

51 G. Mecca - - Basi di Dati SQL-92 >> Dettagli e Approfondimenti >> La Base di Dati di Esempio TutoratoT studente INTEGERPK, FK tutor INTEGERPK, FK StudentiT matr INTEGERPK cognome VARCHAR(20) nome VARCHAR(20) ciclo CHAR(20) anno INTEGER relatore CHAR(4)FK ProfessoriT cod CHAR(4)PK cognome VARCHAR(20) nome VARCHAR(20) qualifica CHAR(15) facolta CHAR(10) EsamiT corso CHAR(3)PK, FK studente INTEGERPK, FK voto INTEGER lode BOOL CorsiT codice CHAR(3)PK titolo VARCHAR(20) ciclo CHAR(20) docente CHAR(4)FK NumeriT numero CHAR(9)PK docente CHAR(4)PK, FK

52 G. Mecca - - Basi di Dati SQL-92 >> Dettagli e Approfondimenti >> La Base di Dati di Esempio codcognomenomequalificafacolta FTTottiFrancescoordinarioIngegneria CVVieriChristianassociatoScienze ADPDel PieroAlessandrosupplentenull Professori matrcognomenomecicloannorelatore 111RossiMariolaurea tr.1null 222NeriPaololaurea tr.2null 333RossiMarialaurea tr.1null 444PincoPallalaurea tr.3FT 77777BrunoPasqualelaurea sp.1FT 88888PincoPietrolaurea sp.1CV Studenti codtitolociclodocente PR1Programmazione Ilaurea tr.FT ASDAlgoritmi e Str. Datilaurea tr.CV INFTInformatica Teoricalaurea sp.ADP Corsi

53 G. Mecca - - Basi di Dati SQL-92 >> Dettagli e Approfondimenti >> La Base di Dati di Esempio studentetutor Tutorato studentecorsovotolode 111PR127false 222ASD30true 111INFT24false 77777PR121false 77777ASD20false 88888ASD28false 88888PR130false 88888INFT30true Esami professorenumero FT FT VC ADP ADP Numeri

54 G. Mecca - - Basi di Dati Termini della Licenza m This work is licensed under the Creative Commons Attribution- ShareAlike License. To view a copy of this license, visit or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA. m Questo lavoro viene concesso in uso secondo i termini della licenza Attribution-ShareAlike di Creative Commons. Per ottenere una copia della licenza, è possibile visitare oppure inviare una lettera allindirizzo Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.