SQL Esercizi DML Blocco 1

Documenti analoghi
Sistemi di Elaborazione delle Informazioni

Interrogazioni semplici

Laboratorio di. Docenti: Alberto Belussi e Carlo Combi

Laboratorio di Basi di dati Soluzioni della V esercitazione - 23 aprile 2007

Il formato di base di un interrogazione in SQL è: SELECT R i1.c 1, R i2.c 2,..., R in.c n FROM R 1, R 2,..., R k WHERE F;

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

Basi di dati I Prova di autovalutazione 1 novembre 2016 Soluzioni

Laboratorio di Basi di Dati

Basi di dati I Prova di autovalutazione 30 ottobre 2014

Basi di dati - Laboratorio

Linguaggio SQL seconda parte

SQL: le funzioni di aggregazione

INFORMATICA GENERALE Prof. Alberto Postiglione. Scienze della Comunicazione Università di Salerno. INFORMATICA GENERALE Prof. Alberto Postiglione

Lezioni di Laboratorio sui Data Base

Basi di Dati. Concetti Avanzati

Query. Query (Interrogazioni) SQL SQL. Significato dell interrogazione. Sintassi

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

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

Basi di Dati: Corso di laboratorio

Operatori aggregati. Un operatore aggregato è una funzione che si applica ad un insieme di tuple di una tabella

Esercizi SQL. Credits Prof. Campi

Structured Query Language

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

Il linguaggio SQL - Interrogazioni -

QL (Query Language) Alice Pavarani

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"

Select From Where...

ESERCITAZIONI ACCESS

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

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

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

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

Basi di Dati: Corso di laboratorio

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

Corso di Basi di Dati

IL LINGUAGGIO SQL LE BASI

ISBN Titolo CasaEd AnnoEd

Il linguaggio SQL: raggruppamenti

Esercizi di SQL Matteo Magnani, Danilo Montesi Università di Bologna. Esercizi di SQL

Principi di Progettazione del Software a.a Il linguaggio SQL. Il Linguaggio SQL

Alessandra Raffaetà. Esercizio: Cinema

S.I.T. PER LA VALUTAZIONE E GESTIONE DEL TERRITORIO Corso di Laurea Magistrale in Scienze Ambientali. Alessandra Raffaetà

D B M G. Linguaggio SQL: fondamenti. Istruzione SELECT: fondamenti. Elena Baralis 2007 Politecnico di Torino 1. Struttura di base

Corso sul linguaggio SQL

Esercizi sul linguaggio SQL e le basi dati relazionali

SQL - Sottointerrogazioni correlate

Linguaggio SQL: fondamenti D B M G

Elena Baralis 2007 Politecnico di Torino 1

Database Lezione 2. Sommario. - Progettazione di un database - Join - Valore NULL - Operatori aggregati

Interrogazioni nidificate

Idoneita Informatica. Sistemi per la gestione di basi di Dati

4.SQL QUERY. Fare una query significa fare delle ricerche sul nostro database.

SQL - Sottointerrogazioni

Esercitazione 2 SQL.

Il linguaggio SQL: raggruppamenti. Versione elettronica: SQLb-gruppi.pdf

Basi di Dati: Corso di laboratorio

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

Basi di Dati: Corso di laboratorio

Introduzione alle basi di dati

Il linguaggio SQL: raggruppamenti

V. Moriggia Modelli di Base Dati. Modelli di Base Dati. a.a. 2001/

Linguaggio SQL. studenti matricola nome cognome citta anno 11 marco bini bologna laura sicuro rimini 1984 esami codice

Interrogazioni in SQL SQL1 1

SQL /10/2016 Basi di dati - SQL 1

3. Selezionare i nomi dei clienti che iniziano con le lettere P, Q, R, S

Prova Pratica di Informatica, Modulo Basi di dati Appello 23/07/2018

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

SQL Matteo Magnani, Danilo Montesi Università di Bologna SQL. SQL come Data Manipulation Language - (SELECT FROM WHERE ORDER BY)

Elena Baralis 2007 Politecnico di Torino 1

Informatica Grafica. Basi di dati parte 2

5.1- Le operazioni: esempi

Istruzioni. DDL: CREATE, DROP e ALTER TABLE. DML: INSERT, DELETE e UPDATE DQL: SELECT. DCL: GRANT e REVOKE

Basi di Dati: Corso di laboratorio

Corso di Basi di Dati A.A. 2015/2016

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

Interrogazioni nidificate

Queries su più tabelle

Prova Scritta di Basi di Dati

Manuale SQL. Manuale SQL - 1 -

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

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

8 SQL : Check, Asserzioni,Viste

Caratteristiche dei linguaggi per Database

Basi di Dati. Esercitazione 1: Interrogazioni in SQL. K. Donno - Interrogazioni in SQL

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

Le implementazioni nei vari DBMS relazionali commerciali

Basi di dati Corso di Laurea in Informatica Umanistica

S Q L E S E R C I Z I

Il linguaggio SQL: le viste

Laboratorio di Basi di Dati IV esercitazione 17 aprile 2007

Operatori aggregati. Operatori aggregati. Interrogazioni con raggruppamento. Interrogazioni con raggruppamento

SQL. Università degli Studi di Salerno. Corso di Laurea in Scienze della Comunicazione Informatica generale (matr. Dispari) Docente: Angela Peduto

Archivi e basi di dati - ing. M. Cossentino. Settore. Traccia 1. Traccia 200. Settore non polarizzato

Informatica II Basi di Dati (07/08) Parte 2. 4 Accesso ai dati di un DB. Accesso ai dati di un DB. Accesso ai dati di un DB

Transcript:

SQL Esercizi DML Blocco 1 Si consideri il seguente schema di base di dati che vuole tenere traccia di alcune informazioni riguardanti gli studenti di un'università. Studenti(Matricola, NomeS, CognomeS, CittàRes, Sesso, NumTelefono) Corsi(CodCorso, NomeC, NumCrediti, MatricolaDocente) Esami(Matricola, CodCorso, Voto) Docenti(MatricolaD, NomeD, CognomeD, DipartimentoDiAfferenza, Stipendio) La tabella Esami contiene l'elenco di esami superati dagli studenti. Esercizi 1) Trovare le informazioni su tutti gli studenti presenti nella tabella Studenti a. select Matricola, NomeS, CognomeS, CittàRes, Sesso, NumTelefono Alternativa b. select * 2) Trovare la matricola e la città di residenza di tutti gli studenti presenti nella base di dati a. select Matricola, CittàRes 3) Trovare le città in cui risiede almeno uno studente a. /* Con questa prima soluzione non vengono eliminate le città duplicate/ripetute */ select CittàRes Alternativa b. /* Con questa seconda soluzione vengono eliminate le città duplicate/ripetute grazie alla presenza della parola chiave DISTINCT */ select DISTINCT CittàRes 4) Trovare matricola e stipendio mensile per ogni docente (si supponga che l'attributo Stipendio della tabella Docenti contenga lo stipendio annuo e che lo stipendio mensile sia calcolabile come quello annuo diviso 12) a. /* Il valore di Stipendio/12 viene rinominato StipendioMensile */ select MatricolaD, Stipendio/12 as StipendioMensile from docenti; 5) Trovare gli studenti di Verona (tutte le informazioni disponibili su tali studenti) where CittàRes='Verona';

6) Trovare gli studenti che non risiedono a Verona where CittàRes<>'Verona' 7) Trovare gli studenti di Verona di sesso femminile where CittàRes='Verona' and Sesso='F'; 8) Trovare gli studenti di sesso femminile che risiedono a Verona o Parma. where Sesso='F' and (CittàRes='Verona' or CittàRes='Parma'); 9) Trovare le informazioni sui corsi da almeno 5 crediti where numcrediti>=5; Esempi d uso della parola chiave LIKE per il confronto tra stringhe. Si ricorda che il comando attributo LIKE 'stringa' permette di confrontare il valore dell'attributo con il contenuto della stringa di caratteri presente dopo la parola chiave LIKE. La stringa di confronto può contenere i caratteri speciali % e _ % = stringa di lunghezza arbitraria (eventualmente zero) con contenuto arbitrario _ = un singolo carattere arbitrario (uno ed esattamente uno) 10) Trovare gli studenti il cui cognome comincia con la lattera R where CognomeS LIKE 'R%' ; 11) Trovare gli studenti il cui cognome comincia con la lattera R e finisce con la lettera i where CognomeS LIKE 'R%i' ; 12) Trovare gli studenti il cui cognome ha la lettera a in seconda posizione where CognomeS LIKE '_a%' ;

Valore NULL. Si ricorda che per verificare se un attributo di una tupla contiene il valore nullo oppure no è necessario usare i comandi attributo IS NULL e attributo IS NOT NULL 13) Trovare gli studenti per cui è noto il numero di telefono where NumTelefono IS NOT NULL; 14) Trovare la matricola degli studenti per cui non è noto il numero di telefono a. select matricola where NumTelefono IS NULL; Ordinamento dei risultati. 15) Trovare i corsi, restituendoli ordinati in numero di crediti decrescente. order by NumCrediti DESC; 16) Trovare i corsi, restituendoli ordinati in numero di crediti decrescente. A parità di numero di crediti ordinare i corsi alfabeticamente in base al nome order by NumCrediti DESC, NomeC; Interrogazioni che coinvolgono più tabelle in join tra di loro. 17) Trovare matricola, cognome e nome degli studenti di Verona che hanno preso almeno un 30 a. select Studenti.Matricola, Studenti.CognomeS, Studenti.NomeS, esami where studenti. Matricola=Esami. Matricola and Voto=30; Soluzione alternativa in cui solo per comodità di scrittura rinomino le istanze delle tabelle STUDENTI e CORSI rispettivamente come S e C (vedremo in esercizi successivi che l assegnazione di alias/soprannomi alle diverse istanze delle tabelle è necessario quando si hanno più istanze della stessa tabella nella stessa interrogazione per distinguere le diverse istanze) b. select S.Matricola, S.CognomeS, S.NomeS S, corsi C where S.Matricola=C.Matricola and Voto=30; Altra sintassi possibile per eseguire il natural join (non spiegata in aula) basata sull operatore JOIN

c. select Studenti.Matricola, Studenti.CognomeS, Studenti.NomeS JOIN esami ON studenti. Matricola=Esami. Matricola where Voto=30; 18) Trovare codice e nome dei corsi per i quali almeno uno studente di Verona ha preso 30 all esame. a. select C.CordCorso, C.NomeC S, esami E, Corsi C where S. Matricola=E. Matricola and C.CordCorso=E.CodCorso and Voto=30 and CittàRes= Verona ; 19) Trovare codice, nome e cognome degli studenti che ha preso un voto superiore a 25 ad almeno uno tra i corsi 'Fondamenti Inf 1' e 'Fondamenti Inf 2' a. select Studenti.Matricola, Studenti.CognomeS, Studenti.NomeS from Esami, Corsi where Corsi.CordCorso=Esami.CodCorso and Voto>25 and (NomeC='Fondamenti Inf 1' OR NomeC='Fondamenti Inf 2'); Funzioni aggregate 20) Contare quanti studenti sono presenti nella tabella studenti a. select count(*) b. /* In questa versione alternativa associo il nome/alias numerostudenti a count(*) */ select count(*) as numerostudenti 21) Contare da quante città diverse provengono gli studenti presenti nella base di dati a. /* La parola chiave DISTINCT all'interno dell'operatore COUNT(..) serve per specificare che voglio contare quanti valori diversi assume CittàRes nelle tuple selezionate */ select count(distinct CittàRes) 22) Contare per quanti studenti è noto il numero di telefono a. /* L'operatore COUNT(attributo) considera solo le tuple in cui il campo specificato non assume valore NULL */ select count(numtelefono) 23) Selezionare il voto più alto e quello più basso preso dallo studente con matricola 'M1000' a. select MAX(Voto) as VotoMassimo, MIN(Voto) as VotoMinimo from esami where Matricola='M1000';

24) Calcolare la media voti dello studente con matricola 'M1000' a. select AVG(Voto) as MediaVoti from esami where Matricola='M1000'; 25) Contare quanti studenti di Verona hanno superato l'esame di Basi di dati con un voto superiore a 25 a. select COUNT(*) as StudentiVerora_EsamePassato from Esami, Studenti where Esami.Matricola=Studenti.Matricola and Studenti.CittàRes='Verona' and Voto>25; 26) Calcolare la somma degli stipendi dei docenti del Dipartimento di Fisica a. select SUM(Stipendio) as SommaStipendi from Docenti where DipartimentoDiAfferenza='Dipartimento di Fisica';