La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

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

Presentazioni simili


Presentazione sul tema: "G. Mecca – – Università della Basilicata Basi di Dati SQL-92 Concetti Fondamentali versione 2.0 Questo lavoro è concesso in uso secondo."— Transcript della presentazione:

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

2 2 G. Mecca - - Basi di Dati Concetti Fondamentali m Introduzione m Creazione ed eliminazione di bd m Creazione ed eliminazione di tabelle m Inserimenti di ennuple m Interrogazioni clausola SELECT clausola FROM clausola WHERE clausola ORDER BY metodo di scrittura m Cancellazioni m Aggiornamenti SQL-92 >> Sommario

3 3 G. Mecca - - Basi di Dati Introduzione m SQL (Structured Query Language) linguaggio per linterazione con il DBMS tutte le operazioni vengono specificate in SQL m DDL (Data Definition Language) creazione degli oggetti dello schema m DCL (Data Control Language) controllo degli utenti e delle autorizzazioni m DML (Data Manipulation Language) manipolazione dellistanza della base di dati (interrogazioni e aggiornamenti) SQL-92 >> Concetti Fondamentali >> Introduzione

4 4 G. Mecca - - Basi di Dati Storia dello Standard m Prime implementazioni IBM System/R 1979 (SEQUEL) m Primi prodotti commerciali IBM SQL/DS, Oracle 1981 m SQL-86 prima versione dello standard, basata sul dialetto IBM SQL-92 >> Concetti Fondamentali >> Introduzione

5 5 G. Mecca - - Basi di Dati SQL-92, full SQL-92, intermediate SQL-92, entry Storia dello Standard m SQL-89 (SQL-1) vincoli di integrità livello1 e livello2 m SQL-92 (SQL-2) entry intermediate full SQL-92 >> Concetti Fondamentali >> Introduzione SQL-89, livello 2 SQL-89, livello 1

6 6 G. Mecca - - Basi di Dati Storia dello Standard m Standard collegati m SQL/CLI Call Level Interface (ODBC), 1995 m SQL/PSM Persistent Storage Modules, 1997 m SQL/OLB Object Language Bindings, 1998 SQL-92 >> Concetti Fondamentali >> Introduzione

7 7 G. Mecca - - Basi di Dati Storia dello Standard m SQL:1999 (SQL-3) estensioni object- relational core: tutto SQL-92 entry, (quasi) tutto SQL-92 intermediate, parte di SQL-92 full packages m Attualmente: lavori su SQL:200x SQL-92 >> Concetti Fondamentali >> Introduzione SQL-92, full SQL:1999, core SQL-92, intermediate SQL-92, entry SQL-89, livello 2 SQL-89, livello 1

8 8 G. Mecca - - Basi di Dati Storia dello Standard m Implementazioni dello standard gli standard hanno in alcuni casi inseguito la tecnologia di mercato m Corrispondenza imperfetta non esiste nessuna implementazione completa in commercio di SQL-92 full molti DBMS offrono funzionalità proprietarie e non standard (es: parte di SQL:1999) problema di portabilità delle applicazioni SQL-92 >> Concetti Fondamentali >> Introduzione

9 9 G. Mecca - - Basi di Dati Storia dello Standard m Tipico DBMS sul mercato oggi essenzialmente SQL- 92 intermediate limitate funzionalità di SQL-92 full parte di SQL:1999 m In questo corso ci concentriamo su SQL-92, intermediate SQL-92 >> Concetti Fondamentali >> Introduzione SQL-92, full SQL:1999, core SQL-92, intermediate SQL-92, entry SQL-89, livello 2 SQL-89, livello 1 tipico DBMS commerciale

10 10 G. Mecca - - Basi di Dati Le Istruzioni Fondamentali m DDL creazione della base di dati CREATE DATABASE creazione delle tabelle CREATE TABLE m DML inserimento delle ennuple INSERT INTO interrogazioni SELECT eliminazione delle ennuple DELETE modifica della ennuple UPDATE SQL-92 >> Concetti Fondamentali >> Introduzione

11 11 G. Mecca - - Basi di Dati Creazione ed Eliminazione di BD m Istruzioni del DDL m Sintassi CREATE DATABASE ; DROP DATABASE ; Esempio CREATE DATABASE universita; DROP DATABASE universita; SQL-92 >> Concetti Fondamentali >> Creazione ed Eliminazione di BD

12 12 G. Mecca - - Basi di Dati Creazione ed Eliminazione di BD m Semantica CREATE DATABASE crea una nuova base di dati vuota lutente deve essere autorizzato lutente diventa il proprietario della bd DROP DATABASE elimina una base di dati esistente (anche non vuota) lutente deve essere autorizzato SQL-92 >> Concetti Fondamentali >> Creazione ed Eliminazione di BD

13 13 G. Mecca - - Basi di Dati Creazione ed Eliminazione di Tabelle m Istruzioni del DDL CREATE TABLE DROP TABLE m Sintassi CREATE TABLE ( ); DROP TABLE ; SQL-92 >> Concetti Fondamentali >> Creazione ed Eliminazione di Tabelle

14 14 G. Mecca - - Basi di Dati Creazione ed Eliminazione di Tabelle m Esempio: la tabella Professori CREATE TABLE Professori ( cod char(4) PRIMARY KEY, cognome varchar(20) NOT NULL, nome varchar(20) NOT NULL, qualifica char(15), facolta char(10) ); DROP TABLE Professori; SQL-92 >> Concetti Fondamentali >> Creazione ed Eliminazione di Tabelle

15 15 G. Mecca - - Basi di Dati Creazione ed Eliminazione di Tabelle m Esempio: la tabella Esami 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)); SQL-92 >> Concetti Fondamentali >> Creazione ed Eliminazione di Tabelle

16 16 G. Mecca - - Basi di Dati Creazione ed Eliminazione di Tabelle m una o più definizioni di attributo zero o più definizioni di vincoli di tabella m Definizione di attributo [ ] m Definizioni di vincoli di tabella normalmente vincoli relativi a più attributi SQL-92 >> Concetti Fondamentali >> Creazione ed Eliminazione di Tabelle

17 17 G. Mecca - - Basi di Dati Creazione ed Eliminazione di Tabelle m identificatore m INT, INTEGER REAL, FLOAT DECIMAL(lung,dec) DOUBLE PRECISION CHAR(n), CHARACTER(n) VARCHAR(n) LONG VARCHAR, TEXT BOOLEAN, BOOL DATE TIME TIMESTAMP BINARY(n), BIT(n) VARBINARY(n), VARBIT(n) LONG VARBINARY, BLOB SQL-92 >> Concetti Fondamentali >> Creazione ed Eliminazione di Tabelle

18 18 G. Mecca - - Basi di Dati Creazione ed Eliminazione di Tabelle m Vincoli di colonna PRIMARY KEY UNIQUE NOT NULL REFERENCES [ON update CASCADE] [ON delete CASCADE] CHECK ( ) SQL-92 >> Concetti Fondamentali >> Creazione ed Eliminazione di Tabelle

19 19 G. Mecca - - Basi di Dati Creazione ed Eliminazione di Tabelle m Vincoli di tabella (su più attributi) PRIMARY KEY ( ) UNIQUE ( ) FOREIGN KEY ( ) REFERENCES [ON update CASCADE] [ON delete CASCADE] CHECK ( ) SQL-92 >> Concetti Fondamentali >> Creazione ed Eliminazione di Tabelle

20 20 G. Mecca - - Basi di Dati Creazione ed Eliminazione di Tabelle m Semantica CREATE TABLE crea una nuova tabella vuota secondo lo schema specificato lutente deve essere autorizzato lutente diventa il proprietario della tabella attenzione ai vincoli di riferimento DROP TABLE elimina una tabella esistente lutente deve essere autorizzato SQL-92 >> Concetti Fondamentali >> Creazione ed Eliminazione di Tabelle

21 21 G. Mecca - - Basi di Dati SQL-92 >> Concetti Fondamentali >> Creazione ed Eliminazione di Tabelle 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));

22 22 G. Mecca - - Basi di Dati Inserimenti m Istruzione del DML INSERT m Sintassi INSERT INTO VALUES ( ); m Semantica inserimento della ennupla nella tabella corrispondenza ordinata tra valori e attributi (notazione posizionale) SQL-92 >> Concetti Fondamentali >> Inserimenti

23 23 G. Mecca - - Basi di Dati Inserimenti m Esempi: INSERT INTO Professori VALUES (FT, Totti, Francesco, ordinario, Ingegneria); INSERT INTO Studenti VALUES (111, Rossi, Mario, laurea tr., 3, null); INSERT INTO Corsi VALUES (PR1, Programmazione 1, laurea tr., FT); SQL-92 >> Concetti Fondamentali >> Inserimenti

24 24 G. Mecca - - Basi di Dati Interrogazioni m Istruzione del DML SELECT sintassi concreta per specificare operatori dellalgebra m Filosofia parzialmente dichiarativa si specificano gli operatori da applicare, non lordine in cui devono essere applicati lottimizzatore sceglie la strategia ottima SQL-92 >> Concetti Fondamentali >> Interrogazioni

25 25 G. Mecca - - Basi di Dati Interrogazioni m Tre clausole principali (nucleo) SELECT, FROM, WHERE m SELECT proiezioni, ridenominazioni, elimin. duplicati m FROM tabelle, join, prodotti cartesiani, alias m WHERE selezioni SQL-92 >> Concetti Fondamentali >> Interrogazioni

26 26 G. Mecca - - Basi di Dati Esempi m Studenti della laurea triennale di anni successivi al primo SQL-92 >> Concetti Fondamentali >> Interrogazioni ciclo=laurea tr. AND anno>1 (Studenti) Risultato = SELECT * FROM Studenti WHERE ciclo=laurea tr. AND anno>1;

27 27 G. Mecca - - Basi di Dati Esempi m Matricola e cognome degli studenti che hanno sostenuto lesame di informatica teorica SQL-92 >> Concetti Fondamentali >> Interrogazioni SELECT matricola, cognome Risultato = matricola, cognome ( titolo=Inform. t. ( Studenti matr=studente Esami cod=corso Corsi )) FROM Studenti JOIN Esami ON matr=studente JOIN Corsi ON cod=corso WHERE titolo=Inform. t.;

28 28 G. Mecca - - Basi di Dati Interrogazioni m Per sistematizzare partiamo dalla forma standard dellalgebra relazionale (nella versione più generale) mostriamo come le clausole della SELECT si possono mettere in corrispondenza con gli operatori della forma standard questo ci suggerirà anche un metodo per scrivere le interrogazioni SQL SQL-92 >> Concetti Fondamentali >> Interrogazioni

29 29 G. Mecca - - Basi di Dati Interrogazioni m Forma standard dellalgebra una o più sottointerrogazioni correlate da operatori insiemistici m Sottointerrogazioni strategia a: prodotti cartesiani tra le tabelle (con eventuali alias) strategia b: join tra le tabelle (con eventuali alias) SQL-92 >> Concetti Fondamentali >> Interrogazioni >>

30 30 G. Mecca - - Basi di Dati Interrogazioni m Sottointerrogazioni (Continua) selezioni proiezioni (con funzioni aggregative) eliminazione di duplicati (DISTINCT) ridenominazioni ordinamenti finali (ORDER BY) SQL-92 >> Concetti Fondamentali >> Interrogazioni

31 31 G. Mecca - - Basi di Dati Interrogazioni SQL-92 >> Concetti Fondamentali >> Interrogazioni U oppure oppure – Sottointerrogazione ORDER BY DISTINCT TABELLE, con X oppure ed ev. ALIAS

32 32 G. Mecca - - Basi di Dati Interrogazioni m Interrogazioni SQL una o più sottointerrogazioni con eventuali operatori insiemistici m Per ogni sottointerrogazione SELECT: proiezioni, ridenominazioni, distinct FROM: prodotti cartesiani o join, alias [WHERE]: selezioni (opzionale) [ORDER BY]: ordinamenti (opzionale) SQL-92 >> Concetti Fondamentali >> Interrogazioni

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

34 34 G. Mecca - - Basi di Dati Esempi m Studenti della laurea triennale di anni successivi al primo SQL-92 >> Concetti Fondamentali >> Interrogazioni ciclo=laurea tr. AND anno>1 (Studenti) Risultato = SELECT * FROM Studenti WHERE ciclo=laurea tr. AND anno>1; NOTA: le clausole vanno scritte nellordine in cui compaiono prima SELECT, poi FROM, poi WHERE, poi ORDER BY

35 35 G. Mecca - - Basi di Dati Esempi m Matricola e cognome degli studenti che hanno sostenuto lesame di informatica teorica SQL-92 >> Concetti Fondamentali >> Interrogazioni SELECT matricola, cognome Risultato = matricola, cognome ( titolo=Inform. t. ( Studenti matr=studente Esami cod=corso Corsi )) FROM Studenti JOIN Esami ON matr=studente JOIN Corsi ON cod=corso WHERE titolo=Inform. t.;

36 36 G. Mecca - - Basi di Dati Clausola FROM m Serve a specificare le tabelle da cui prelevare i dati gli eventuali prodotti cartesiani gli eventuali join gli eventuali alias m Prodotti cartesiani: sintassi FROM R, S, T AS V … FROM Professori, Numeri es: FROM Professori, Numeri SQL-92 >> Concetti Fondamentali >> Interrogazioni

37 37 G. Mecca - - Basi di Dati Clausola FROM m Join: Sintassi FROM S JOIN R ON S.A=R.B JOIN T AS V.. FROM Professori JOIN Numeri ON cod=professore es: FROM Professori JOIN Numeri ON cod=professore m Semantica applicazione degli operatori corrispondenti costruisce la tabella unica a cui applicare gli operatori successivi SQL-92 >> Concetti Fondamentali >> Interrogazioni

38 38 G. Mecca - - Basi di Dati Clausola WHERE m Serve a specificare le selezioni m Sintassi WHERE m Dove è una condizione composta di sottocondizioni di selezione, collegate con connettivi booleani (AND, OR, NOT) sintassi identica alle condizioni dellalgebra SQL-92 >> Concetti Fondamentali >> Interrogazioni

39 39 G. Mecca - - Basi di Dati Clausola WHERE m Nota possono comparire solo attributi di tabelle che compaiono nella clausola FROM m Esempio FROM Professori WHERE qualifica=ordinario AND facolta IS NOT NULL FROM Professori WHERE qualifica=ordinario AND facolta IS NOT NULL m Semantica applica le selezioni alle tabelle della FROM SQL-92 >> Concetti Fondamentali >> Interrogazioni

40 40 G. Mecca - - Basi di Dati Clausola SELECT m Serve a specificare proiezioni funzioni aggregative ridenominazioni eliminazione di duplicati m Nota anche in questo caso è possibile specificare solo attributi di tabelle che compaiono nella clausola FROM SQL-92 >> Concetti Fondamentali >> Interrogazioni

41 41 G. Mecca - - Basi di Dati Clausola SELECT m Sintassi SELECT [DISTINCT] m Dove è una lista di nomi di attributo con eventuali ridenominazioni nella forma AS m Semantica applicare gli operatori corrispondenti alle tabelle della FROM SQL-92 >> Concetti Fondamentali >> Interrogazioni

42 42 G. Mecca - - Basi di Dati Clausola SELECT m Esempi SELECT cognome, nome FROM Professori SELECT DISTINCT cognome, nome FROM Professori SELECT DISTINCT cognome, nome FROM Professori SELECT cognome AS cognomeProf, nome AS nomeProf FROM Professori SELECT cognome AS cognomeProf, nome AS nomeProf FROM Professori SQL-92 >> Concetti Fondamentali >> Interrogazioni

43 43 G. Mecca - - Basi di Dati Clausola SELECT m Nota la clausola SELECT è obbligatoria che succede se non ci sono proiezioni e ridenominazioni ? m SELECT * non è necessario effettuare nè proiezioni nè ridenominazioni SQL-92 >> Concetti Fondamentali >> Interrogazioni

44 44 G. Mecca - - Basi di Dati Clausola ORDER BY m Serve a specificare ordinamenti finali m Sintassi ORDER BY m Dove è una lista di attributi di tabelle che compaiono nella clausola FROM SQL-92 >> Concetti Fondamentali >> Interrogazioni

45 45 G. Mecca - - Basi di Dati Clausola ORDER BY m Esempio SELECT * FROM Studenti ORDER BY cognome, annoCorso m Normalemente: lordinamento è crescente m Ordinamento decrescente: DESC ORDER BY cognome, annoCorso DESC SQL-92 >> Concetti Fondamentali >> Interrogazioni

46 46 G. Mecca - - Basi di Dati Esempi m Cognomi e nomi degli studenti SQL-92 >> Concetti Fondamentali >> Interrogazioni SELECT DISTINCT cognome, nome cognome, nome DISTINCT ( (Studenti)) ElencoNomi = FROM Studenti;

47 47 G. Mecca - - Basi di Dati Esempi m Cognomi e nomi degli studenti, in ordine alfabetico SQL-92 >> Concetti Fondamentali >> Interrogazioni SELECT DISTINCT cognome, nome cognome, nome DISTINCT ( (Studenti))) ElencoNomi = ORDER BY cognome, nome ( FROM Studenti ORDER BY cognome, nome;

48 48 G. Mecca - - Basi di Dati Esempi m Voto medio riportato negli esami SQL-92 >> Concetti Fondamentali >> Interrogazioni SELECT AVG(voto) Risultato = AVG(voto) (Esami) FROM Esami;

49 49 G. Mecca - - Basi di Dati Esempi m Cognomi, nomi e numeri di telefono dei professori (strategia a) SQL-92 >> Concetti Fondamentali >> Interrogazioni SELECT cognome, nome, numero cognome, nome, numero ( ProfessoriENumeri = cod=professore ( Professori X Numeri )) FROM Professori, Numeri WHERE cod=professore;

50 50 G. Mecca - - Basi di Dati Esempi m Cognomi, nomi e numeri di telefono dei professori (strategia b) SQL-92 >> Concetti Fondamentali >> Interrogazioni SELECT cognome, nome, numero cognome, nome, numero ( ProfessoriENumeri = Professori cod=professore Numeri) FROM Professori JOIN Numeri ON cod=professore;

51 51 G. Mecca - - Basi di Dati Esempi m Cognome e nome delle persone SQL-92 >> Concetti Fondamentali >> Interrogazioni SELECT cognome AS cognomePersona, nome AS nomePersona FROM Professori Risultato = cognome AS cognomePersona, nome AS nomePersona ( cognome, nome (Professori)) U cognome, nome (Studenti) SELECT cognome, nome FROM Studenti; UNION

52 52 G. Mecca - - Basi di Dati Esempi m Cognome e nome dei professori ordinari che non supervisionano tesi triennali SQL-92 >> Concetti Fondamentali >> Interrogazioni Risultato = cognome AS cognomeProf, nome AS nomeProf ( cognome, nome ( qualifica = Ordinario (Professori)) – cognome, nome ( ciclo = laurea tr. ( Studenti relatore = cod Professori ))

53 53 G. Mecca - - Basi di Dati Esempi m Cognome e nome dei professori ordinari che non supervisionano tesi triennali SQL-92 >> Concetti Fondamentali >> Interrogazioni SELECT cognome AS cognomeProf, nome AS nomeProf FROM Professori WHERE qualifica=ordinario SELECT cognome, nome FROM Studenti JOIN Professori ON relatore=cod WHERE ciclo=laurea tr.; EXCEPT

54 54 G. Mecca - - Basi di Dati Esempi m Cognomi e nomi degli studenti che allesame di Programmazione hanno riportato un voto superiore a quello dei loro tutor m Tabelle coinvolte Studenti, Esami Tutorato, Esami AS EsamiTutor SQL-92 >> Concetti Fondamentali >> Interrogazioni

55 55 G. Mecca - - Basi di Dati Esempi m Studenti e tutor (continua) SQL-92 >> Concetti Fondamentali >> Interrogazioni Risultato = cognome, nome ( Esami.corso=Pr1 AND EsamiTutor.corso=Pr1 AND Esami.voto > EsamiTutor.voto ( Tutorato.tutor=EsamiTutor.studente (Esami AS EsamiTutor))) matr=Tutorato.studente Tutorato Studenti matr=studente Esami

56 56 G. Mecca - - Basi di Dati Esempi m Studenti e tutor (continua) SQL-92 >> Concetti Fondamentali >> Interrogazioni SELECT cognome, nome FROM Studenti JOIN Esami ON matr=studente JOIN Tutorato ON matr=Tutorato.studente JOIN Esami AS EsamiTutor ON Tutorato.tutor = EsamiTutor.studente WHERE Esami.corso=Pr1 AND EsamiTutor.corso=Pr1 AND Esami.voto > EsamiTutor.voto;

57 57 G. Mecca - - Basi di Dati Interrogazioni m Nota una interrogazione particolare SELECT * FROM Corsi; SELECT * FROM R; es: SELECT * FROM Corsi; preleva i dati dalla tabella R senza applicare nessun operatore è il modo con cui in un DBMS SQL si visualizza interattivamente il contenuto di una tabella SQL-92 >> Concetti Fondamentali >> Interrogazioni

58 58 G. Mecca - - Basi di Dati Interrogazioni: Metodo di Scrittura m Scrivere linterrogazione in algebra relazionale utilizzando la forma standard m Tradurre gli operatori nella sintassi di SQL m Bisogna scegliere tra strategia a: prodotti cartesiani strategia b: join in generale è più efficiente la seconda SQL-92 >> Concetti Fondamentali >> Interrogazioni

59 59 G. Mecca - - Basi di Dati Cancellazioni m Istruzione del DML DELETE m Sintassi DELETE FROM [ ]; : identica a quella vista m Semantica elimina dalla tabella tutte le ennuple (che soddisfano la condizione se è specificata) SQL-92 >> Concetti Fondamentali >> Cancellazioni

60 60 G. Mecca - - Basi di Dati Cancellazioni m Esempi: DELETE FROM Numeri; DELETE FROM Studenti WHERE matr=111; DELETE FROM Corsi WHERE ciclo=laurea tr. AND docente=FT; SQL-92 >> Concetti Fondamentali >> Cancellazioni

61 61 G. Mecca - - Basi di Dati Aggiornamenti m Istruzione del DML UPDATE m Sintassi UPDATE SET = [ ] m Semantica aggiorna il valore dellattributo di tutte le ennuple (che soddisfano la condizione se è specificata) SQL-92 >> Concetti Fondamentali >> Aggiornamenti

62 62 G. Mecca - - Basi di Dati Aggiornamenti m Esempi: UPDATE Studenti SET anno=anno+1; UPDATE Studenti SET matr=11111 WHERE matr=111; UPDATE Corsi SET docente=VC WHERE ciclo=laurea tr. AND docente=FT; SQL-92 >> Concetti Fondamentali >> Aggiornamenti

63 63 G. Mecca - - Basi di Dati Concetti Fondamentali m Introduzione m Creazione ed eliminazione di bd m Creazione ed eliminazione di tabelle m Inserimenti di ennuple m Interrogazioni clausola SELECT clausola FROM clausola WHERE clausola ORDER BY metodo di scrittura m Cancellazioni m Aggiornamenti SQL-92 >> Sommario

64 64 G. Mecca - - Basi di Dati SQL-92 >> Concetti Fondamentali >> 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));

65 65 G. Mecca - - Basi di Dati SQL-92 >> Concetti Fondamentali >> 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

66 66 G. Mecca - - Basi di Dati SQL-92 >> Concetti Fondamentali >> 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

67 67 G. Mecca - - Basi di Dati SQL-92 >> Concetti Fondamentali >> 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

68 68 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.


Scaricare ppt "G. Mecca – – Università della Basilicata Basi di Dati SQL-92 Concetti Fondamentali versione 2.0 Questo lavoro è concesso in uso secondo."

Presentazioni simili


Annunci Google