Presentazione di PowerPoint - Dipartimento di Matematica e

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