ESERCITAZIONE 3 A
Comandi SQL a una sola tabella
Tutti i quesiti proposti fanno riferimento ad una tabella ALUNNI così definita:
contenente i
seguenti
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]