SCUOLA INTERUNIVERSITARIA SICILIANA DI SPECIALIZZAZIONE PER L’INSEGNAMENTO SECONDARIO Classe di Concorso: 42A Massimo Mancino MODULO DIDATTICO - Ambienti Software - - Per Database Docente: Prof. Cantone Ambienti software per database Il modulo, proposto per una quinta classe Indirizzo Informatico, mira a presentare agli alunni due strumenti software per DBMS (SQL e MS ACCESS). Composizione del modulo Unità didattica 1 Il linguaggio SQL Unità didattica 2 Microsoft Access Unità didattica 1 Il Linguaggio SQL Prerequisiti Gli studenti dovranno dimostrare di avere: Nozioni di entità, attributo, chiave, associazione Conoscenza del modello relazionale e degli operatori relazionali Caratteristiche generali di un sistema di gestione di basi di dati Caratteristiche generali di un linguaggio per basi di dati Competenze Applicare correttamente i principi del modello relazionale Rappresentare le operazioni relazionali Codificare e validare interrogazioni in linguaggio SQL Contenuti Comandi per la definizione e la manipolazione delle tabelle Comandi per le interrogazioni Funzioni di aggregazione Ordinamenti e raggruppamenti Interrogazioni nidificate Comandi per la sicurezza e l’integrità dei dati Metodologie LEZIONE FRONTALE LEZIONE DIALOGATA Spazi AULA LABORATORIO AZIENDA Strumenti LIBRO DI TESTO ED APPUNTI COMPUTER LAVAGNA LUMINOSA PROIETTORE Verifiche Le verifiche sono periodiche e costanti, tese alla valutazione sia del percorso nella sua globalità che di una parte del medesimo. Esse prevedono varie tipologie: Colloqui individuali Interventi di vario genere Questionari e Test (strutturati e semistrutturati) Prove di laboratorio Valutazione La valutazione sarà: Sia di tipo formativo e quindi in relazione all’applicazione, all’impegno, all’attenzione, al metodo di lavoro che ogni studente avrà mostrato durante l’attività didattica Sia di tipo sommativo, ricavata dalla misurazione delle varie prove in cui gli studenti dovranno dimostrare di: avere acquisito conoscenze e informazioni circa i contenuti avere maturato abilità e competenze specifiche alla disciplina Tempi Unità Didattica Ore di Lezione Ore di Laboratorio Ore di Verifica Ore di Recupero e/o Potenziamento U.D. 1 20 20 8 12 Storia Structured Query Language (solitamente pronunciato "sequel"). La "vita" di SQL inizia nel 1970 presso i laboratori di ricerca IBM di San Jose, dove E. F. Codd e altri svilupparono il modello di database relazionale che diede origine al sistema noto come DB2. Quando i database relazionali proliferarono nel corso degli anni Ottanta, SQL fu codificato per l'utilizzo nell'ambito dell'Information Technology commerciale. Nel 1986, l'American National Standards Institute (ANSI) e l'International Standards Organization (ISO) stabilirono il primo standard del linguaggio. Storia Le revisioni successive dello standard, nel 1989 e nel 1992, aggiunsero il controllo di base dell'integrità dei dati e le funzioni per la loro definizione e manipolazione. La specifica di SQL del 1992 è la versione più attuale, benché il nuovo aggiornamento SQL3, conosciuto anche come SQL-99, sia in corso di progettazione da qualche tempo. Gli sforzi verso la definizione dello standard SQL3 sono rivolti verso l’integrazione di questo linguaggio nelle basi di dati orientati agli oggetti e il supporto per sistemi basati sulla conoscenza. Caratteristiche Linguaggio ad alto livello Paradigma di programmazione logico Sta al sistema di gestione del database analizzare la richiesta in rapporto alla propria struttura e stabilire quali operazioni sia necessario eseguire per recuperare l'informazione richiesta Si presta alle architetture client/server Può essere utilizzato da un linguaggio strutturale (Hosting) Datatype standard Character(n) Stringa di lunghezza n (da 1 a 15000) Date Data nella forma MM/GG/AA Time Ora nella forma HH:MM Integer Numero intero con precisione 10 Smallint Numero intero con precisione 5 Real Numero reale con mantissa di precisione 7 Float Numero reale con mantissa di precisione 15 Istruzioni DDL: CREATE, DML: INSERT, DROP e ALTER TABLE DELETE e UPDATE TRANSAZIONI: COMMIT, ROLLBACK e SAVEPOINT DQL: SELECT SICUREZZA: GRANT e REVOKE CREATE CREATE TABLE … Crea una nuova tabella nella base di dati CREATE VIEW … Crea una nuova vista nella base di dati CREATE INDEX … Crea un nuovo indice su uno o più attributi di una tabella CREATE TABLE Per creare una nuova tabella nella base di dati: CREATE TABLE table_name ( field1 type1 [default] [constraint1], field2 type2 [default] [constraint2], … fieldn typen [default] [constraintn] ); Esempio - CREATE TABLE Diagramma Entità-Relazione Modello Relazionale Magazzino(ID, Descrizione); Prodotti(Codice, Descrizione, Prezzo); Contiene(ID_Magazzino, Codice_Prodotto); Esempio - CREATE TABLE create table Magazzino ( id integer primary key, descrizione char[100] ); Master create table Prodotti ( codice integer primary key, descrizione char[100], prezzo integer, id_magazzino integer, Child foreign key (id_magazzino) references Magazzino(id) ); CREATE TABLE…AS… Per creare una nuova tabella da una già esistente nella basi di dati CREATE TABLE table_name AS SELECT filed1, field2, …, filedn FROM table_name WHERE condizione; DROP DROP TABLE table_name; Rimuove la tabella dalla base di dati e i relativi indici DROP VIEW view_name; Rimuove la vista dalla base di dati DROP INDEX index_name; Rimuove l’indice dalla rispettiva tabella ALTER TABLE ALTER TABLE table_name ADD (col_name type [constraint]); Aggiunge una o più colonne alla tabella ALTER TABLE table_name MODIFY (col_name type [constraint]); Modifica il tipo di una o più colonne della tabella ALTER TABLE table_name DROP (col_name); Rimuove una o più colonne della tabella Restrizioni Non possiamo modificare una colonna che contiene valori NULLI in una definita NOT NULL Non possiamo aggiungere una colonna NOT NULL a meno che la tavola non sia vuota Non possiamo diminuire la grandezza di una colonna a meno che questa non sia vuota INSERT INSERT INTO table_name VALUES (V1, V2, …, VN); Inserisce la n-upla (v1, …, vn) nella tabella. INSERT INTO table_name (f1, …, fn) SELECT field1, …, fieldin FROM table1, …, tablem; Inserisce una selezione di uno o più records nella tabella. DELETE Per cancellare uno o più record da una tabella: DELETE FROM table_name WHERE condizione; Per svuotare una tabella in maniera definitiva: TRUNCATE TABLE table_name; UPDATE UPDATE table_name SET field1 = value1, field2 = value2, … fieldn = valuen WHERE condition; UPDATE table_name SET (field1, field2, …,fieldn) = (select fi1, …, fin from table1, …, tablem where condition) Deve restituire WHERE condition; una riga! Transazione Cos’è una transazione? TRANSAZIONE COMMIT COMMIT E’ un’unità logica di lavoro E’ una sequenza di comandi SQL che il DBMS tratta come una singola entità Transazione Quando comincia una transazione ? Implicitamente all’apertura di una sessione del DBMS Implicitamente quando finisce la transazione precedente Transazione Quando finisce una transazione ? Nel momento in cui le modifiche sono rese permanenti da: Un COMMIT esplicito Una normale chiusura di sessione Un comando DDL o quando le modifiche vengono annullate da: Un ROLLBACK esplicito Un’ uscita brutale dal programma Una caduta di sistema Transazione Cosa succede? TRANSAZIONE COMMIT COMMIT Finchè non confermiamo: possiamo vedere le modifiche nelle queries gli altri utenti non possono vederle possiamo cancellare la transazione o solo parte di essa COMMIT o ROLLBACK SELECT select … from … where … Seleziona tutti i dipendenti che abitano in provincia di Milano select * from Personale where Prov = ‘MI’; Seleziona tutte le province del personale: select distinct Prov from Personale; Condizioni di ricerca Seleziona l’elenco dei dipendenti che sono stati assunti tra il 3/3/97 e il 3/3/98 select Cognome, Nome, Funzione from Personale where assunzione between 03/03/97 and 03/03/98; Seleziona i dipendenti della provincia di Milano e di Como select Cognome, Nome, Funzione from Personale where Prov IN (‘MI’, ‘CO’); Condizioni di ricerca Selezionare gli impiegati il cui cognome inizia per ‘Ros’ Select Cognome, Nome from Personale where Cognome like ‘Ros%’; Interrogazioni nidificate Seleziona l’elenco dei dipendenti che hanno uno stipendio inferiore alla media: Select Cognome, Nome from Personale where Stipendio < (Select AVG(Stipendio) from Personale); Ordinamento Seleziona l’elenco dei dipendenti ordinandolo per cognome: Select Cognome, Nome, Funzione from Personale order by Cognome (ASC); Aggregazioni Seleziona la lista delle funzioni dei dipendenti con la somma degli stipendi e il numero di dipendenti appartenenti alle varie funzioni: Select Funzione, SUM(Stipendio), count(*) from Personale group by Funzione; Esercizio All’inizio dell’anno scolastico un rappresentante di libri vuole avere una quadro riassuntivo dell’anno scolastico precedente riguardo i libri adottati nelle varie classi dei vari istituti. In particolare, si vuole avere a disposizione un report dove per ogni libro sia associato l’istituto ed il numero di classi (dell’istituto) che ha adottato il libro. Esercizio Esercizio Libri CODICE TITOLO DESCR. 2002 Adottati CODICE_LIBRO ID_CLASSE ANNO Classe ID ANNO SEZIONE Istituto ID NOME DESCR. ID_ISTITUTO Esercizio select titolo, istituto, numero from (select libri.titolo as titolo, istituto.nome as istituto, count(*) as numero from libri, classi, adottati, istituto where libri.codice = adottati.codice_libro and adottati.id_classe = classi.id and classi.id_istituto = istituto.id and adottati.anno = 2002 group by titolo, istituto) order by titolo, istituto; FINE