ESERCITAZIONE 3 A
Comandi SQL a una sola tabella


Tutti i quesiti proposti fanno riferimento ad una tabella ALUNNI così definita:

contenente i seguenti dati:

NB: il campo chiave è [id Matricola]
Qui sotto i comandi VBA per ricreare la tabella e i dati

Public Function CreaDB()
Dim CmdSQL As String

   On Error Resume Next
   CurrentDb.Execute ("DROP TABLE Alunni")
   On Error GoTo 0
   CurrentDb.Execute("CREATE TABLE Alunni" & _
         "(" & _
         "  [Id Classe] TEXT(3) CONSTRAINT IdClasse NOT NULL," & _
         "  [id matricola] LONG CONSTRAINT IdStudente PRIMARY KEY," & _
         "  Nominativo TEXT(50) CONSTRAINT Nominativo NOT NULL, " & _
         "  Prov TEXT(2), " & _
         "  DataDiNascita DateTime " & _
         ");")
   CurrentDb.Execute ("INSERT INTO Alunni VALUES ('3A',1,'Rossi','BS',#03/01/1980#);")
   CurrentDb.Execute ("INSERT INTO Alunni VALUES ('3A',2,'Verdi','BG',#03/01/1981#);")
   CurrentDb.Execute ("INSERT INTO Alunni VALUES ('4A',3,'Gialli','BS',#03/01/1980#);")
   CurrentDb.Execute ("INSERT INTO Alunni VALUES ('4A',4,'Bruni','BS',#03/01/1979#);")
   CurrentDb.Execute ("INSERT INTO Alunni VALUES ('3B',5,'Neri','TN',#03/01/1979#);")
   CurrentDb.Execute ("INSERT INTO Alunni VALUES ('5A',6,'Girgi','BG',#03/01/1977#);")

End Function

Per eseguire il codice seguire questi passaggi:
a) primi la combinazione: alt-F11;
b) menu "inserisci" voce "modulo";
c) incolla nella finestra tutto il codice VBA;
d) premi la combinazione: Ctrl+G;
e) digita
call CreaDB e batti invio;
f) chiudi Access senza salvare e riaprilo oppure vai nel pannello delle "tabelle" e premi: F5.

ESERCIZIO 1 - IV-M2.3A.1

Fornire i comandi SQL che consentono di ottenere questi risultati:  

a) Elenco degli studenti ordinato per classe e nominativo.

b) Elenco degli studenti con le colonne così intestate: nominativo, classe. La lista deve essere ordinata prima per classe e poi per nominativo

 

c) Elenco contenente tutti gli studenti di Brescia e quelli nati prima il 18 gennaio 1980 di Bergamo.

d) Data di nascita dell’ alunno più vecchio e più giovane (in un'unica query).  

e) Elenco degli alunni il cui nominativo inizia con una certa lettera alfabetica. La lettera deve essere richiesta all’apertura della query  

f) Elenco degli studenti di Brescia o Trento che siano nati dopo il 23/2/1980

g) Numero degli studenti presenti in 3A

h) Elenco degli studenti nati nel 1980

i) Elenco degli studenti che terminano per una certa lettera. Gli spazi finali nel nominativo vanno tolti e quindi non sono da considerare

l) Numero di studenti suddiviso per anno di nascita

ESERCIZIO 2 - IV-M2.3A.2

Illustrare i risultati ottenuti eseguendo questi comandi SQL

a) Select * FROM Alunni WHERE [Vuoi vedere tutti gli alunni]='Si'  

b) SELECT * FROM Alunni WHERE (  (PROV='BS') OR ( PROV='BG')  ) AND (DataDiNascita=#04/12/2003#)

c) SELECT * FROM ALUNNI WHERE (PROV='BS') OR (  (PROV='BG') AND (DataDiNascita=#04/12/2003#)  )

d) SELECT * FROM ALUNNI WHERE [id Classe]=[Dimmi di quale classe vuoi l'elenco degli studenti]

e) SELECT * FROM ALUNNI WHERE x='y'

f) SELECT YEAR(DataDiNascita) AS ANNO, Count(*) FROM ALUNNI GROUP BY YEAR(DataDiNascita)

g) SELECT *, DATE() AS OGGI FROM ALUNNI

h) SELECT * FROM ALUNNI WHERE WeekDay(DataDiNascita)=1

i) SELECT PROV, COUNT(*) AS NrStudenti FROM ALUNNI GROUP BY PROV

l) SELECT * FROM ALUNNI WHERE Nominativo Like "*" & [Lettera] & "*"

m) Select * FROM Alunni WHERE "Vuoi vedere tutti gli alunni"=[Si]