Data la tabella ALUNNI, contenente i campi: CODICE_FISCALE, NOME, COGNOME, DATA_NASCITA, INDIRIZZO, CITTA, CLASSE, SCUOLA 1) scrivere l’istruzione SQL per creare tale tabella, indicando, se c’è, la chiave primaria o, in caso contrario, inserendo un campo apposito che funga da chiave primaria, tenendo presente che sia la chiave primaria che il campo COGNOME devono sempre contenere un valore. Inoltre si vuole che, all’immissione di un nuovo record, il campo CITTA contenga già il valore “Roma” 2) scrivere la query che estragga tutti i valori relativi agli alunni nati dopo il 1/3/1995 3) dare all’utente PRESIDE tutti i privilegi sulla tabella ALUNNI 4) scrivere l’istruzione per cancellare il campo INDIRIZZO dalla tabella 5) scrivere l’istruzione SQL per inserire nella tabella ALUNNI i dati di Mario Rossi, Codice Fiscale RSSMAR96D20J920Y, nato il 20/4/1996, via Verdi, Milano, IV B, Sc.Elementare Manzoni 6) scrivere l’istruzione per cancellare dal database la tabella ALUNNI 7) scrivere l’istruzione per revocare i permessi di lettura e modifica dei dati della tabella alla SEGRETERIA 8) scrivere una query che estragga dalla tabella ALUNNI tutti gli studenti di cognome “Rossi” 9) scrivere l’istruzione per aggiungere il campo TEL_GENITORI alla tabella ALUNNI SOLUZIONI: 1) per creare una tabella si usa il comando CREATE TABLE. La chiave primaria è quel campo che identifica un’entità (cioè, nel nostro caso , l’entità ALUNNI) in modo univoco. Se non ci fosse tale campo, dovremmo aggiungerlo (ad es. CODICE). Abbiamo però il CODICE FISCALE che è univoco e quindi sarà la nostra chiave primaria. La richiesta che la chiave primaria e il campo cognome debbano sempre contenere un valore, si traduce aggiungendo l’opzione NOT NULL alla descrizione del campo. Perché il campo CITTA contenga, all’immissione di un nuovo record, il valore “Roma”, dovremmo aggiungere l’opzione DEFAULT alla definizione del campo. Dunque l’istruzione SQL sarà: create table ALUNNI ( Codice_fiscale char(16) Nome char(40), Cognome char(40) Data_nascita date, Indirizzo char(50), Citta char(30) Classe integer, Sezione char(1), Scuola char(255), PRIMARY KEY(Codice_fiscale) ) NOT NULL, NOT NULL, DEFAULT ‘Roma’, NOTA: classe è stata impostata a integer perché immaginiamo di scrivere 1, 2, 3.. per I, II, III. Se invece, immaginando di scrivere le cifre romane, si fosse impostato un char(3) non sarebbe stato comunque errore. Scula è stato impostato alla lunghezza massima di caratteri (cioè 255) 2) Per la query (cioè per estrarre i dati) si usa la SELECT: SELECT * FROM ALUNNI WHERE Data_nascita>’ 1/3/1995’ L’asterisco indica “tutti”. Si può anche scrivere *.* La condizione si esprime con WHERE. 3) Per dare i privilegi si usa l’istruzione GRANT: GRANT ALL PRIVILEGES ON ALUNNI TO PRESIDE NOTA: se avessi chiesto di revocare tutti i privilegi al PRESIDE sulla tabella ALUNNI, avreste dovuto scrivere: REVOKE ALL PRIVILEGES ON ALUNNI FROM PRESIDE (qui c’é la parola chiave FROM in vece di TO) 4) Per cancellare il campo (cioè la colonna) INDIRIZZO dalla tabella ALUNNI, dovrò scrivere: ALTER TABLE ALUNNI ( DROP COLUMN INDIRIZZO ) 5) Stavolta si richiede di agire sui dati e non sulla struttura della tabella, per inserire nella tabella ALUNNI i dati di Mario Rossi, Codice Fiscale RSSMAR96D20J920Y, nato il 20/4/1996, via Verdi, Milano, IV B, Sc.Elementare Manzoni. Occorre usare l’INSERT: INSERT INTO ALUNNI VALUES ( ‘RSSMAR96D20J920Y’, ‘Mario’, 'Rossi’, ‘20/04/1996', ‘Via Verdi‘, ‘Milano‘, ‘4’, ‘B’, ‘Sc. Elementare Manzoni’ ) ricordarsi di mettere la parola VALUES (letteralmente “valori”) prima della prima parentesi per specificare che si stanno immettendo, appunto, valori nella tabella. 6) Per cancellare dal database la tabella ALUNNI, occorre usare il comando DROP TABLE, in questo modo: DROP TABLE ALUNNI 7) Per revocare i permessi di lettura e modifica dei dati della tabella alla SEGRETERIA, occorre utilizzare REVOKE: REVOKE SELECT, UPDATE ON ALUNNI FROM SEGRETERIA NOTA: ricordate che SELECT è il permesso di lettura, INSERT è quello di inserimento, UPDATE di modifica, DELETE di cancellazione dei dati, ALL PRIVILEGE fornisce tutti i privilegi precedenti. 8) Per creare una query che estragga dalla tabella ALUNNI tutti gli studenti con il cognome “Rossi”, dovrò usare il comando SELECT, seguito dal WHERE per specificare la condizione “cognome=Rossi”: SELECT * FROM ALUNNI WHERE COGNOME=’Rossi’ 9) Per aggiungere alla tabella il campo TEL_GENITORI, docrò usare il comando ALTER TABLE, come segue: ALTER TABLE ALUNNI ( TEL_GENITORI char(20), )