Interrogazioni nidificate

Похожие документы
Interrogazioni nidificate

Basi di dati I Prova di autovalutazione 30 ottobre 2014

Basi di dati 8 settembre 2015 Esame Compito A Tempo a disposizione: due ore. Libri chiusi.

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

Alessandra Raffaetà. Esercizio: Cinema

Basi di dati: appello 14/07/06

SQL - Structured Query Language

ESERCITAZIONE 4 Giovedì 13 novembre 2014 (3 ore) SQL

ESERCIZI SQL. Esercizio 1

Basi di Dati: Corso di laboratorio

Basi di dati: appello 07/02/06

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

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

ESERCITAZIONI ACCESS

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

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

Basi di dati I 8 luglio 2016 Esame Compito A Tempo a disposizione: un ora e trenta minuti.

Elena Baralis 2007 Politecnico di Torino 1

Basi di dati: appello 04/07/06

SELECT FROM ORDER BY SELECT FROM ORDER BY DESC DESC SELECT FROM ORDER BY DESC DESC SELECT FROM WHERE SELECT FROM WHERE AND SELECT FROM WHERE AND

Caratteristiche dei linguaggi per Database

SQL - Sottointerrogazioni

SQL: DDL, VI, Aggiornamenti e Viste

PROGETTAZIONE DI DATABASE Linguaggio SQL

CREATE TABLE Nome ( Attributo Tipo [Vincolo {, Vincolo }] {, Attributo Tipo [Vincolo {, Vincolo }]} [, VincoloDiTabella {, VincoloDiTabella}] )

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

Basi di Dati: Corso di laboratorio

Dichiarazione degli schemi in SQL DDL 1

SQL: Structured Query Language. T. Catarci, M. Scannapieco, Corso di Basi di Dati, A.A. 2008/2009, Sapienza Università di Roma

SQL e algebra relazionale

Interrogazioni in SQL

ed SQL 10 Novembre 2009

Basi di dati attive. Paolo Atzeni Stefano Ceri. Basi di dati attive

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

Esercitazione 3 SQL 2

SQL Laboratorio di Basi di Dati a.a. 2002/2003

Basi di Dati Corso di Laura in Informatica Umanistica

Esempio di database relazionale con l utilizzo del prodotto MySQL

ESAME di INFORMATICA e ARCHIVIAZIONE

Prova del 14/09/09. Considerare la seguente descrizione di un campeggio:

Linguaggio SQL seconda parte

LABORATORIO di INFORMATICA

Basi di dati: appello 28/02/06

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

Laboratorio di Basi di Dati Esercizio 8.4/9.1

<Nome Tabella>.<attributo>

SQL Avanzato. Interrogazioni e il valore NULL. Interrogazioni complesse, trigger, viste e modifiche dello schema. Giorgio Giacinto 2015

Concettuale. Giuseppe Amato

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

Esercizio 5.1. Soluzione:

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:

SQL e ACCESS. Modello relazionale PROBLEMA ENTITA STUDENTE

CAPITOLO 4 ESERCIZI SU SQL

OBIETTIVI DELL'ESERCITAZIONE

Silvia Chiusano, Paolo Garza 1

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

Il linguaggio SQL: query innestate

Basi di dati: appello 08/03/06

Basi di dati I 19 settembre 2016 Tempo a disposizione: un ora e 45 minuti.

B a s i d i D a t i ( M o d u l o T e o r i a ) P r o v a s c r i t t a

Il linguaggio SQL: autorizzazioni

Basi di Dati. S Q L Lezione 4

Definizione di domini

RELAZIONI E BASI DI DATI

SQL (STRUCTURED QUERY LANGUAGE)

Informatica per le Scienze Umane. Introduzione al corso: programma dettagliato

BASI DATI: algebra relazionale

SQL e linguaggi di programmazione. Cursori. Cursori. L interazione con l ambiente SQL può avvenire in 3 modi:

Basi di dati (3) Docente: Andrea Bulgarelli. Università di Modena e Reggio Emilia. Argomento: DML (1.

Microsoft Access (parte 5) Query. Query. Query. Query. Creare una query

Basi di dati: appello 21/09/12

SQL [2] Concetti avanzati di SQL. Esempi di interrogazioni

Fondamenti di Teoria delle Basi di Dati

Транскрипт:

Interrogazioni nidificate Trovare nome, cognome e matricola degli studenti che non hanno fatto esami select Matricola,Nome,Cognome from studenti where matricola <> all (select studente group by studente) diversa da tutte (si può usare anche not in) Matricole degli studenti che hanno fatto almeno un esame Lorenzo Sarti 2009 Basi di Dati 1 Un altra interrogazione Trovare il nome degli studenti che hanno fatto almeno 3 esami select Nome from studenti where matricola = any (select studente group by studente having count(*)>=3) uguale ad almeno una (si può usare anche in) Matricole degli studenti che hanno fatto almeno 3 esami Lorenzo Sarti 2009 Basi di Dati 2

Interrogazioni nidificate semplici e complesse - 1 Studenti Matricola Cognome Nome Data di nascita A80198760 Bianchi Anna 22/03/1967 A80293450 Rossi Andrea 13/04/1968 A80295640 Felici Lorenzo 25/02/1969 Esami Studente Voto Corso A80198760 28 Analisi I A80293450 30 Basi di Dati A80295640 27 Analisi I A80198760 30L Fisica I A80293450 21 Chimica Lorenzo Sarti 2009 Basi di Dati 3 Interrogazioni nidificate semplici e complesse - 2 Nei casi più complessi la sottointerrogazione deve essere eseguita una volta per ogni riga dell interrogazione principale select Cognome from studenti where matricola = any (select studente where voto=30) select Matricola from studenti where matricola = any (select studente where voto=day( data di nascita )) Lorenzo Sarti 2009 Basi di Dati 4

Interrogazioni equivalenti Alcune interrogazioni possono essere espresse in diverse forme L utente sceglie la forma più leggibile, il DBMS tenta di eseguire la forma più efficiente Due interrogazioni equivalenti select Matricola from studenti where matricola = any (select studente where voto=30) select Matricola from studenti, esami where matricola = studente and voto=30 Lorenzo Sarti 2009 Basi di Dati 5 Operatori su insiemi Cognomi e nomi di studenti che hanno sostenuto almeno un esame select cognomi as nomeoppurecognome from studenti union select nome as nomeoppurecognome from studenti Lorenzo Sarti 2009 Basi di Dati 6

Differenza Cognomi che non sono anche nomi di studenti che hanno sostenuto almeno un esame select cognomi as nomeoppurecognome from studenti except select nome as nomeoppurecognome from studenti Lorenzo Sarti 2009 Basi di Dati 7 Cancellazione e modifica di tuple Cancella lo studente con matricola A80198760 delete from studenti where Matricola = 'A80198760' Cancella gli studenti che non hanno esami delete from studenti where Matricola not in (select Matricola group by Matricola) update esami set Voto = 30 where Matricola = 'A80198760 and corso = Analisi I Lorenzo Sarti 2009 Basi di Dati 8

Cancellazione: osservazioni Rimuovere tutti gli studenti delete from studenti Lorenzo Sarti 2009 Basi di Dati 9 Modifica: osservazioni L ordine dei comandi di aggiornamento è importante Aumentare di 1 il voto degli studenti con voto maggiore di 25 e di 2 il voto degli altri studenti update esami set voto=voto+2 where voto<=25 update esami set voto=voto+1 where voto>25 Chi aveva 25 dopo ha 28 update esami set voto=voto+1 where voto>25 update esami set voto=voto+2 where voto<=25 Chi aveva 25 dopo ha 27 Lorenzo Sarti 2009 Basi di Dati 10

Vincoli di integrità generici: check Sostituisce references Vincoli sul valore del voto create table esami ( studente char(9) not null check(studente = any(select matricola from studenti)) voto integer not null check(voto<=30 and voto>=0), lode char(1) check(lode= or lode= L ), corso char(20) not null, unique(studente,corso), check(not((voto<>30) and (lode= L ))) ) Vincolo su lode solo con 30 Vincoli sul valore della lode Lorenzo Sarti 2009 Basi di Dati 11 Viste 1/2 Corrispondono a tabelle virtuali ovvero che non esistono fisicamente ma il cui contenuto è ottenuto da altre tabelle In SQL si ottengono assegnando una lista di attributi e un nome ad una interrogazione con select create view StudentiMeritevoli (Matricola,Nome,Cognome) as select Matricola,Nome,Cognome from Studenti where Matricola in (select studente group by studente having avg(voto)>=28) Lorenzo Sarti 2009 Basi di Dati 12

Viste 2/2 E possibile fare delle modifiche attraverso la vista, purché ogni riga della vista corrisponda ad una sola riga della tabella create view StudentiEsami (Nome,Cognome,Corso,Voto,Matricola) as select Nome,Cognome,Corso,Voto,Studente from Studenti, Esami where Matricola=Studente Comando permesso update StudentiEsami set voto=30 where cognome= rossi and corso= analisi Lorenzo Sarti 2009 Basi di Dati 13