SCUOLA INTERUNIVERSITARIA SICILIANA DI SPECIALIZZAZIONE PER LINSEGNAMENTO SECONDARIO Classe di Concorso: 42A Massimo Mancino MODULO DIDATTICO - Ambienti Software - - Per Database - Docente: Prof. Cantone
Il modulo, proposto per una quinta classe Indirizzo Informatico, mira a presentare agli alunni due strumenti software per DBMS (SQL e MS ACCESS). Ambienti software per database
Unità didattica 1 Il linguaggio SQL Unità didattica 2 Microsoft Access Composizione del modulo
Unità didattica 1 Il Linguaggio SQL
Gli studenti dovranno dimostrare di avere: Prerequisiti 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 lintegrità dei dati
LEZIONE FRONTALE LEZIONE DIALOGATA Metodologie
AULA LABORATORIO Spazi AZIENDA
LIBRO DI TESTO ED APPUNTI COMPUTER LAVAGNA LUMINOSA PROIETTORE Strumenti
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 Verifiche
Sia di tipo formativo e quindi in relazione allapplicazione, allimpegno, allattenzione, al metodo di lavoro che ogni studente avrà mostrato durante lattività didattica La valutazione sarà: 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 Valutazione
Unità Didattica Ore di Lezione Ore di Laboratorio Ore di Verifica Ore di Recupero e/o Potenziamento U.D Tempi
Storia Structured Query Language (solitamente pronunciato "sequel"). 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. 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.
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 lintegrazione 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) DateData nella forma MM/GG/AA TimeOra nella forma HH:MM IntegerNumero intero con precisione 10 SmallintNumero intero con precisione 5 RealNumero reale con mantissa di precisione 7 FloatNumero reale con mantissa di precisione 15
Istruzioni DDL: CREATE, DROP e ALTER TABLE DML: INSERT, DELETE e UPDATE TRANSAZIONI: COMMIT, ROLLBACK e SAVEPOINT DQL: SELECT SICUREZZA: GRANT e REVOKE
CREATE Crea una nuova tabella nella base di dati CREATE TABLE … Crea una nuova vista nella base di dati CREATE VIEW … Crea un nuovo indice su uno o più attributi di una tabella CREATE INDEX …
CREATE TABLE CREATE TABLE table_name ( field 1 type 1 [default] [constraint 1 ], field 2 type 2 [default] [constraint 2 ], … field n type n [default] [constraint n ] ); Per creare una nuova tabella nella base di dati:
Esempio - CREATE TABLE Diagramma Entità-Relazione Magazzino(ID, Descrizione); Prodotti(Codice, Descrizione, Prezzo); Contiene(ID_Magazzino, Codice_Prodotto); Modello Relazionale
Esempio - CREATE TABLE create table Magazzino ( id integer primary key, descrizione char[100] ); create table Prodotti ( codice integer primary key, descrizione char[100], prezzo integer, id_magazzino integer, foreign key (id_magazzino) references Magazzino(id) ); Master Child
CREATE TABLE…AS… CREATE TABLE table_name AS SELECT filed 1, field 2, …, filed n FROM table_name WHERE condizione; Per creare una nuova tabella da una già esistente nella basi di dati
DROP Rimuove la tabella dalla base di dati e i relativi indici DROP TABLE table_name; Rimuove la vista dalla base di dati DROP VIEW view_name; Rimuove lindice dalla rispettiva tabella DROP INDEX index_name;
ALTER TABLE Aggiunge una o più colonne alla tabella ALTER TABLE table_name ADD (col_name type [constraint]); Modifica il tipo di una o più colonne della tabella ALTER TABLE table_name MODIFY (col_name type [constraint]); Rimuove una o più colonne della tabella ALTER TABLE table_name DROP (col_name);
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 (V 1, V 2, …, V N ); Inserisce la n-upla (v 1, …, v n ) nella tabella. INSERT INTO table_name (f 1, …, f n ) SELECT field 1, …, field in FROM table 1, …, table m ; Inserisce una selezione di uno o più records nella tabella.
DELETE DELETE FROM table_name WHERE condizione; Per cancellare uno o più record da una tabella: Per svuotare una tabella in maniera definitiva: TRUNCATE TABLE table_name;
UPDATE UPDATE table_name SET field 1 = value 1, field 2 = value 2, … field n = value n WHERE condition; UPDATE table_name SET (field 1, field 2, …,field n ) = (select f i1, …, f in from table 1, …, table m where condition) WHERE condition; Deve restituire una riga!
Transazione E ununità logica di lavoro E una sequenza di comandi SQL che il DBMS tratta come una singola entitàTRANSAZIONECOMMITCOMMIT Cosè una transazione?
Transazione Quando comincia una transazione ? Implicitamente allapertura 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? Finchè non confermiamo: possiamo vedere le modifiche nelle queries gli altri utenti non possono vederle possiamo cancellare la transazione o solo parte di essa TRANSAZIONECOMMITCOMMITCOMMIT 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 lelenco 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 lelenco dei dipendenti che hanno uno stipendio inferiore alla media: Select Cognome, Nome from Personale where Stipendio < (Select AVG(Stipendio) from Personale);
Ordinamento Seleziona lelenco 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 Allinizio dellanno scolastico un rappresentante di libri vuole avere una quadro riassuntivo dellanno 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 listituto ed il numero di classi (dellistituto) che ha adottato il libro.
Esercizio
CODICETITOLODESCR. IDANNOSEZIONEID_ISTITUTO IDNOMEDESCR. CODICE_LIBROID_CLASSEANNO Libri Adottati Classe Istituto 2002
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