SQL-92 Concetti Fondamentali

Slides:



Advertisements
Presentazioni simili
Dipartimento di Ingegneria Idraulica e Ambientale - Universita di Pavia 1 Caduta non guidata di un corpo rettangolare in un serbatoio Velocità e rotazione.
Advertisements

1 MeDeC - Centro Demoscopico Metropolitano Provincia di Bologna - per Valutazione su alcuni servizi erogati nel.
1 Pregnana Milanese Assessorato alle Risorse Economiche Bilancio Preventivo P R O P O S T A.
Structured Query Language
SQL applicato a SQL Server
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità C1 Il linguaggio SQL.
Structured Query Language (SQL) Presentazione 13.1 Informatica Generale (Prof. Luca A. Ludovico)
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
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.
G. Mecca – – Università della Basilicata Basi di Dati SQL-92 Dettagli e Approfondimenti versione 2.0 Questo lavoro è concesso in uso secondo.
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++
Programmazione Procedurale in Linguaggio C++
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,
SQL per la modifica di basi di dati. 29/01/2014SQL per la modifica di basi di dati2 Data Manipulation Language Introduciamo ora il Data Manipulation Language.
Laboratorio di Basi di Dati Introduzione ad Access 2ª Parte.
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
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.
Cos’è un problema?.
G. Mecca – – Università della Basilicata Basi di Dati Sistemi per Basi di Dati Relazionali: Modello Logico Dettagli e Approfondimenti versione.
Equivalenza di espressioni
SQL SQL (pronunciato anche come l’inglese sequel) è l’acronimo di Structured Query Language (linguaggio di interrogazione strutturato) E’ un linguaggio.
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.
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.
ORDINE DI CHIAMATA a 1minuto e 2 minuti PRINCIPALI TEMPI DELLA COMPETIZIONE ORDINE DI CHIAMATA a 1minuto e 2 minuti PRINCIPALI TEMPI DELLA COMPETIZIONE.
TECNOLOGIE DELLINFORMAZIONE E DELLA COMUNICAZIONE PER LE AZIENDE Materiale di supporto alla didattica.
Un trucchetto di Moltiplicazione per il calcolo mentale
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.
Basi di Dati e Sistemi Informativi
Basi di Dati e Sistemi Informativi Il Linguaggio SQL Home page del corso:
SQL.
1 Basi di dati (Sistemi Informativi) Scuola di Dottorato in Scienze Veterinarie per la Salute Animale e la Sicurezza Alimentare a.a Ing. Mauro.
NO WASTE Progetto continuità scuola primaria scuola secondaria Salorno a.s. 2013_
SQL (IV) Data Definition Language/ Data Manipulation Language.
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
© 2015 Giorgio Porcu - Aggiornamennto 28/03/2015 UdA 1A Database Progettazione Fisica G IORGIO P ORCU
Funzionalità del DBMS relazionale l Funzioni per –definizione della base di dati –inserimento / rimozione /aggiornamento di informazioni deve soddisfare.
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.
Esercizi SQL Group by. CREATE TABLE dipendente (codDip CHAR(8) NOT NULL UNIQUE PRIMARY KEY, cognome CHAR(60) NOT NULL, nome CHAR(60) NOT NULL, stipendio.
Transcript della presentazione:

SQL-92 Concetti Fondamentali 27/03/2017 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) G. Mecca – mecca@unibas.it – Università della Basilicata

Concetti Fondamentali 27/03/2017 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 G. Mecca - mecca@unibas.it - Basi di Dati

Introduzione SQL (“Structured Query Language”) 27/03/2017 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) G. Mecca - mecca@unibas.it - Basi di Dati

Storia dello Standard Prime implementazioni Primi prodotti commerciali 27/03/2017 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 G. Mecca - mecca@unibas.it - Basi di Dati

Storia dello Standard SQL-89 (SQL-1) SQL-92 (SQL-2) 27/03/2017 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 G. Mecca - mecca@unibas.it - Basi di Dati

Storia dello Standard Standard collegati SQL/CLI SQL/PSM SQL/OLB 27/03/2017 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 G. Mecca - mecca@unibas.it - Basi di Dati

Storia dello Standard SQL:1999 (SQL-3) Attualmente: 27/03/2017 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:1999, core SQL-92, intermediate SQL-92, entry SQL-89, livello 2 SQL-89, livello 1 G. Mecca - mecca@unibas.it - Basi di Dati

Storia dello Standard Implementazioni dello standard 27/03/2017 SQL-92 >> Concetti Fondamentali >> Introduzione Storia dello Standard Implementazioni dello standard gli standard hanno in alcuni casi inseguito la tecnologia di mercato 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 G. Mecca - mecca@unibas.it - Basi di Dati

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

Le Istruzioni Fondamentali 27/03/2017 SQL-92 >> Concetti Fondamentali >> Introduzione Le Istruzioni Fondamentali DDL creazione della base di dati CREATE DATABASE creazione delle tabelle CREATE TABLE DML inserimento delle ennuple INSERT INTO interrogazioni SELECT eliminazione delle ennuple DELETE modifica della ennuple UPDATE G. Mecca - mecca@unibas.it - Basi di Dati

Creazione ed Eliminazione di BD 27/03/2017 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; G. Mecca - mecca@unibas.it - Basi di Dati

Creazione ed Eliminazione di BD 27/03/2017 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) G. Mecca - mecca@unibas.it - Basi di Dati

Creazione ed Eliminazione di Tabelle 27/03/2017 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>; G. Mecca - mecca@unibas.it - Basi di Dati

Creazione ed Eliminazione di Tabelle 27/03/2017 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; G. Mecca - mecca@unibas.it - Basi di Dati

Creazione ed Eliminazione di Tabelle 27/03/2017 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)); G. Mecca - mecca@unibas.it - Basi di Dati

Creazione ed Eliminazione di Tabelle 27/03/2017 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>] Definizioni di vincoli di tabella normalmente vincoli relativi a più attributi G. Mecca - mecca@unibas.it - Basi di Dati

Creazione ed Eliminazione di Tabelle 27/03/2017 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 G. Mecca - mecca@unibas.it - Basi di Dati

Creazione ed Eliminazione di Tabelle 27/03/2017 SQL-92 >> Concetti Fondamentali >> Creazione ed Eliminazione di Tabelle Creazione ed Eliminazione di Tabelle Vincoli di colonna PRIMARY KEY UNIQUE NOT NULL REFERENCES <chiave della tabella dest.> [ON update CASCADE] [ON delete CASCADE] CHECK (<espressione>) G. Mecca - mecca@unibas.it - Basi di Dati

Creazione ed Eliminazione di Tabelle 27/03/2017 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>) G. Mecca - mecca@unibas.it - Basi di Dati

Creazione ed Eliminazione di Tabelle 27/03/2017 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 G. Mecca - mecca@unibas.it - Basi di Dati

CREATE TABLE Professori ( cod char(4) PRIMARY KEY, 27/03/2017 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 Tutorato ( studente integer REFERENCES Studenti(matr), tutor integer 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 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 Numeri ( professore char(4) REFERENCES Professori(cod), numero char(9), PRIMARY KEY (professore,numero)); G. Mecca - mecca@unibas.it - Basi di Dati

Inserimenti Istruzione del DML Sintassi Semantica INSERT 27/03/2017 SQL-92 >> Concetti Fondamentali >> Inserimenti Inserimenti Istruzione del DML INSERT Sintassi INSERT INTO <tabella> VALUES (<valori>); Semantica inserimento della ennupla nella tabella corrispondenza ordinata tra valori e attributi (notazione posizionale) G. Mecca - mecca@unibas.it - Basi di Dati

27/03/2017 SQL-92 >> Concetti Fondamentali >> Inserimenti Inserimenti 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’); G. Mecca - mecca@unibas.it - Basi di Dati

Interrogazioni Istruzione del DML Filosofia SELECT 27/03/2017 SQL-92 >> Concetti Fondamentali >> Interrogazioni Interrogazioni Istruzione del DML SELECT sintassi concreta 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 G. Mecca - mecca@unibas.it - Basi di Dati

Interrogazioni Tre “clausole” principali (nucleo) SELECT FROM WHERE 27/03/2017 SQL-92 >> Concetti Fondamentali >> Interrogazioni Interrogazioni Tre “clausole” principali (nucleo) SELECT, FROM, WHERE SELECT proiezioni, ridenominazioni, elimin. duplicati FROM tabelle, join, prodotti cartesiani, alias WHERE selezioni G. Mecca - mecca@unibas.it - Basi di Dati

Esempi “Studenti della laurea triennale di anni successivi al primo” s 27/03/2017 SQL-92 >> Concetti Fondamentali >> Interrogazioni Esempi “Studenti della laurea triennale di anni successivi al primo” ciclo=‘laurea tr.’ AND anno>1 s (Studenti) Risultato = SELECT * FROM Studenti WHERE ciclo=‘laurea tr.’ AND anno>1; G. Mecca - mecca@unibas.it - Basi di Dati

27/03/2017 SQL-92 >> Concetti Fondamentali >> Interrogazioni Esempi “Matricola e cognome degli studenti che hanno sostenuto l’esame di informatica teorica” 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.’; G. Mecca - mecca@unibas.it - Basi di Dati

Interrogazioni Per sistematizzare 27/03/2017 SQL-92 >> Concetti Fondamentali >> Interrogazioni Interrogazioni Per sistematizzare partiamo dalla forma standard dell’algebra 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 G. Mecca - mecca@unibas.it - Basi di Dati

Interrogazioni Forma standard dell’algebra Sottointerrogazioni 27/03/2017 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) >> G. Mecca - mecca@unibas.it - Basi di Dati

Interrogazioni Sottointerrogazioni (Continua) selezioni 27/03/2017 SQL-92 >> Concetti Fondamentali >> Interrogazioni Interrogazioni Sottointerrogazioni (Continua) selezioni proiezioni (con funzioni aggregative) eliminazione di duplicati (DISTINCT) ridenominazioni ordinamenti finali (ORDER BY) G. Mecca - mecca@unibas.it - Basi di Dati

Interrogazioni r p s Sottointerrogazione U oppure ∩ oppure – 27/03/2017 SQL-92 >> Concetti Fondamentali >> Interrogazioni Interrogazioni Sottointerrogazione ORDER BY r DISTINCT p s TABELLE, con X oppure ed ev. ALIAS U oppure ∩ oppure – Sottointerrogazione G. Mecca - mecca@unibas.it - Basi di Dati

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

Interrogazioni r p s Sottointerrogazione Sottointerrogazione 27/03/2017 SQL-92 >> Concetti Fondamentali >> Interrogazioni Interrogazioni Sottointerrogazione Sottointerrogazione ORDER BY r SELECT DISTINCT FROM p s WHERE tabelle con X o ORDER BY U oppure ∩ oppure – UNION, INTERSECT, EXCEPT Sottointerrogazione Sottointerrogazione G. Mecca - mecca@unibas.it - Basi di Dati

Esempi “Studenti della laurea triennale di anni successivi al primo” s 27/03/2017 SQL-92 >> Concetti Fondamentali >> Interrogazioni Esempi “Studenti della laurea triennale di anni successivi al primo” ciclo=‘laurea tr.’ AND anno>1 s (Studenti) Risultato = SELECT * FROM Studenti WHERE ciclo=‘laurea tr.’ AND anno>1; NOTA: le clausole vanno scritte nell’ordine in cui compaiono prima SELECT, poi FROM, poi WHERE, poi ORDER BY G. Mecca - mecca@unibas.it - Basi di Dati

27/03/2017 SQL-92 >> Concetti Fondamentali >> Interrogazioni Esempi “Matricola e cognome degli studenti che hanno sostenuto l’esame di informatica teorica” 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.’; G. Mecca - mecca@unibas.it - Basi di Dati

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

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

Clausola WHERE Serve a specificare Sintassi Dove le selezioni 27/03/2017 SQL-92 >> Concetti Fondamentali >> Interrogazioni Clausola WHERE Serve a specificare le selezioni Sintassi WHERE <condizione> Dove <condizione> è una condizione composta di sottocondizioni di selezione, collegate con connettivi booleani (AND, OR, NOT) sintassi identica alle condizioni dell’algebra G. Mecca - mecca@unibas.it - Basi di Dati

Clausola WHERE Nota Esempio Semantica 27/03/2017 SQL-92 >> Concetti Fondamentali >> Interrogazioni Clausola WHERE Nota possono comparire solo attributi di tabelle che compaiono nella clausola FROM Esempio FROM Professori WHERE qualifica=‘ordinario’ AND facolta IS NOT NULL Semantica applica le selezioni alle tabelle della FROM G. Mecca - mecca@unibas.it - Basi di Dati

Clausola SELECT Serve a specificare Nota proiezioni 27/03/2017 SQL-92 >> Concetti Fondamentali >> Interrogazioni Clausola SELECT Serve a specificare proiezioni funzioni aggregative ridenominazioni eliminazione di duplicati Nota anche in questo caso è possibile specificare solo attributi di tabelle che compaiono nella clausola FROM G. Mecca - mecca@unibas.it - Basi di Dati

Clausola SELECT Sintassi Dove Semantica 27/03/2017 SQL-92 >> Concetti Fondamentali >> Interrogazioni Clausola SELECT Sintassi SELECT [DISTINCT] <attributi> Dove <attributi> è una lista di nomi di attributo con eventuali ridenominazioni nella forma <vecchioNome> AS <nuovoNome> Semantica applicare gli operatori corrispondenti alle tabelle della FROM G. Mecca - mecca@unibas.it - Basi di Dati

Clausola SELECT Esempi SELECT cognome, nome FROM Professori 27/03/2017 SQL-92 >> Concetti Fondamentali >> Interrogazioni Clausola SELECT Esempi SELECT cognome, nome FROM Professori SELECT DISTINCT cognome, nome FROM Professori SELECT cognome AS cognomeProf, nome AS nomeProf FROM Professori G. Mecca - mecca@unibas.it - Basi di Dati

Clausola SELECT Nota SELECT * la clausola SELECT è obbligatoria 27/03/2017 SQL-92 >> Concetti Fondamentali >> Interrogazioni Clausola SELECT Nota la clausola SELECT è obbligatoria che succede se non ci sono proiezioni e ridenominazioni ? SELECT * non è necessario effettuare nè proiezioni nè ridenominazioni G. Mecca - mecca@unibas.it - Basi di Dati

Clausola ORDER BY Serve a specificare Sintassi Dove ordinamenti finali 27/03/2017 SQL-92 >> Concetti Fondamentali >> Interrogazioni Clausola ORDER BY Serve a specificare ordinamenti finali Sintassi ORDER BY <attributi> Dove <attributi> è una lista di attributi di tabelle che compaiono nella clausola FROM G. Mecca - mecca@unibas.it - Basi di Dati

Clausola ORDER BY Esempio Normalemente: Ordinamento decrescente: DESC 27/03/2017 SQL-92 >> Concetti Fondamentali >> Interrogazioni Clausola ORDER BY Esempio SELECT * FROM Studenti ORDER BY cognome, annoCorso Normalemente: l’ordinamento è crescente Ordinamento decrescente: DESC ORDER BY cognome, annoCorso DESC G. Mecca - mecca@unibas.it - Basi di Dati

Esempi “Cognomi e nomi degli studenti” DISTINCT (p ElencoNomi = 27/03/2017 SQL-92 >> Concetti Fondamentali >> Interrogazioni Esempi “Cognomi e nomi degli studenti” cognome, nome DISTINCT (p (Studenti)) ElencoNomi = SELECT DISTINCT cognome, nome FROM Studenti; G. Mecca - mecca@unibas.it - Basi di Dati

Esempi “Cognomi e nomi degli studenti, in ordine alfabetico” ORDER BY 27/03/2017 SQL-92 >> Concetti Fondamentali >> Interrogazioni Esempi “Cognomi e nomi degli studenti, in ordine alfabetico” cognome, nome DISTINCT (p (Studenti))) ElencoNomi = ORDER BY ( SELECT DISTINCT cognome, nome FROM Studenti ORDER BY cognome, nome; G. Mecca - mecca@unibas.it - Basi di Dati

Esempi “Voto medio riportato negli esami” 27/03/2017 SQL-92 >> Concetti Fondamentali >> Interrogazioni Esempi “Voto medio riportato negli esami” Risultato = p AVG(voto) (Esami) SELECT AVG(voto) FROM Esami; G. Mecca - mecca@unibas.it - Basi di Dati

27/03/2017 SQL-92 >> Concetti Fondamentali >> Interrogazioni Esempi “Cognomi, nomi e numeri di telefono dei professori” (strategia a) cognome, nome, numero p ( ProfessoriENumeri = cod=professore s Professori X Numeri )) SELECT cognome, nome, numero FROM Professori, Numeri WHERE cod=professore; G. Mecca - mecca@unibas.it - Basi di Dati

27/03/2017 SQL-92 >> Concetti Fondamentali >> Interrogazioni Esempi “Cognomi, nomi e numeri di telefono dei professori” (strategia b) cognome, nome, numero p ( ProfessoriENumeri = Professori cod=professore Numeri) SELECT cognome, nome, numero FROM Professori JOIN Numeri ON cod=professore; G. Mecca - mecca@unibas.it - Basi di Dati

Esempi “Cognome e nome delle persone” pcognome, nome (Professori)) 27/03/2017 SQL-92 >> Concetti Fondamentali >> Interrogazioni Esempi “Cognome e nome delle persone” Risultato = rcognome AS cognomePersona, nome AS nomePersona ( pcognome, nome (Professori)) U pcognome, nome (Studenti) SELECT cognome AS cognomePersona, nome AS nomePersona FROM Professori UNION SELECT cognome, nome FROM Studenti; G. Mecca - mecca@unibas.it - Basi di Dati

27/03/2017 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)) – s ciclo = ‘laurea tr.’ ( Studenti relatore = cod Professori )) G. Mecca - mecca@unibas.it - Basi di Dati

27/03/2017 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 cognome, nome FROM Studenti JOIN Professori ON relatore=cod WHERE ciclo=‘laurea tr.’; G. Mecca - mecca@unibas.it - Basi di Dati

27/03/2017 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 G. Mecca - mecca@unibas.it - Basi di Dati

Esempi “Studenti e tutor” (continua) matr=Tutorato.studente Tutorato 27/03/2017 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 ( Tutorato.tutor=EsamiTutor.studente (Esami AS EsamiTutor))) matr=Tutorato.studente Tutorato Studenti matr=studente Esami G. Mecca - mecca@unibas.it - Basi di Dati

Esempi “Studenti e tutor” (continua) SELECT cognome, nome 27/03/2017 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; G. Mecca - mecca@unibas.it - Basi di Dati

Interrogazioni Nota una interrogazione particolare 27/03/2017 SQL-92 >> Concetti Fondamentali >> Interrogazioni Interrogazioni Nota una interrogazione particolare 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 G. Mecca - mecca@unibas.it - Basi di Dati

Interrogazioni: Metodo di Scrittura 27/03/2017 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 G. Mecca - mecca@unibas.it - Basi di Dati

Cancellazioni Istruzione del DML Sintassi Semantica DELETE 27/03/2017 SQL-92 >> Concetti Fondamentali >> Cancellazioni Cancellazioni Istruzione del DML DELETE Sintassi DELETE FROM <tabella> [<clausola WHERE>]; <clausola WHERE>: identica a quella vista Semantica elimina dalla tabella tutte le ennuple (che soddisfano la condizione se è specificata) G. Mecca - mecca@unibas.it - Basi di Dati

Cancellazioni Esempi: DELETE FROM Numeri; 27/03/2017 SQL-92 >> Concetti Fondamentali >> Cancellazioni Cancellazioni Esempi: DELETE FROM Numeri; DELETE FROM Studenti WHERE matr=111; DELETE FROM Corsi WHERE ciclo=‘laurea tr.’ AND docente=‘FT’; G. Mecca - mecca@unibas.it - Basi di Dati

Aggiornamenti Istruzione del DML Sintassi Semantica UPDATE 27/03/2017 SQL-92 >> Concetti Fondamentali >> Aggiornamenti Aggiornamenti Istruzione del DML UPDATE Sintassi UPDATE <tabella> SET <attributo>=<espressione> [<clausola WHERE>] Semantica aggiorna il valore dell’attributo di tutte le ennuple (che soddisfano la condizione se è specificata) G. Mecca - mecca@unibas.it - Basi di Dati

Aggiornamenti Esempi: UPDATE Studenti SET anno=anno+1; 27/03/2017 SQL-92 >> Concetti Fondamentali >> Aggiornamenti Aggiornamenti 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’; G. Mecca - mecca@unibas.it - Basi di Dati

Concetti Fondamentali 27/03/2017 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 G. Mecca - mecca@unibas.it - Basi di Dati

CREATE TABLE Professori ( cod char(4) PRIMARY KEY, 27/03/2017 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 Tutorato ( studente integer REFERENCES Studenti(matr), tutor integer 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 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 Numeri ( professore char(4) REFERENCES Professori(cod), numero char(9), PRIMARY KEY (professore,numero)); G. Mecca - mecca@unibas.it - Basi di Dati

SQL-92 >> Concetti Fondamentali >> La Base di Dati di Esempio 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 Esami T corso CHAR(3) PK, FK studente INTEGER voto INTEGER lode BOOL Professori T cod CHAR(4) PK cognome VARCHAR(20) nome VARCHAR(20) qualifica CHAR(15) facolta CHAR(10) Studenti T matr INTEGER PK cognome VARCHAR(20) nome VARCHAR(20) ciclo CHAR(20) anno INTEGER relatore CHAR(4) FK Tutorato T studente INTEGER PK, FK tutor INTEGER G. Mecca - mecca@unibas.it - Basi di Dati

Professori Studenti Corsi 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 2 333 Maria 444 Pinco Palla 3 FT 77777 Bruno Pasquale laurea sp. 88888 Pietro CV Corsi cod titolo ciclo docente PR1 Programmazione I laurea tr. FT ASD Algoritmi e Str. Dati CV INFT Informatica Teorica laurea sp. ADP G. Mecca - mecca@unibas.it - Basi di Dati

SQL-92 >> Concetti Fondamentali >> La Base di Dati di Esempio Tutorato studente tutor 111 77777 222 333 88888 444 Numeri professore numero FT 0971205145 347123456 VC 0971205227 ADP 0971205363 338123456 Esami studente corso voto lode 111 PR1 27 false 222 ASD 30 true INFT 24 77777 21 20 88888 28 G. 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. G. Mecca - mecca@unibas.it - Basi di Dati