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

Documenti analoghi
Basi di dati. SQL: concetti base

SQL: concetti base SQL. Definizione dei dati in SQL. SQL: "storia"

SQL. Definizione dei da6 in SQL. SQL: "storia" CREATE TABLE: esempio. CREATE TABLE: esempio

Basi di Dati. 3. Il Linguaggio SQL. Basi di Dati - A.A. 2003/ Diego Calvanese 3. SQL - 1. Diego Calvanese SQL SQL-92

Capitolo 4: SQL (Slides( da Atzeni,, Ceri, Paraboschi, Torlonee,, Basi di dati McGraw-Hill. Hill,, 2002)

1.3 Il linguaggio SQL

Esempio di database relazionale con l utilizzo del prodotto MySQL

Basi di Dati. Programmazione e gestione di sistemi telematici

Basi di dati Maurizio Lenzerini Dipartimento di Informatica e Sistemistica Antonio Ruberti Università di Roma La Sapienza

Il sistema informativo deve essere di tipo centralizzato e accessibile mediante un computer server installato nella rete locale dell albergo.

Interrogazioni complesse. SQL avanzato 1

SQL. Structured Query Language 1974: SEQUEL by IBM 1981: SQL by IBM : SQL ISO 9075:1992 SQL:1999 SQL:2003

SQL e ACCESS. Modello relazionale PROBLEMA ENTITA STUDENTE

SQL (STRUCTURED QUERY LANGUAGE)

Corso di Laboratorio di Basi di Dati

Esercitazione query in SQL L esercitazione viene effettuata sul database viaggi e vacanze che prevede il seguente modello E/R:

Corso di Laurea in Ingegneria Informatica Algoritmi e basi di dati Modulo Basi di dati a.a

Istruzioni DML di SQL

Linguaggio SQL. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Esercitazione: Il DBMS MySQL

Storia. Corso di Basi di Dati Spaziali. Componente DDL. Funzionalità. Esempio. Creazione di schema. Linguaggi: SQL. Storia:

DATABASE PER IL WEB. Programmazione Web 1

2011 Politecnico di Torino 1

Informatica. Sintassi. Interrogazioni in SQL. Significato dell interrogazione. Tabella Impiegato. Basi di dati parte 4 SQL

MAX, SUM, AVG, COUNT)

SQL (STRUCTURED QUERY LANGUAGE)

CAPITOLO 4 ESERCIZI SU SQL

Basi di dati. SQL :Structured Query Language: SELECT (II) Prof.ssa Rosalba Giugno. SQL (Slide tratte in parte da. McGraw-Hill.

OR true null false true true true true null true null null false true null false NOT

PROGRAMMA DI CLASSE 5AI

SQL IL LINGUAGGIO DI INTERROGAZIONE

Basi di dati. Il Linguaggio SQL. K. Donno - Il Linguaggio SQL

Definizione di domini

Join in SQL (primo modo) Informatica. Tabella Dipartimento. Interrogazione 4a. Interrogazione 4b. Interrogazione 4a

Il linguaggio SQL: le basi

Esercizio 4.1. Soluzione:

Prova Scritta di Basi di Dati

SQL come linguaggio di interrogazione. Basi di dati. Interrogazioni SQL. Interpretazione algebrica delle query SQL

Documentazione SQL. Argomento Sintassi Note Definizione schema create schema [NomeSchema] [[authorization] Autorizzazione] {DefElementoSchema}

SQL Sintassi Dei Comandi

********************* MODIFICA STRUTTURA DI UNA TABELLA (inserimento di un nuovo campo) ALTER TABLE Personale ADD Nascita date;

Il Domino Character Il domino CHARACTER permette di definire attributi che contengono un singolo carattere o stringhe di caratteri di lunghezza

Data Base. Master "Bio Info" Reti e Basi di Dati Lezione 6

Structured Query Language. Informatica Generale - SQL Versione 1.0, aa p.1/172

Il linguaggio SQL. è di fatto lo standard tra i linguaggi per la gestione di data base relazionali.

Il linguaggio SQL: query innestate

Basi di Dati Corso di Laura in Informatica Umanistica

Basi di Dati e Sistemi Informativi. SQL come linguaggio di manipolazione dei dati


S.Q.L. Introduzione a Structured Query Language. I.T.C. "V.Emanuele II" - Perugia. Prof.Claudio Maccherani INDICE

SQL - Funzioni di gruppo

Esercitazione su SQL

Le basi di dati. Base di dati. Modelli, schemi ed istanze DBMS. Architettura ANSI/SPARC: schemi

Il linguaggio SQL: viste e tabelle derivate. Versione elettronica: SQLd-viste.pdf

Il linguaggio SQL. Evoluzione del linguaggio. I linguaggi dentro SQL. I dialeu SQL. U@lizzo di SQL SQL. A. Ferrari 1

Domini Numerici Esatti (1) I domini numerici esatti permettono di definire attributi che contenegono valori esatti interi o con parte frazionaria.

Il linguaggio SQL: le basi. Versione elettronica: SQLa-basi.pdf

Basi di Dati - V. Il linguaggio SQL. Il linguaggio SQL. Il linguaggio SQL (cont.) Corso di Laurea in Informatica Anno Accademico 2013/2014

Il linguaggio SQL: viste e tabelle derivate

DDL DML. Tipi di linguaggi per basi di dati. Si distinguono due categorie:

Data base relazionale ed SQL. Modello relazionale dei data base e il linguaggio standard per la loro gestione

Capitolo 4. Soluzione: Soluzione: Create domain STRING as character varying (256) default sconosciuto not null

Linguaggio SQL. Structured Query Language

Domini elementari in SQL

SQL: definizione schema

INTRODUZIONE AD SQL (CAPITOLO 4) R. Basili a.a

Azioni. Select e join non consentono di modificare il contenuto del DB. Inserzione di nuovi dati. Azioni desiderate. Aggiornamento di dati

Il linguaggio SQL. Massimo Paolucci DIST Università di Genova. SQL: Structured Query Language

Create la tabella Dipendenti:

Data Management Software. Il linguaggio SQL. Raggruppamenti. Paolo Avallone Sr Consulting IT Specialist DB2, Data Management Marzo 2004

Utilizzando Microsoft Access. Si crea la tabella Anagrafica degli alunni,le Materie e i voti si mettono alcuni campi

SQL -DDL. FONDISTA(Nome, Nazione, Età) GAREGGIA(NomeFondista, NomeGara, Piazzamento) GARA(Nome, Luogo, Nazione, Lunghezza)

Modello concettuale dei dati. Paolo Brunasti - UniMiB 1 / 12

Interrogazioni nidificate, commenti

DBMS (Data Base Management System)

Metodi per la Gestione dei Dati (lezioni di laboratorio)

Corso Sistemi Informativi Avanzati. Programma 30 set Installazione Macchina Virtuale. Introduzione alla BI nelle Aziende.

ISTITUTO DI ISTRUZIONE SUPERIORE Cigna Baruffi Garelli

DUE GRUPPI DI COMANDI

UTENTE (Codice, Nome, Cognome, Indirizzo, Telefono) PRESTITO (Collocazione, CodUtente, DataPrestito, DataRest)

SQL. Linguaggio di interrogazione per basi di dati relazionali. Relazione = tabella con attributi (a 1, a 2,, a n ): Funzionalità principali di SQL:

a.a. 2012/13 12 Novembre 2012 Preparazione al Test in itinere, Compito A 1. Modellare tramite uno schema entità- relazione la seguente base di dati:

Esprimere in algebra (ottimizzata), calcolo relazionale la seguente query:

MEZZI CodM Tipo Targa AnnoI Assicurato

Richiami sul linguaggio SQL

Lezione 8. Metadati, Viste e Trigger

Esercitazione SQL. Università degli Studi del Sannio Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica

Laboratorio di Basi di Dati

Laboratorio di Basi di Dati e Web

Basi di dati Il linguaggio SQL

Basi di dati Il linguaggio SQL

Tool. Basi di Dati e Sistemi Informativi Prof. Marco Di Felice Dott.sa Sara Zuppiroli A.A

User Tools: DataBase Manager

ESEMPI DI QUERY SQL. Esempi di Query SQL Michele Batocchi AS 2012/2013 Pagina 1 di 7

CAPITOLO 5: DATABASE INTRODUZIONE

Il linguaggio SQL e Access

Basi di Dati: Corso di laboratorio

Esercizi SQL. Dato il seguente schema di una base di dati dove gli attributi che compongono la chiave sono scritti in grassetto

Il linguaggio SQL. ing. Alfredo Cozzi 1

Utilizzando Microsoft Access. Si crea la tabella Anagrafica degli alunni,le Materie e i voti si mettono alcuni campi

Transcript:

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

Esercitazioni pratiche Per SQL è possibile (e fondamentale) svolgere esercitazioni pratiche Verranno anche richieste copme condizione per svolgere le prove parziali Soprattutto sono utilissime Si può utilizzare qualunque DBMS IBM DB2, Microsoft SQL Server, Oracle, PostgresSQL,... A lezione utilizziamo PostgresSQL 24/10-7/11/2016 Basi di dati - SQL 2

CREATE TABLE, esempi CREATE TABLE corsi( codice numeric NOT NULL PRIMARY KEY, titolo character(20) NOT NULL, cfu numeric NOT NULL) CREATE TABLE esami( corso numeric REFERENCES corsi (codice), studente numeric REFERENCES studenti (matricola), data date NOT NULL, voto numeric NOT NULL, PRIMARY KEY (corso, studente)) La chiave primaria viene definita come NOT NULL anche se non lo specifichiamo (in Postgres) 24/10-7/11/2016 Basi di dati - SQL 3

DDL, in pratica In molti sistemi si utilizzano strumenti diversi dal codice SQL per definire lo schema della base di dati Vediamo (per un esempio su cui lavoreremo) 24/10-7/11/2016 Basi di dati - SQL 4

SQL, operazioni sui dati interrogazione: SELECT modifica: INSERT, DELETE, UPDATE 24/10-7/11/2016 Basi di dati - SQL 5

Inserimento (necessario per gli esercizi) INSERT INTO Tabella [ ( Attributi ) ] VALUES( Valori ) oppure INSERT INTO Tabella [ ( Attributi )] SELECT... (vedremo più avanti) 24/10-7/11/2016 Basi di dati - SQL 6

INSERT INTO Persone VALUES ('Mario',25,52) INSERT INTO Persone(Nome, Reddito, Eta) VALUES('Pino,52,23) INSERT INTO Persone(Nome, Reddito) VALUES('Lino',55) 24/10-7/11/2016 Basi di dati - SQL 7

Maternità Paternità Madre Luisa Luisa Anna Anna Maria Maria Padre Sergio Luigi Luigi Franco Franco Figlio Maria Luigi Olga Filippo Andrea Aldo Figlio Franco Olga Filippo Andrea Aldo Persone Nome Età Andrea 27 Aldo 25 Maria 55 Anna 50 Filippo 26 Luigi 50 Franco 60 Olga 30 Sergio 85 Luisa 75 Reddito 21 15 42 35 30 40 20 41 35 87 24/10-7/11/2016 Basi di dati - SQL 8

Esercizi Definire la base di dati per gli esercizi installare un sistema creare lo schema creare le relazioni (CREATE TABLE) inserire i dati eseguire le interrogazioni suggerimento, usare schemi diversi set search_path to <nome schema> 24/10-7/11/2016 Basi di dati - SQL 9

create table persone ( nome char (10) not null primary key, eta numeric not null, reddito numeric not null); create table paternita ( padre char (10) not null, figlio char (10) not null primary key);... insert into Persone values('andrea',27,21);... insert into Paternita values('sergio','franco');... 24/10-7/11/2016 Basi di dati - SQL 10

Istruzione SELECT (versione base) SELECT ListaAttributi FROM ListaTabelle [ WHERE Condizione ] "target list" clausola FROM clausola WHERE 24/10-7/11/2016 Basi di dati - SQL 11

Intuitivamente SELECT ListaAttributi FROM ListaTabelle [ WHERE Condizione ] Prodotto cartesiano di ListaTabelle Selezione su Condizione Proiezione su ListaAttributi 24/10-7/11/2016 Basi di dati - SQL 12

Selezione e proiezione Nome e reddito delle persone con meno di trenta anni PROJ Nome, Reddito (SEL Eta<30 (Persone)) select nome, reddito from persone where eta < 30 24/10-7/11/2016 Basi di dati - SQL 13

Selezione, senza proiezione Nome, età e reddito delle persone con meno di trenta anni SEL Eta<30 (Persone) select * from persone where eta < 30 24/10-7/11/2016 Basi di dati - SQL 14

Proiezione, senza selezione Nome e reddito di tutte le persone PROJ Nome, Reddito (Persone) select nome, reddito from persone 24/10-7/11/2016 Basi di dati - SQL 15

Proiezione, con ridenominazione Nome e reddito di tutte le persone REN Anni çeta (PROJ Nome, Eta (Persone)) select nome, eta as anni from persone 24/10-7/11/2016 Basi di dati - SQL 16

Proiezione, attenzione select madre from maternita select distinct madre from maternita 24/10-7/11/2016 Basi di dati - SQL 17

Condizione complessa select * from persone where reddito > 25 and (eta < 30 or eta > 60) 24/10-7/11/2016 Basi di dati - SQL 18

Maternità Paternità Madre Luisa Luisa Anna Anna Maria Maria Padre Sergio Luigi Luigi Franco Franco Figlio Maria Luigi Olga Filippo Andrea Aldo Figlio Franco Olga Filippo Andrea Aldo Persone Nome Età Andrea 27 Aldo 25 Maria 55 Anna 50 Filippo 26 Luigi 50 Franco 60 Olga 30 Sergio 85 Luisa 75 Reddito 21 15 42 35 30 40 20 41 35 87 24/10-7/11/2016 Basi di dati - SQL 19

Selezione, proiezione e join I padri di persone che guadagnano più di 20 PROJ Padre (paternita JOIN Figlio =Nome SEL Reddito>20 (persone)) select distinct padre from persone, paternita where figlio = nome and reddito > 20 24/10-7/11/2016 Basi di dati - SQL 20

Le persone che guadagnano più dei rispettivi padri; mostrare nome, reddito e reddito del padre PROJ Nome, Reddito, RP (SEL Reddito>RP (REN NP,EP,RP ß Nome,Eta,Reddito (persone) JOIN NP=Padre (paternita JOIN Figlio =Nome persone))) select f.nome, f.reddito, p.reddito from persone p, paternita, persone f where p.nome = padre and figlio = f.nome and f.reddito > p.reddito 24/10-7/11/2016 Basi di dati - SQL 21

SELECT, con ridenominazione del risultato select figlio, f.reddito as reddito, p.reddito as redditopadre from persone p, paternita, persone f where p.nome = padre and figlio = f.nome and f.reddito > p.reddito 24/10-7/11/2016 Basi di dati - SQL 22

Join esplicito Padre e madre di ogni persona select paternita.figlio,padre, madre from maternita, paternita where paternita.figlio = maternita.figlio select madre, paternita.figlio, padre from maternita join paternita on paternita.figlio = maternita.figlio 24/10-7/11/2016 Basi di dati - SQL 23

Le persone che guadagnano più dei rispettivi padri; mostrare nome, reddito e reddito del padre select f.nome, f.reddito, p.reddito from persone p, paternita, persone f where p.nome = padre and figlio = f.nome and f.reddito > p.reddito select f.nome, f.reddito, p.reddito from (persone p join paternita on p.nome = padre) join persone f on figlio = f.nome where f.reddito > p.reddito 24/10-7/11/2016 Basi di dati - SQL 24

Join esterno: "outer join" Padre e, se nota, madre di ogni persona select paternita.figlio, padre, madre from paternita left join maternita on paternita.figlio = maternita.figlio select paternita.figlio, padre, madre from paternita left outer join maternita on paternita.figlio = maternita.figlio outer e' opzionale 24/10-7/11/2016 Basi di dati - SQL 25

Ordinamento del risultato Nome e reddito delle persone con meno di trenta anni in ordine alfabetico select nome, reddito from persone where eta < 30 order by nome 24/10-7/11/2016 Basi di dati - SQL 26

Espressioni nella target list select Nome, Reddito/12 as redditomensile from Persone 24/10-7/11/2016 Basi di dati - SQL 27

Condizione LIKE Le persone che hanno un nome che inizia per 'A' e ha una 'd' come terza lettera select * from persone where nome like 'A_d%' 24/10-7/11/2016 Basi di dati - SQL 28

Gestione dei valori nulli Impiegati Matricola Cognome Filiale Età 7309 5998 Rossi Neri Milano Roma 32 45 5998 9553 Bruni Neri Milano NULL 45 9553 Bruni Milano NULL Gli impiegati la cui età è o potrebbe essere maggiore di 40 SEL (Età > 40) OR (Età IS NULL) (Impiegati) 24/10-7/11/2016 Basi di dati - SQL 29

Unione select A, B from R union select A, B from S select A, B from R union all select A, B from S 24/10-7/11/2016 Basi di dati - SQL 30

Notazione posizionale! select padre, figlio from paternita union select madre, figlio from maternita 24/10-7/11/2016 Basi di dati - SQL 31

Sergio Luigi Luigi Franco Franco Luisa Luisa Anna Anna Maria Maria Figlio Franco Olga Filippo Andrea Aldo Maria Luigi Olga Filippo Andrea Aldo Padre Sergio Luigi Luigi Franco Franco Luisa Luisa Anna Anna Maria Maria Figlio Franco Olga Filippo Andrea Aldo Maria Luigi Olga Filippo Andrea Aldo 24/10-7/11/2016 Basi di dati - SQL 32

Notazione posizionale, 2 select padre, figlio from paternita union select figlio, madre from maternita NO! select padre, figlio from paternita union select madre, figlio from maternita OK 24/10-7/11/2016 Basi di dati - SQL 33

Notazione posizionale, 3 Anche con le ridenominazioni non cambia niente: select padre as genitore, figlio from paternita union select figlio, madre as genitore from maternita Corretta: select padre as genitore, figlio from paternita union select madre as genitore, figlio from maternita 24/10-7/11/2016 Basi di dati - SQL 34

Differenza select Nome from Impiegato except select Cognome as Nome from Impiegato 24/10-7/11/2016 Basi di dati - SQL 35

Intersezione select Nome from Impiegato intersect select Cognome as Nome from Impiegato 24/10-7/11/2016 Basi di dati - SQL 36

Operatori aggregati: COUNT Il numero di figli di Franco select count(*) as NumFigliDiFranco from Paternita where Padre = 'Franco' 24/10-7/11/2016 Basi di dati - SQL 37

COUNT DISTINCT select count(*) from persone select count(reddito) from persone select count(distinct reddito) from persone 24/10-7/11/2016 Basi di dati - SQL 38

Altri operatori aggregati SUM, AVG, MAX, MIN Media dei redditi dei figli di Franco select avg(reddito) from persone join paternita on nome=figlio where padre='franco' 24/10-7/11/2016 Basi di dati - SQL 39

Operatori aggregati e valori nulli select avg(reddito) as redditomedio from persone 24/10-7/11/2016 Basi di dati - SQL 40

Operatori aggregati e target list un interrogazione scorretta: select nome, max(reddito) from persone di chi sarebbe il nome? La target list deve essere omogenea select min(eta), avg(reddito) from persone 24/10-7/11/2016 Basi di dati - SQL 41

Operatori aggregati e raggruppamenti Il numero di figli di ciascun padre select Padre, count(*) AS NumFigli from paternita group by Padre 24/10-7/11/2016 Basi di dati - SQL 42

Condizioni sui gruppi I padri i cui figli hanno un reddito medio maggiore di 25; mostrare padre e reddito medio dei figli select padre, avg(f.reddito) from persone f join paternita on figlio = nome group by padre having avg(f.reddito) > 25 24/10-7/11/2016 Basi di dati - SQL 43

Operatori aggregati e target list un interrogazione scorretta: select nome, max(reddito) from persone di chi sarebbe il nome? La target list deve essere omogenea select min(eta), avg(reddito) from persone 24/10-7/11/2016 Basi di dati - SQL 44

Viste CREATE VIEW AS SELECT anche (non in tutti i sistemi) CREATE VIEW AS SELECT UNION SELECT Vedere esempi svolti il 1/11/2016 24/10-7/11/2016 Basi di dati - SQL 45

Interrogazioni nidificate (nested query o subquery) Varie forme di nidificazione nella WHERE nella FROM nella SELECT Coerente con i tipi anche Booleano (EXISTS) 24/10-7/11/2016 Basi di dati - SQL 46

Nella FROM (sulla base di dati usata negli esercizi del 31/10) Per ogni materia, lo studente che ha preso il voto più basso 24/10-7/11/2016 Basi di dati - SQL 47

Nella FROM Per ogni materia, lo studente che ha preso il voto più basso select e.* from esami e, (select materia, min(voto) as votomin from esami group by materia) m where e.voto = m.votomin and e.materia = m.materia 24/10-7/11/2016 Basi di dati - SQL 48

Più complessa (per curiosità, non la scriverei mai così): La materia con il voto medio più alto 24/10-7/11/2016 Basi di dati - SQL 49

select materia, votomedio as votomediomax from (select materia, avg(voto) as votomedio from esami group by materia) as votimedi, (select max(votomedio) as mediamax from (select materia, avg(voto) as votomedio from esami group by materia) as votimedi) as votomediomax where votomedio = mediamax 24/10-7/11/2016 Basi di dati - SQL 50

Nella WHERE 24/10-7/11/2016 Basi di dati - SQL 51

In assoluto, l'esame con il voto più basso select e.* from esami e where e.voto = (select min(voto) from esami) 24/10-7/11/2016 Basi di dati - SQL 52

Correlated subquery Per ogni materia, lo studente che ha preso il voto più basso select e.* from esami e where e.voto = (select min(voto) from esami where materia = e.materia) L'interrogazione interna viene eseguita una volta per ciascuna ennupla della FROM esterna 24/10-7/11/2016 Basi di dati - SQL 53

Altre nidificazioni nella FROM 24/10-7/11/2016 Basi di dati - SQL 54

nome e reddito del padre di Franco select Nome, Reddito from Persone, Paternita where Nome = Padre and Figlio = 'Franco' select Nome, Reddito from Persone where Nome = ( select Padre from Paternita where Figlio = 'Franco') 24/10-7/11/2016 Basi di dati - SQL 55

Nome e reddito dei padri di persone che guadagnano più di 20 select distinct P.Nome, P.Reddito from Persone P, Paternita, Persone F where P.Nome = Padre and Figlio = F.Nome and F.Reddito > 20 select Nome, Reddito from Persone where Nome in (select Padre from Paternita where Figlio = any (select Nome from Persone where Reddito > 20)) notare la distinct 24/10-7/11/2016 Basi di dati - SQL 56

In questo caso la nidificazione non aiuta molto 24/10-7/11/2016 Basi di dati - SQL 57

Nome e reddito dei padri di persone che guadagnano più di 20 select distinct P.Nome, P.Reddito from Persone P, Paternita, Persone F where P.Nome = Padre and Figlio = F.Nome and F.Reddito > 20 select Nome, Reddito from Persone where Nome in (select Padre from Paternita, Persone where Figlio = Nome and Reddito > 20) 24/10-7/11/2016 Basi di dati - SQL 58

Nome e reddito dei padri di persone che guadagnano più di 20, con indicazione del reddito del figlio select distinct P.Nome, P.Reddito, F.Reddito from Persone P, Paternita, Persone F where P.Nome = Padre and Figlio = F.Nome and F.Reddito > 20 select Nome, Reddito,???? from Persone where Nome in (select Padre from Paternita where Figlio = any (select Nome from Persone where Reddito > 20)) 24/10-7/11/2016 Basi di dati - SQL 59

EXISTS Quantificatore esistenziale Correlazione fra la sottointerrogazione e le variabili nel resto 24/10-7/11/2016 Basi di dati - SQL 60

Le persone che hanno almeno un figlio select * from Persone where exists ( select * from Paternita where Padre = Nome) or exists ( select * from Maternita where Madre = Nome) 24/10-7/11/2016 Basi di dati - SQL 61

I padri i cui figli guadagnano tutti più di 20 select distinct Padre from Paternita Z where not exists ( select * from Paternita W, Persone where W.Padre = Z.Padre and W.Figlio = Nome and Reddito <= 20) 24/10-7/11/2016 Basi di dati - SQL 62

I padri i cui figli guadagnano tutti più di 20 select distinct Padre from Paternita where not exists ( select * from Persone where Figlio = Nome and Reddito <= 20) NO!!! provare ad eseguire per vedere la differenza 24/10-7/11/2016 Basi di dati - SQL 63

I padri i cui figli guadagnano tutti più di 20 select distinct Padre from Paternita where not exists ( select * from Persone where Reddito <= 20) NO!!! provare anche questa 24/10-7/11/2016 Basi di dati - SQL 64

Nella SELECT Calcolo di valori con la nidifcazione Per ogni esame tutti i dati e il voto medio in quell'esame (correlazione) 24/10-7/11/2016 Basi di dati - SQL 65

select e.*, (select avg(voto) from esami where materia = e.materia) as votomedio from esami e 24/10-7/11/2016 Basi di dati - SQL 66

Operazioni di aggiornamento 24/10-7/11/2016 Basi di dati - SQL 69

INSERT INTO Persone VALUES ('Mario',25,52) INSERT INTO Persone(Nome, Reddito, Eta) VALUES('Pino,52,23) INSERT INTO Persone(Nome, Reddito) VALUES('Lino',55) INSERT INTO Persone ( Nome ) SELECT Padre FROM Paternita WHERE Padre NOT IN (SELECT Nome FROM Persone) 24/10-7/11/2016 Basi di dati - SQL 70

Eliminazione di ennuple DELETE FROM Tabella [ WHERE Condizione ] 24/10-7/11/2016 Basi di dati - SQL 71

DELETE FROM Persone WHERE Eta < 35 DELETE FROM Paternita WHERE Figlio NOT in ( SELECT Nome FROM Persone) DELETE FROM Paternita 24/10-7/11/2016 Basi di dati - SQL 72

Modifica di ennuple UPDATE NomeTabella SET Attributo = < Espressione SELECT NULL DEFAULT > [ WHERE Condizione ] 24/10-7/11/2016 Basi di dati - SQL 73

UPDATE Persone SET Reddito = 45 WHERE Nome = 'Piero' UPDATE Persone SET Reddito = Reddito * 1.1 WHERE Eta < 30 24/10-7/11/2016 Basi di dati - SQL 74