BASI di DATI. SQL: concetti fondamentali

Documenti analoghi
Basi di Dati. Concetti Fondamentali SQL-92 25/02/2004. Concetti Fondamentali. Introduzione. Interrogazioni. Creazione ed eliminazione di bd

Basi di Dati SQL-92. Concetti Fondamentali

Gestione e Analisi dei Dati. Lezione 2 Vincoli su attributo Selezioni semplici su una tabella

Algebra Relazionale. Concetti Fondamentali

Basi di Dati. Dettagli e Approfondimenti SQL-92 25/02/2004. Dettagli e Approfondimenti. DDL: Tabelle. DML: Aggiornamenti.

Basi di Dati SQL-92. Dettagli e Approfondimenti

Basi di Dati SQL-92. Dettagli e Approfondimenti

Algebra Relazionale. Concetti Fondamentali

Basi di Dati. Algebra Relazionale. Concetti Fondamentali

STRUCTURED QUERY LANGUAGE (SQL) E INTERROGAZIONI. Patrizio Dazzi a.a

Basi di Dati. Algebra Relazionale. Concetti Fondamentali

Basi di Dati. Concetti Avanzati

Interrogazioni con Raggruppamenti

Introduzione. Introduzione

4/16/07. Algebra Relazionale. Introduzione. La Base di Dati di Esempio

Basi di Dati. Dettagli e Approfondimenti

SQL: RAGGRUPPAMENTI, QUANTIFICAZIONE, METODO. Patrizio Dazzi a.a

SQL: ALTRE FORME DI JOIN, FUNZIONI AGGREGATIVE, ESPRESSIONI. Patrizio Dazzi a.a

BASE DI DATI. Concetti trattati: Funzioni aggregate Raggruppamenti Nidificazione Viste. Informatica Umanistica Università di Pisa

BASE DI DATI. Concetti trattati: Funzioni aggregate Raggruppamenti Nidificazione Viste. Informatica Umanistica Università di Pisa

Gestione e Analisi dei Dati. Lezione 4 Relazioni multi tabella Relazioni uno-a-uno, uno-a-molti, molti-a-molti

VISTE. 19/11/2015 Concetti Avanzati - SQL 71

Basi di Dati. Progettazione Logica

Basi di Dati. La Progettazione Logica. Sommario. Il Processo di Progetto della BD. Algoritmo di Progettazione Logica

BASE DI DATI. Progettazione logica. Informatica Umanistica Università di Pisa

SQL: SCRIVERE INTERROGAZIONI E ANNIDARLE. Patrizio Dazzi a.a

SISTEMI INFORMATIVI E TELEMEDICINA INFORMATICA MEDICA. 3. Panoramica su SQL Prof. Mauro Giacomini

Sistemi di Elaborazione delle Informazioni

SQL: "storia" 31/05/2006 2

Structured Query Language

4/16/07. Le Basi di Dati Relazionali. Concetti Fondamentali. Base di dati, tabella, ennupla, attributo, dominio. Valori nulli

Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, SQL

Linguaggi per basi di dati. Linguaggi per basi di dati e SQL. Linguaggi di interrogazione per basi di dati relazionali. Linguaggi di interrogazione

Linguaggi per basi di dati e SQL

Basi di Dati. Sistemi per Basi di Dati Relazionali: Modello Logico. Concetti Fondamentali. Concetti Fondamentali

Corso di Laurea in Ingegneria Informatica Fondamenti di Informatica II Modulo Basi di dati a.a

Corso di Laurea in Ingegneria Informatica Fondamenti di Informatica II Modulo Basi di dati a.a

Corso di Basi di Dati

Dichiarazione degli schemi in SQL DDL 1

Equivalenza di espressioni. Equivalenze. Equivalenze. Due espressioni sono equivalenti se: Atomizzazione delle selezioni σ F1 F2 (E) σ F1 (σ F2 (E))

Interrogare una base di dati: algebra relazionale e SQL. Savino Castagnozzi Giorgio Macauda Michele Meomartino Salvatore Picerno Massimiliano Sartor

SQL-DDL. Basi di Dati. Prof. Alfredo Cuzzocrea Università degli Studi di Trieste

Interrogazioni nidificate

Mirco Nanni ISTI CNR, Pisa. CdL in Lettere A.A. 2007/2008

Informatica documentale Laurea in Scienze della Comunicazione Prova scritta del 25 giugno Cognome e nome: Matricola:

Stringhe di caratteri

Informatica Grafica. Basi di dati parte 2

Laboratorio di Basi di Dati

Structured. Language. Basi di Dati. Introduzione. DDL: Data Definition Language. Tipi di dato. Query. Modifica dei Dati

SQL /10/2016 Basi di dati - SQL 1

Universita di Milano Bicocca Corso di Basi di dati 1 in elearning C. Batini 6. SQL DDL 6.1 Data Description Language - 1

Il linguaggio SQL: DDL di base

Basi di Dati. Laboratorio Ing. G. Laboccetta Dott.ssa. V. Policicchio. Corso di Laurea in Informatica. a.a

Corso di Informatica Linguaggio SQL prima parte

Interrogazioni nidificate

Tipi numerici esatti Valori interi o con parte decimale di lunghezza prefissata

SQL SQL. Definizione dei dati. Domini. Esistono 6 domini elementari:

Corso di. Basi di Dati I. 7. Esercitazioni in SQL: Definizione e manipolazione dei dati

SQL è stato definito nel 1973 ed è oggi il linguaggio universale dei sistemi relazionali

Laboratorio di Basi di Dati e Multimedia

Uno dei principali motivi del successo delle basi di dati: è diventato uno standard

IL MODELLO RELAZIONALE. Patrizio Dazzi a.a

Laboratorio di Basi di Dati

SQL Esempi. 24/10-7/11/2016 Basi di dati - SQL 1

SQL. Il nome sta per Structured Query Language Le interrogazioni SQL sono dichiarative

Laboratorio di Basi di Dati

SQL Matteo Magnani, Danilo Montesi Università di Bologna SQL. Linguaggio di interrogazione per basi di dati relazionali

Basi di Dati: Corso di laboratorio

SQL quick reference. piccolo manuale di riferimento dei principali comandi SQL (prof. Claudio Maccherani, Perugia, 2013)

Sommario. Introduzione... 13

SQL. SQL: una visione panoramica. SQL: "storia" Definizione dei dati

Corso di. Basi di Dati I. 7. Esercitazioni in SQL: Definizione e manipolazione dei dati

Fondamenti di Informatica A. A / 1 9

SQL. Laboratorio di Progettazione di Basi di Dati (CdS in Informatica e TPS)

Manuale SQL. Manuale SQL - 1 -

Fondamenti di Informatica e Programmazione

A.A. 2018/2019. Introduzione a SQL FONDAMENTI DI INFORMATICA E PROGRAMMAZIONE. Docente Prof. Raffaele Pizzolante

Il linguaggio SQL. TUTORATO DIFONDAMENTI DIINFORMATICA

SQL. SQL: "storia. Sviluppato nella metà degli anni settanta (1974) presso il laboratorio di ricerca IBM di S.Josè. Dal 1983 ca. "standard di fatto"

Caratteristiche dei linguaggi per Database

IL MODELLO RELAZIONALE

Corso di Basi di Dati

Basi di Dati Corso di Laura in Informatica Umanistica

Soluzione esercitazione 01

Principi di Progettazione del Software a.a Il linguaggio SQL. Prof. Luca Mainetti Università del Salento

Principi di Progettazione del Software a.a Il linguaggio SQL. Linguaggi per DBMS

Universita di Milano Bicocca Corso di Basi di dati 1 in elearning C. Batini 6. SQL DDL 6.2 Data Description Language - 2

SQL Esempi /10/2017 Basi di dati - SQL 1

SELECT s.nome, e.data Studenti s, Esami e WHERE e.materia = 'BD' AND e.voto = 30 AND e.matricola = s.matricola

Viste come strumenti di programmazione

SELECT s.nome, e.data FROM Studenti s, Esami e WHERE e.materia = 'BD' AND e.voto = 30 AND e.matricola = s.matricola

SQL. Lezione 1. Docente: Alberto Belussi

Prof. Alberto Postiglione Dipartimento di Scienze della Comunicazione Università degli Studi di Salerno

SQL - Structured Query Language

SQL. SQL come Data Manipulation Language - Inserimento, cancellazione e aggiornamento di righe

Interrogazioni in SQL SQL1 1

Esempio di database relazionale con l utilizzo del prodotto MySQL

Basi di Dati. Esercitazione Algebra Relazionale e SQL. Ing. Paolo Cappellari. 15 maggio 2006

Transcript:

BASI di DATI SQL: concetti fondamentali 1

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

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

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

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

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

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

SQL-92 >> Concetti Fondamentali >> Introduzione Attualmente Storia dello Standard SQL-92 intermediate, con funzionalità di full nessuna implementazione competa di SQL-92 full parte di SQL:1999 Ci concentriamo su SQL-92, intermediate tipico DBMS commerciale SQL-92, full SQL-92, intermediate SQL-92, entry SQL-89, livello 2 SQL-89, livello 1 SQL:1999, core 8

SQL-92 >> Concetti Fondamentali >> Creazione ed Eliminazione di BD Creazione ed Eliminazione di BD Istruzioni del DDL Sintassi CREATE DATABASE <nome>; DROP DATABASE <nome>; Esempio CREATE DATABASE universita; DROP DATABASE universita; 9

SQL-92 >> Concetti Fondamentali >> Creazione ed Eliminazione di BD Creazione ed Eliminazione di BD Semantica CREATE DATABASE crea una nuova base di dati vuota l utente deve essere autorizzato l utente diventa il proprietario della bd DROP DATABASE elimina una base di dati esistente (anche non vuota) l utente deve essere autorizzato 10

SQL-92 >> Concetti Fondamentali >> Creazione ed Eliminazione di Tabelle Creazione ed Eliminazione di Tabelle Istruzioni del DDL CREATE TABLE DROP TABLE Sintassi CREATE TABLE <nome> (<schema>); DROP TABLE <nome>; 11

SQL-92 >> Concetti Fondamentali >> Creazione ed Eliminazione di Tabelle Creazione ed Eliminazione di Tabelle 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; 12

SQL-92 >> Concetti Fondamentali >> Creazione ed Eliminazione di Tabelle Creazione ed Eliminazione di Tabelle 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)); 13

SQL-92 >> Concetti Fondamentali >> Creazione ed Eliminazione di Tabelle Creazione ed Eliminazione di Tabelle <schema> una o più definizioni di attributo zero o più definizioni di vincoli di tabella Definizione di attributo <nomeattributo> <tipo> [<vincoli di colonna>] vincoli sul singolo attributo Definizioni di vincoli di tabella normalmente vincoli relativi a più attributi 14

SQL-92 >> Concetti Fondamentali >> Creazione ed Eliminazione di Tabelle Creazione ed Eliminazione di Tabelle <nomeattributo> identificatore <tipo> 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 15

SQL-92 >> Concetti Fondamentali >> Creazione ed Eliminazione di Tabelle Creazione ed Eliminazione di Tabelle Vincoli di colonna PRIMARY KEY UNIQUE NOT NULL REFERENCES <chiave esterna> [ON update CASCADE] [ON delete CASCADE] CHECK (<espressione>) 16

SQL-92 >> Concetti Fondamentali >> Creazione ed Eliminazione di Tabelle Creazione ed Eliminazione di Tabelle Vincoli di tabella (su più attributi) PRIMARY KEY (<lista attributi>) UNIQUE (<lista attributi>) FOREIGN KEY (<lista attributi>) REFERENCES <chiave esterna> [ON update CASCADE] [ON delete CASCADE] CHECK (<espressione>) 17

SQL-92 >> Concetti Fondamentali >> Creazione ed Eliminazione di Tabelle Creazione ed Eliminazione di Tabelle Semantica CREATE TABLE crea una nuova tabella vuota secondo lo schema specificato l utente deve essere autorizzato l utente diventa il proprietario della tabella attenzione ai vincoli di riferimento DROP TABLE elimina una tabella esistente l utente deve essere autorizzato 18

SQL-92 >> Concetti Fondamentali >> Creazione ed Eliminazione di Tabelle 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 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 Corsi ( cod char(3) PRIMARY KEY, titolo varchar(20) NOT NULL, ciclo char(20), docente char(4) REFERENCES Professori(cod) ); 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 Numeri ( professore char(4) REFERENCES Professori(cod), numero char(9), PRIMARY KEY (professore,numero)); 19

SQL-92 >> Concetti Fondamentali >> Inserimenti Istruzione del DML INSERT Sintassi Inserimenti INSERT INTO <tabella> VALUES (<valori>); Semantica inserimento della ennupla nella tabella corrispondenza ordinata tra valori e attributi (notazione posizionale) 20

SQL-92 >> Concetti Fondamentali >> Inserimenti Esempi: Inserimenti 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 ); 21

SQL-92 >> Concetti Fondamentali >> Interrogazioni Istruzione del DML SELECT Interrogazioni sintassi per specificare operatori dell algebra Filosofia parzialmente dichiarativa si specificano gli operatori da applicare, non l ordine in cui devono essere applicati l ottimizzatore sceglie la strategia ottima 22

SQL-92 >> Concetti Fondamentali >> Interrogazioni Interrogazioni Forma standard dell algebra una o più sottointerrogazioni correlate da operatori insiemistici Sottointerrogazioni strategia a: prodotti cartesiani tra le tabelle (con eventuali alias) strategia b: join tra le tabelle (con eventuali alias) >> 23

SQL-92 >> Concetti Fondamentali >> Interrogazioni Interrogazioni Sottointerrogazioni (Continua) selezioni proiezioni (con funzioni aggregative) eliminazione di duplicati (DISTINCT) ridenominazioni ordinamenti finali (ORDER BY) 24

SQL-92 >> Concetti Fondamentali >> Interrogazioni Sottointerrogazione ORDER BY r DISTINCT p s X oppure Interrogazioni U oppure oppure Sottointerrogazione 25

SQL-92 >> Concetti Fondamentali >> Interrogazioni Interrogazioni Interrogazioni SQL una o più sottointerrogazioni correlate da operatori insiemistici Sottointerrogazioni: varie clausole Nucleo della SELECT SELECT: proiezioni, ridenominazioni, distinct FROM: prodotti cartesiani o join, alias [WHERE]: selezioni Clausole aggiuntive [ORDER BY]: ordinamenti 26

SQL-92 >> Concetti Fondamentali >> Interrogazioni Interrogazioni Sottointerrogazione ORDER BY r DISTINCT p s X oppure U oppure oppure Sottointerrogazione Sottointerrogazione SELECT FROM WHERE ORDER BY UNION, INTERSECT, EXCEPT Sottointerrogazione 27

SQL-92 >> Concetti Fondamentali >> Interrogazioni Strategia a FROM R, S, T AS V Clausola FROM Strategia b FROM S JOIN R ON S.A=R.B JOIN T AS V.. Strategia mista FROM S JOIN R ON S.A=R.B, T AS V Semantica applicazione degli operatori corrispondenti 28

SQL-92 >> Concetti Fondamentali >> Interrogazioni Clausola WHERE WHERE <condizione> <condizione> condizioni di selezione, connettivi booleani Esempio WHERE R.A=1 AND S.B>V.C OR V.D IS NOT NULL Semantica selezione corrispondente 29

SQL-92 >> Concetti Fondamentali >> Interrogazioni Clausola SELECT SELECT [DISTINCT] <attributi> * <attributi> lista di nomi di attributo, AS per le ridenom. Esempio SELECT R.A, R.B AS C, V.D oppure SELECT * Semantica proiezioni, distinct e ridenominazioni corrispondenti 30

SQL-92 >> Concetti Fondamentali >> Interrogazioni Clausola ORDER BY ORDER BY <attributi> <attributi> lista di attributi <attributo> {ASC DESC} Esempio ORDER BY R.A, R.B DESC Semantica ordinamenti corrispondenti 31

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

SQL-92 >> Concetti Fondamentali >> Interrogazioni Esempi Cognomi e nomi degli studenti ElencoNomi = DISTINCT (p (Studenti)) cognome, nome SELECT DISTINCT cognome, nome FROM Studenti; 33

SQL-92 >> Concetti Fondamentali >> Interrogazioni Esempi Cognomi e nomi degli studenti, in ordine alfabetico ElencoNomi = ORDER BY cognome, nome ( DISTINCT (p cognome, nome (Studenti))) SELECT DISTINCT cognome, nome FROM Studenti ORDER BY cognome, nome; 34

SQL-92 >> Concetti Fondamentali >> Interrogazioni Esempi Voto medio riportato negli esami Risultato = p AVG(voto) (Esami) SELECT AVG(voto) FROM Esami; 35

SQL-92 >> Concetti Fondamentali >> Interrogazioni Esempi Cognomi, nomi e numeri di telefono dei professori (strategia a) ProfessoriENumeri = p ( cognome, nome, numero s ( cod=professore Professori X Numeri )) SELECT cognome, nome, numero FROM Professori, Numeri WHERE cod=professore; 36

SQL-92 >> Concetti Fondamentali >> Interrogazioni Esempi Cognomi, nomi e numeri di telefono dei professori (strategia b) ProfessoriENumeri = p ( cognome, nome, numero Professori cod=professore Numeri) SELECT cognome, nome, numero FROM Professori JOIN Numeri ON cod=professore; 37

SQL-92 >> Concetti Fondamentali >> Interrogazioni Esempi Matricola e cognome degli studenti che hanno sostenuto l esame di informatica teorica (strategia b) Risultato = p matricola, cognome ( s titolo= Inform. t. ( Studenti matr=studente Esami cod=corso Corsi )) SELECT matricola, cognome FROM Studenti JOIN Esami ON matr=studente JOIN Corsi ON cod=corso WHERE titolo= Inform. t. ; 38

SQL-92 >> Concetti Fondamentali >> Interrogazioni Esempi Cognome e nome delle persone Risultato = r cognome AS cognomepersona, nome AS nomepersona ( p cognome, nome (Professori)) U p cognome, nome (Studenti) SELECT cognome AS cognomepersona, nome AS nomepersona FROM Professori UNION SELECT cognome, nome FROM Studenti; 39

SQL-92 >> Concetti Fondamentali >> Interrogazioni Esempi Cognome e nome dei professori ordinari che non supervisionano tesi triennali Risultato = r cognome AS cognomeprof, nome AS nomeprof ( p cognome, nome ( s qualifica = Ordinario (Professori)) p cognome, nome ( s ciclo = laurea tr. ( Studenti relatore = cod Professori )) 40

SQL-92 >> Concetti Fondamentali >> Interrogazioni Esempi Cognome e nome dei professori ordinari che non supervisionano tesi triennali SELECT cognome AS cognomeprof, nome AS nomeprof FROM Professori WHERE qualifica= ordinario EXCEPT SELECT Relatore.cognome, Relatore.nome FROM Studenti JOIN Professori AS Relatore ON relatore=cod WHERE ciclo= laurea tr. ; 41

SQL-92 >> Concetti Fondamentali >> Interrogazioni Esempi Cognomi e nomi degli studenti che all esame di Programmazione hanno riportato un voto superiore a quello dei loro tutor Tabelle coinvolte Studenti, Esami Tutorato, Esami AS EsamiTutor 42

SQL-92 >> Concetti Fondamentali >> Interrogazioni Esempi Studenti e tutor (continua) Risultato = p cognome, nome ( s Esami.corso= Pr1 AND EsamiTutor.corso= Pr1 AND Esami.voto > EsamiTutor.voto ( Studenti matr=studente Esami matr=tutorato.studente Tutorato Tutorato.tutor=EsamiTutor.studente (Esami AS EsamiTutor))) 43

SQL-92 >> Concetti Fondamentali >> Interrogazioni Esempi Studenti e tutor (continua) 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; 44

SQL-92 >> Concetti Fondamentali >> Interrogazioni Interrogazioni: Metodo di Scrittura Scrivere l interrogazione in algebra relazionale utilizzando la forma standard Tradurre gli operatori nella sintassi di SQL Bisogna scegliere tra strategia a: prodotti cartesiani strategia b: join in generale è più efficiente la seconda 45

SQL-92 >> Concetti Fondamentali >> Cancellazioni Istruzione del DML DELETE Sintassi Cancellazioni DELETE FROM <tabella> [<clausola WHERE>]; <clausola WHERE>: identica alla clausola WHERE di una interrogazione Semantica elimina dalla tabella tutte le ennuple (che soddisfano la condizione) 46

SQL-92 >> Concetti Fondamentali >> Cancellazioni Esempi: Cancellazioni DELETE FROM Numeri; DELETE FROM Studenti WHERE matr=111; DELETE FROM Corsi WHERE ciclo= laurea tr. AND docente= FT ; 47

SQL-92 >> Concetti Fondamentali >> Aggiornamenti Istruzione del DML UPDATE Sintassi Aggiornamenti UPDATE <tabella> SET <attributo>=<espressione> [<clausola WHERE>] Semantica aggiorna il valore dell attributo di tutte le ennuple (che soddisfano la condizione) 48

SQL-92 >> Concetti Fondamentali >> Aggiornamenti Esempi: Aggiornamenti 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 ; 49

SQL-92 >> Sommario Concetti Fondamentali Introduzione Creazione ed eliminazione di bd Creazione ed eliminazione di tabelle Inserimenti di ennuple Interrogazioni clausola SELECT clausola FROM clausola WHERE clausola ORDER BY metodo di scrittura Cancellazioni Aggiornamenti 50

SQL-92 >> Concetti Fondamentali >> La Base di Dati di Esempio 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 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 Corsi ( cod char(3) PRIMARY KEY, titolo varchar(20) NOT NULL, ciclo char(20), docente char(4) REFERENCES Professori(cod) ); 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 Numeri ( professore char(4) REFERENCES Professori(cod), numero char(9), PRIMARY KEY (professore,numero)); 51

SQL-92 >> Concetti Fondamentali >> La Base di Dati di Esempio Corsi T Esami T codice CHAR(3) titolo VARCHAR(20) PK Numeri T corso CHAR(3) studente INTEGER PK, FK PK, FK ciclo CHAR(20) docente CHAR(4) FK numero CHAR(9) docente CHAR(4) PK PK, FK voto INTEGER lode BOOL Professori T cod CHAR(4) PK cognome VARCHAR(20) Studenti T nome VARCHAR(20) matr INTEGER cognome VARCHAR(20) nome VARCHAR(20) PK qualifica CHAR(15) facolta CHAR(10) ciclo CHAR(20) anno INTEGER relatore CHAR(4) FK Tutorato studente INTEGER tutor INTEGER T PK, FK PK, FK 52

SQL-92 >> Concetti Fondamentali >> La Base di Dati di Esempio Professori cod cognome nome qualifica facolta FT Totti Francesco ordinario Ingegneria CV Vieri Christian associato Scienze ADP Del Piero Alessandro supplente null Studenti 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 Corsi cod titolo ciclo docente PR1 Programmazione I laurea tr. FT ASD Algoritmi e Str. Dati laurea tr. CV INFT Informatica Teorica laurea sp. ADP 53

SQL-92 >> Concetti Fondamentali >> La Base di Dati di Esempio Tutorato studente tutor 111 77777 Numeri professore numero FT 0971205145 222 77777 FT 347123456 333 88888 VC 0971205227 444 88888 ADP 0971205363 ADP 338123456 Esami 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 54