metodologie e statistiche
Ambientali”
◊ Introduzione a SQL
◊ Le tipologie di istruzioni ed i comandi
principali in SQL
◊ Le tipologie di dati in Oracle
◊ Esempi ed esercizi
Cecilia Colasanti 1
SQL base e avanzato nel “Progetto
metodologie e statistiche
Ambientali”
◊ La gestione delle utenze in Oracle: Utenti,
Privilegi e Ruoli
◊ La gestione dei dati in Oracle: il dizionario dei dati
◊ Il prodotto standard di interfaccia con Oracle: SQL
Plus
◊ Esempi ed esercizi
Cecilia Colasanti 2
Introduzione a SQL
SQL (Structured Query Language) è il linguaggio
standard per la manipolazione dei database su
qualsiasi DBMS.
Nasce in ambiente IBM negli anni ’70 all’interno del
progetto di System R.
SQL costituisce uno standard ed è stato adottato
dall’International Standards Organization (ISO) e
dall’American National Standards Istitute (ANSI).
Cecilia Colasanti 3
Introduzione a SQL
Utilizzato in ambienti diversi come Oracle, Informix,
Ingres, SQL Server, DB2, R*, Starburst,…, lo
standard si limita alla sintassi ed al nome dei
comandi, ma ogni DBMS parla un dialetto che si
differenzia sia pur minimamente dagli altri. Alcuni
DBMS, ad esempio, utilizzano dei comandi
proprietari di quello stesso DBMS che non esistono
su altri programmi.
Cecilia Colasanti 4
Introduzione a SQL
Con SQL è possibile creare una tabella,
modificarne la struttura o cancellarla.
E' possibile effettuare ricerche più o meno
precise tra i record di una tabella, inserire
nuovi dati, modificare o cancellare dati
esistenti.
E' anche possibile mettere in relazione due o
più tabelle in funzione della struttura delle
stesse e delle esigenze.
Cecilia Colasanti 5
Introduzione a SQL
Cecilia Colasanti 6
Introduzione a SQL
Cecilia Colasanti 7
Le tipologie di istruzioni ed i
comandi principali in SQL
Come un qualsiasi linguaggio di
programmazione, anche SQL utilizza una
serie di simboli atti a definire uguaglianze, a
fare confronti e calcoli.
Per questo esistono gli operatori e si fa
riferimento ai tipi di dato che può assumere
un campo.
Cecilia Colasanti 8
Le tipologie di istruzioni ed i
comandi principali in SQL
Definiamo gli operatori messi a disposizione dagli
standard SQL.
Gli operatori si dividono in quattro categorie:
•Operatori di confronto
•Operatori aritmetici
•Operatori condizionali
•Operatori logici
Cecilia Colasanti 9
Le tipologie di istruzioni ed i
comandi principali in SQL
Cecilia Colasanti 10
Le tipologie di istruzioni ed i
comandi principali in SQL
= Esprime uguaglianza tra due valori
LIKE Esprime somiglianza tra due valori
< Stabilisce che un valore è minore di un
altro
> Stabilisce che un valore è maggiore di
un altro
Cecilia Colasanti 11
Le tipologie di istruzioni ed i
comandi principali in SQL
<= Stabilisce che un valore è minore o
uguale di un altro
>= Stabilisce che un valore è maggiore o
uguale di un altro
<> Stabilisce che due valori sono diversi
tra loro
BETWEEN Recupera un valore compreso tra due
valori
Cecilia Colasanti 12
Le tipologie di istruzioni ed i
comandi principali in SQL
Cecilia Colasanti 13
Le tipologie di istruzioni ed i
comandi principali in SQL
+ Effettua un'addizione
- Effettua una sottrazione
* Effettua una moltiplicazione
Cecilia Colasanti 14
Le tipologie di istruzioni ed i
comandi principali in SQL
Cecilia Colasanti 15
Le tipologie di istruzioni ed i
comandi principali in SQL
Gli operatori logici di SQL sono AND e OR
e servono rispettivamente ad indicare alla
ricerca di restituire dati in cui due (o più)
valori devono rispettivamente: essere
entrambi (o tutti) trovati oppure almeno uno
dei due (o più) valori devono essere trovati.
Cecilia Colasanti 16
Introduzione a SQL
I comandi SQL possono essere classificati
secondo 5 grandi categorie:
Cecilia Colasanti 18
Introduzione a SQL
QML/Query manipulation language
Interroga il DB selezionando determinati dati da
tabelle, viste o altri oggetti
Select
Cecilia Colasanti 19
Introduzione a SQL
DTL/Data translation language
Controlla le transazioni. Le rende permanenti
(commit), le ignora (rollback) o identifica un
punto all’interno del blocco a cui si può
tornare (savepoint)
Commit – Rollback - Savepoint
Cecilia Colasanti 20
Introduzione a SQL
Cecilia Colasanti 21
Le tipologie di istruzioni ed i
comandi principali in SQL
Anche se non abbiamo introdotto ancora il DB
Oracle, i suoi strumenti proprietari ed i suoi oggetti,
Oracle è il nostro DB di riferimento. Per fare esercizi
ed usare gli operatori ed i comandi SQL useremo un
server su cui è installato Oracle ed useremo comandi
SQL che valgono per ogni DB e comandi SQL*Plus
che valgono solo per Oracle. Ogni volta ciò sarà
specificato.
Cecilia Colasanti 22
Le tipologie di dati in Oracle
Il linguaggio SQL relativamente al DB Oracle
supporta i seguenti tipi di dato:
CHAR(n): Stringa costituita esattamente da n
caratteri; se la lunghezza effettiva della stringa e’ m
< n, Oracle aggiunge in coda al record n-m caratteri
vuoti
VARCHAR2(n): Stringa costituita al massimo da n
caratteri. Non puo’ comunque eccedere la lunghezza
di 2000 caratteri
Cecilia Colasanti 23
Le tipologie di dati in Oracle
LONG: Puo’ contenere stringhe lunghe fino a
2GB. E’ utile ma ha diverse limitazioni (una
tabella puo’ contenere solo un campo LONG,
non si possono fare ricerche su sottostringhe
al suo interno, ecc...)
NUMBER: Dati di tipo numerico. Accetta
numeri interi o decimali purche’ il numero
complessivo di cifre sia al massimo 38.
Cecilia Colasanti 24
Le tipologie di dati in Oracle
NUMBER(p): Accetta solo numeri interi con
un numero massimo di p cifre
NUMBER(p,s): p=precision,num. max.cifre
s= scale, num. max di cifre decimali
DECIMAL (p,s): E’ sinonimo di NUMBER
(p,s)
INTEGER o SMALLINT: Sono sinonimi di
NUMBER(38)
Cecilia Colasanti 25
Le tipologie di dati in Oracle
DATE: Usato per contenere informazioni su data e
tempo, piu’ precisamente su: secolo, anno, mese,
giorno, ora, minuto, secondo
E’ possibile selezionare un campo DATE con
numerosissimi formati
ROWID: Tipo di dato particolare che e’ restituito
dalla pseudo-colonna ROWID e che rappresenta l'
indirizzo fisico del record. E' normalmente
visualizzato in esadecimale.
Cecilia Colasanti 26
Le tipologie di dati in Oracle
RAW(n): Stringa binaria della lunghezza
specificata (max 2000 bytes). Puo’ essere
utilizzato per memorizzare su tabelle
programmi applicativi in altri linguaggi o
immagini grafiche.
LONG RAW: Stringa binaria come RAW,
con caratteristiche simili al tipo LONG.
Cecilia Colasanti 27
Le tipologie di istruzioni ed i
comandi principali in SQL
Cecilia Colasanti 28
Il prodotto standard di interfaccia
con Oracle: SQL Plus
telnet dbsrv
sqlplus
digitare login/password (cecilia/…)
Per cambiare la password si usa
alter user cecilia identified by <new
password>
Cecilia Colasanti 29
Il prodotto standard di interfaccia
con Oracle: SQL Plus
Se si è già “dentro” sqlplus e si vuole
cambiare utente si usa
connect login/passwd
oppure
connect login e poi viene richiesta una
password
Cecilia Colasanti 30
Le tipologie di istruzioni ed i
comandi principali in SQL
Quando si accede ad un database di cui non si
conosce nulla, la prima cosa da fare è:
select * from cat;
Con questo comando si visualizzano tutte le
tavole presenti nel database relativamente ad
un certo utente.
Cecilia Colasanti 31
Il prodotto standard di interfaccia
con Oracle: SQL Plus
Per avere un file dove siano scritti tutti i
comandi sqlplus digitati ed il relativo output,
si usa il comando:
Cecilia Colasanti 32
Le tipologie di istruzioni ed i
comandi principali in SQL
Scopo dei seguenti esercizi è creare una
piccola simulazione di un DB con una serie di
tabelle che gestiscano i clienti ed i relativi
conti in una banca. Si vedrà in particolare
come i clienti, i conti ed i relativi movimenti
siano legati tra loro. In questo modo saranno
usati i principali comandi SQL.
Cecilia Colasanti 33
Le tipologie di istruzioni ed i
comandi principali in SQL
Creare la tabella “clienti” avente i campi: codice,
nominativo, data di nascita, luogo di nascita.
Cecilia Colasanti 34
Il prodotto standard di interfaccia
con Oracle: SQL Plus
Per ripetere l’ultimo comando digitare ‘l'
Per sostituire una parola nell’ultimo comando
si usa 'l‘ seguita da 'c‘ simbolo < parola da
sostituire > simbolo < sostituzione >
Per dare il comando con la sostituzione
digitare 'r '
Cecilia Colasanti 35
Le tipologie di istruzioni ed i
comandi principali in SQL
Cecilia Colasanti 36
Le tipologie di istruzioni ed i
comandi principali in SQL
Cecilia Colasanti 37
Le tipologie di istruzioni ed i
comandi principali in SQL
Creare la tabella “conti” avente i campi:
•codice che deve essere chiave primaria
•cod_cli che deve far riferimento al codice
della tabella clienti
•data_acc
•data_est
•tipo_con – che accetta solo i valori A,M,C
Cecilia Colasanti 38
Le tipologie di istruzioni ed i
comandi principali in SQL
create table conti (codice number (5),
cod_cli number (4), data_acc date, data_est
date, tipo_con varchar2(1)); crea la tabella
conti
alter table conti add constraint
pk_conti_codice primary key (codice);
codice è chiave primaria per conti
Cecilia Colasanti 39
Le tipologie di istruzioni ed i
comandi principali in SQL
alter table conti add constraint fk_conti_cod_cli
foreign key (cod_cli) references clienti (codice);
cod_cli fa riferimento al campo codice della tabella
clienti
alter table conti add constraint ck_conti_tipo_con
check (tipo_con in (‘A’,’M’,’C’));
tipo_con accetta solo i valori A, M, C
commit;
Cecilia Colasanti 40
Le tipologie di istruzioni ed i
comandi principali in SQL
Creare la tabella “temp” con la seguente
struttura:
•col1 -> number(5)
•col2 -> number(5)
•message -> varchar2(15)
Cecilia Colasanti 41
Le tipologie di istruzioni ed i
comandi principali in SQL
commit;
Cecilia Colasanti 42
Le tipologie di istruzioni ed i
comandi principali in SQL
Creare la tabella “movimenti” avente i campi:
•cod_con -> number(5)
•data -> date
•importo -> number(12)
•tipo -> char(1) che accetta solo i valori A,I,G
tenuto conto che:
Cecilia Colasanti 43
Le tipologie di istruzioni ed i
comandi principali in SQL
non deve essere possibile inserire il codice di
un conto se questo non è presente nella tabella
conti (praticamente cod_con deve far
riferimento al campo codice della tabella
“conti”) e che se cancelliamo un conto dalla
riga della tabella conti i relativi movimenti
dovranno essere cancellati anch’essi.
Cecilia Colasanti 44
Le tipologie di istruzioni ed i
comandi principali in SQL
create table movimenti (cod_con number(5), data date,
importo number(12), tipo varchar2(1));
Cecilia Colasanti 45
Le tipologie di istruzioni ed i
comandi principali in SQL
alter table movimenti add constraint
ck_movimenti check (tipo in (‘A’,’I’,’G’));
tipo accetta solo i valori ‘A’, ’I’, ‘G’
commit;
Cecilia Colasanti 46
Le tipologie di istruzioni ed i
comandi principali in SQL
Aumentare a 30 l'ampiezza della colonna
nominativo della tabella « clienti »
Cecilia Colasanti 47
Le tipologie di istruzioni ed i
comandi principali in SQL
Aggiungere la colonna data_inser (di tipo
data) alla tabella clienti
Cecilia Colasanti 48
Le tipologie di istruzioni ed i
comandi principali in SQL
Rendere col1 nella tabella “temp” chiave primaria ed
eliminare dopo questa condizione
Cecilia Colasanti 49
Le tipologie di istruzioni ed i
comandi principali in SQL
Eliminare la tabella “temp”
Cecilia Colasanti 50
Le tipologie di istruzioni ed i
comandi principali in SQL
Popolare tutti i campi della tabella “clienti” con due nominativi:
commit;
Cecilia Colasanti 51
Le tipologie di istruzioni ed i
comandi principali in SQL
Popolare i campi codice, cod_cli e tipo_con di “conti”
tenendo presenti i limiti imposti dall’esercizio precedente
insert into conti (codice, cod_cli, tipo_con) values (22222,
7301, ‘A’);
serve a far vedere come posso inserire in una tabella meno
campi di quelli che la tabella ha
commit;
Cecilia Colasanti 52
Le tipologie di istruzioni ed i
comandi principali in SQL
Popolare la tabella “movimenti” e verificare che i vincoli
imposti precedentemente siano rispettati.
Cecilia Colasanti 53
Le tipologie di istruzioni ed i
comandi principali in SQL
Cancellare dalla tabella “conti” una riga e vedere che
anche nella tabella “movimenti” la riga
corrispondente è stata cancellata
Cecilia Colasanti 55
Le tipologie di istruzioni ed i
comandi principali in SQL
A partire dalle tabelle “clienti”, “conti” e
“movimenti”, cercare il tipo di conto (campo
tipo della tabella movimenti) di cecilia
colasanti
select tipo from movimenti where cod_con
in (select codice from conti where cod_cli in
(select codice from clienti where
nominativo like ‘cec%’));
Cecilia Colasanti 56
Le tipologie di istruzioni ed i
comandi principali in SQL
Visualizzare dalla tabella “movimenti” tutti gli importi il cui
valore è compreso tra 1 e 10
l
c ?1 and 10?4999 and 7001
r
Cecilia Colasanti 57
Le tipologie di istruzioni ed i
comandi principali in SQL
Visualizzare dalla tabella “movimenti” tutti
gli importi il cui valore è uguale a 5
Cecilia Colasanti 58
Le tipologie di istruzioni ed i
comandi principali in SQL
Visualizzare dalla tabella “movimenti” tutti
gli importi il cui valore è uguale a 5 oppure a
6
Cecilia Colasanti 59
Le tipologie di istruzioni ed i
comandi principali in SQL
Visualizzare dalla tabella “clienti” tutti i nominativi che
contengono la sottostringa cec, tutti quelli esattamente uguali
a cec e tutti quelli che non contengono la sottostringa cec
Cecilia Colasanti 60
Le tipologie di istruzioni ed i
comandi principali in SQL
Nella tabella “clienti” porre il nominativo con la sola
prima lettera maiuscola per tutte le persone il cui
codice è maggiore di 1000
commit;
Cecilia Colasanti 61
Le tipologie di istruzioni ed i
comandi principali in SQL
Inserire una riga nella tabella “clienti”
commit;
Cecilia Colasanti 62
Le tipologie di istruzioni ed i
comandi principali in SQL
Cancellare dalla tabella “clienti” tutti quelli la cui
data di nascita è inferiore al 1 gennaio 1950 oppure il
cui cognome sia verde
commit;
Cecilia Colasanti 63
Le tipologie di istruzioni ed i
comandi principali in SQL
Selezionare i campi nominativo e data di
nascita dalla tabella “clienti”.
Cecilia Colasanti 64
Le tipologie di istruzioni ed i
comandi principali in SQL
Selezionare rownum, nominativo e user dalla
tabella “clienti” dove rownum è il numero
delle righe e user indica l’utente connesso al
database in questo momento
select rownum, nominativo, user from
clienti;
Cecilia Colasanti 65
Le tipologie di istruzioni ed i
comandi principali in SQL
Nella tabella clienti cambiare la data di
inserimento da quella che c’è a 01-01-2004
Cecilia Colasanti 66
Le tipologie di istruzioni ed i
comandi principali in SQL
Dopo aver inserito un campo nella tabella “clienti”
con il nominativo scritto con le lettere maiuscole,
visualizzare solo i nominativi scritti con le lettere
maiuscole.
insert into clienti (codice, nominativo) values
(7306,‘CECILIA COLASANTI’);
Cecilia Colasanti 67
Le tipologie di istruzioni ed i
comandi principali in SQL
Elencare tutti i record della tabella « clienti »
ordinati per nominativo (e nominativo in ordine
inverso)
Cecilia Colasanti 68
Definizione di DataBase
Cecilia Colasanti 69
Definizione di DataBase
Ogni DB possiede un sistema di gestione per le
informazioni memorizzate.
Oracle è un DB relazionale (RDBMS).
RDBMS rappresenta proprio il sistema di gestione
del DB relazionale e si compone di:
•Software di gestione del DB relazionale (kernel)
•Linguaggio SQL per l’accesso ai dati
Cecilia Colasanti 70
Definizione di DataBase
Cecilia Colasanti 71
Kernel
Cecilia Colasanti 72
Tool Oracle
Sono strumenti proprietari Oracle che permettono di
effettuare agevolmente le principali operazioni su un
DB. Troviamo ad esempio:
SQL*DBA per le operazioni di amministrazione del
DB
SQL*Loader per il carico nel DB dei dati letti da un
file ASCII
SQL*Plus per l’esecuzione di statement SQL e
blocchi PL/SQL
Cecilia Colasanti 73
Tool Oracle
Cecilia Colasanti 74
Oggetti Oracle
Tabelle: oggetto dello schema in cui vengono
memorizzati i dati composta da righe (tuple) e
colonne (attributi)
Indici: oggetto che contiene un entry ordinato per
ogni elemento presente in una o più colonne
indicizzate della tabella
Sequenze: generatore di valori interi che possono
essere impostati come non ripetibili (utili per la
chiave primaria)
Sinonimi: oggetto usato per rinominare un oggetto
già esistente
Cecilia Colasanti 75
Oggetti Oracle
Viste: selezione dinamica di informazioni
provenienti da una o più tabelle diverse
Cluster: oggetto contenente una o più tabelle che
hanno in comune almeno una colonna
Snapshot: fotografia statica in sola lettura dei dati
(remoti) nel nodo proprio locale. I dati vengono
aggiornati periodicamente con un refresh
Store Procedure e Function: blocchi di comandi
PL/SQL eseguibili dall’utente memorizzati
all’interno del DB
Cecilia Colasanti 76
Oggetti Oracle
Cecilia Colasanti 77
La gestione delle utenze in
Oracle: Utenti, Privilegi e Ruoli
Il sistema informatico costituito dalla base dei
dati e dal suo sistema di gestione è in generale
complesso. Il DBA (Data Base Administrator)
è la persona che si occupa della gestione
dell’intero sistema del database, dalla
creazione degli utenti, all’assegnazione degli
spazi, al backup, e così via.
Cecilia Colasanti 78
La gestione delle utenze in Oracle:
Utenti, Privilegi e Ruoli
In realtà esistono tre utenti amministratori:
internal – ha i massimi privilegi compreso
start e stop del DB. Internal può essere usato
solo dall’utente UNIX che ha installato il DB.
L’utente internal non ha una password quindi
chi ha installato il DB entra con la sua
password UNIX e poi come internal
Cecilia Colasanti 79
La gestione delle utenze in Oracle:
Utenti, Privilegi e Ruoli
sys – è il proprietario del dizionario dei dati.
Ha gli stessi privilegi di internal ma non ha la
possibilità di restart del DB
system – è simile a sys. System lavora con i
privilegi che gli dà sys. System viene usato ad
esempio per creare utenti, tablespace, etc.
Tutto ciò è assolutamente trasparente per
l’utente finale.
Cecilia Colasanti 80
La gestione delle utenze in Oracle:
Utenti, Privilegi e Ruoli
Vediamo i comandi dati da un DBA per
creare un utente ed assegnargli uno spazio.
Cecilia Colasanti 81
La gestione delle utenze in Oracle:
Utenti, Privilegi e Ruoli
create tablespace <dati_cecilia> datafile
‘</usr/oracle/MODELMART/temp/dati01_
CECILIA.dbf>’ size <10M>;
Poi si crea un utente che si chiama cecilia, che
si appoggia sulla tablespace dati_cecilia, che
usa un tablespace di appoggio temp e che può
scrivere su tutto dati_cecilia, tramite
Cecilia Colasanti 82
La gestione delle utenze in Oracle:
Utenti, Privilegi e Ruoli
create user <cecilia> identified by <cecilia>
default tablespace <dati_cecilia>
temporary tablespace <temp> quota
unlimited on <dati_cecilia>;
Cecilia Colasanti 84
La gestione delle utenze in Oracle:
Utenti, Privilegi e Ruoli
Cecilia Colasanti 85
La gestione dei dati in Oracle: il
dizionario dei dati
Il database Oracle possiede al suo interno il
cosiddetto data dictionary generato al momento
della creazione del database. E' formato da una serie
di tabelle e viste di sistema (proprieta’ dell' utente
SYS) a disposizione degli utenti per la consultazione
di tutte le informazioni necessarie per una completa
e corretta gestione del database. La tabella che
descrive tutto il dizionario dati si chiama
DICTIONARY.
Cecilia Colasanti 86
Il prodotto standard di interfaccia
con Oracle: SQL Plus
Cecilia Colasanti 87
Il prodotto standard di interfaccia
con Oracle: SQL Plus
Regole per i comandi SQL*PLUS:
-i comandi possono essere scritti indifferentemente
in maiuscolo oppure in minuscolo
-devono essere scritti su una unica riga e se scritti su
più righe ognuna di queste deve terminare con un “-”
-possono essere abbreviati
-non vengono memorizzati nel buffer
-restano attivi fino alla chiusura della sessione di
lavoro
-non terminano con il simbolo “;”
Cecilia Colasanti 88
Il prodotto standard di interfaccia
con Oracle: SQL Plus
Elenco di alcuni comandi:
Cecilia Colasanti 91
Cecilia Colasanti
06.46732211
cecilia.colasanti@istat.it
Cecilia Colasanti 92