SQL, Esercizi di Sistemi Informatici
elisapv
elisapv

SQL, Esercizi di Sistemi Informatici

3 pagine
1000+Numero di visite
Descrizione
esercizi sql
20 punti
Punti download necessari per scaricare
questo documento
Scarica il documento
Anteprima3 pagine / 3

ESERCITAZIONI D SQL

Introduzione.

In ambiente Access, normalmente, la progettazione delle query viene fatta utilizzando la funzione Query by Example, e non ricorrendo ai comandi SQL.

L'interfaccia QBE genera in ogni caso un comando SQL, che può essere visto attivando il relativo comando nel menu Visualizza.

L'analisi del comando SQL può risultare particolarmente utile quando a fronte di una query, generata con la funzione QBE, si ottengono dei risultati diversi da quelli attesi. In alcuni casi può risultare utile capire il comando SQL, per scoprire eventuali errori commessi in fase di creazione della query

Qui di seguito ci si pone l'obiettivo di esaminare alcuni comandi SQL esemplificativi, per verificare su quali dati e tabelle operano, e quali sono i risultati prodotti.

Per ognuno dei comandi SQL proposti, vengono determinati dati e tabelle coinvolti, e viene descritto il risultato conseguito dal comando.

Esercizio 1

SELECT Dipendenti.Cognome, Dipendenti.Nome, Reparti.[Nome Reparto], Dipendenti. Qualifica FROM Dipendenti INNER JOIN Reparti ON Dipendenti.[ID Reparto]=Reparti.[ID Reparto] WHERE Dipendenti.Qualifica=[qualifica?];

Dipendenti Reparti

Cognome - IO Reparto Nome Nome Reparto Qualifica IO Reparto -

Query parametrica, visualizza i campi: • Cognome del dipendente • Nome del dipendente

Nome del reparto Qualifica del dipendente

per tutti i dipendenti di una qualifica, immessa come parametro al momento dell'esecuzione della query.

261

Esercizio 2

SELECT Capi.Cognome, Capi.Nome, Reparti. [Nome Reparto], Dipendenti.Cognome, Dipendenti. Nome FROM Capi INNER JOIN [Dipendenti INNER JOIN Reparti ON Dipendenti.[ID Reparto]=Reparti.[ID Reparto]] ON Capi.[ID Capo]=Reparti.[ID Capo] WHERE Dipendenti.[Data assunzione] > date()-90;

Capi Reparti Dipendenti

IO Capo -L IO Reparto L CognomeCognome Nome Reparto Nome Nome IO Capo IO Reparto

Data assunzione

Visualizza i campi: • Cognome del capo

Nome del capo Nome del reparto

• Cognome del dipendente • Nome del dipendente

per tutti i dipendenti assunti negli ultimi 90 giorni dalla data di esecuzione della query.

Esercizio 3

SELECT Capi.Cognome, Capi.Nome, Reparti. Descrizione, COUNT [Dipendenti.[ID Dipendente]] AS [ConteggioDi[ID Dipendente]] FROM Capi INNER JOIN [Dipendenti INNER JOIN Reparti ON Dipendenti.[ID Reparto]=Reparti.[ID reparto]] ON Capi.[ID Capo]=Reparti.[ID Capo] GROUP BY Reparti.[ID Reparto];

Capi Reparti

IO Capo IlIO Reparto -Cognome DescrizioneNome IO Capo Dipendenti

L IO Dipendente IO Reparto

Visualizza per ogni reparto: • Cognome del capo

Nome del capo Descrizione del reparto Numero dei dipendenti

262

Esercizio 4

UPDATE Dipenden~i SET Dipendenti.Stipendio=[Stipendio]*l,l WHERE Dlpendentl.Qualifica =" 1O" OR Dipendenti. Qualifica = "20";

Dipendenti

Stipendio Qualifica

Aumenta del 10% lo stipendio dei dipendenti che hanno qualifica 10 o 20.

Esercizio 5

UPDATE [[Aziende INNER JOIN Filiali ON Aziende.[ID Azienda]=Filiali.[ID Azienda]] INNER JOIN Prodotti ON Filiali.[ID Filiale]=Prodotti.[ID Filiale]] SET Prodotti.Prezzo=[Prezzo]*1.1 WHERE [[Filiali.Provincia="MI" OR Filiali.Provincia="TO"] AND Prodotti.[Settore Merc]="10" AND Aziende.[Ragione Sociale]="ACME"];

Filiali Prodotti

IO Filiale n PrezzoProvincia Settore MercIO Azienda IO Filiale Aziende

IO Azienda Ragione Sociale

Aumenta del 10% il prezzo dei prodotti dell'azienda ACME, delle filiali delle province di Milano e Torino, e del settore merceologico 10.

Esercizio 6

SElECT Prodotti. [Settore Mer], Aziende. [Ragione Sociale], Filiali.Città, Filiali.Provincia FROM [Aziende INNER JOIN Filiali ON Aziende.[ID Azienda]=Filiali.[ID AZienda]] INNER JOIN Prodotti ON Filiali.[ID Filiale]=Prodotti.[ID Filiale] WHERE Filiali.Provincia=[Provincia?] AND Prodotti.[Settore Mer]=[Settore Merceologico];

Aziende Filiali Prodotti

IO Azienda IL IO Filiale IL Settore MercRagione Sociale Città IO FilialeProvinciaIO Azienda Visualizza:

Settore merceologico dei prodotti Ragione sociale delle aziende Città della filiale

v

Provincia della filiale per tutte le filiali di una provincia immessa come parametro ed un settore merceologico immesso come parametro al momento dell'esecuzione della query.

Esercizio 7

SElECT Agenti.Cognome, Agenti.Nome, Count(Clienti.[Codice cliente]) [ConteggioDiCodice cliente], Sum(Clienti.Fatturato) AS SommaDiFatturato FROM Agenti INNER JOIN Clienti ON Agenti. [Codice agente] = Clienti.Agente GROUP BY Agenti.[Codice Agente];

AS

Agenti Clienti

Codice Agente Cognome Nome

Codice cliente Fatturato Agente

Per ogni agente, visualizza: • Cognome dell'agente • Nome dell'agente • Numero dei clienti • Somma dei fatturati.

Esercizio 8

SElECT Utenti.Cognome, Utenti.Nome, Utenti.Telefono, libri.Autore, libri.Titolo, libri.[Data Prestito] FROM libri INNER JOIN Utenti ON libri.[ID Utente]=Utenti.[ID Utente] WHERE (libri.[Data Prestito]<DateO-90);

Utenti libri

IO Utente f-- Autore Cognome Titolo Nome Data Prestito Telefono IO Utente'---

Visualizza: • Cognome dell'utente • Nome dell'utente • Telefono dell'utente

Autore del libro Titolo del libro Data del prestito

per tutti i libri prestati da oltre 90 giorni al momento dell'esecuzione della query.

264

Esercizio 9

SELECT Dipendenti.Cognome, Dipendenti.Nome, Dipendenti.Ufficio, Pratiche.[Codice pratica], Pratiche.Argomento, Pratiche.[Data scadenza] FROM Dipendenti INNER JOIN Pratiche ON Dipendenti.[Codice Personale] Pratiche. Funzionario WHERE «(Pratiche. [Data scadenza])< Date(») ORDER BY Dipendenti.Cognome;

Dipendenti Pratiche

Codice Personale Cognome Nome Ufficio

Codice Pratica Argomento Data Scadenza Funzionario

Visualizza: • Cognome del dipendente

Nome del dipendente Ufficio del dipendente Codice della pratica Argomento della pratica Data di scadenza della pratica

per tutte le pratiche scadute al momento dell'esecuzione della query. I dati vengono ordinati per cognome del dipendente.

Esercizio 10

SELECT Agenti.Cognome, Agenti.Nome, Zona. Descrizione, Agenti.Fatturato, Agenti.[Numero Clienti] FROM Zona INNER JOIN Agenti ON Zona.[Id Zona] = Agenti.Zona WHERE «(Agenti.Fatturato)<200000» OR «(Agenti. [Numero Clienti])<20»;

Agenti Zona

IO Zona Descrizione

Cognome Nome Zona Fatturato Numero clienti

Visualizza i campi: Cognome dell'agente Nome dell'agente Descrizione della zona Fatturato

• Numero di clienti per tutti gli agenti che hanno un fatturato minore di 200.000 o un numero di clienti minore di 20.

265

non sono stati rilasciati commenti