1. 22/07/04 Ing. Ronchi Sergio 1
LE VISTE LOGICHE
In Oracle è possibile memorizzare all’interno del database delle query
anche complesse. Tali Viste saranno le informazioni che gli utenti
potranno vedere.
CREATE OR REPLACE VIEW EmpManager AS
SELECT e.ename employee, e.job job,
e.sal salary, bos.ename manager
FROM emp e, emp bos
WHERE e.mgr=bos.empno(+)
(L’uso degli alias è indispensabile per assegnare nomi univoci alle colonne
della vista)
Creata la vista è possibile usarla come se fosse una tabella:
SELECT * FROM EmpManager
Le viste possono essere eliminate come una tabella:
DROP View EmpManager
Il data dictionary per le viste è USER_VIEWS
2. 22/07/04 Ing. Ronchi Sergio 2
LE SEQUENZE
Le sequenze sono dei generatori di serie numeriche automatiche che possono essere usate all’occorrenza
nei nostri programmi:
CREATE SEQUENCE customers_seq //sequenza che parte da 1000 e
incrementa di 1
START WITH 1000
INCREMENT BY 1;
CREATE SEQUENCE contatore //sequenza che parte da 5 e cicla
incrementando di 1
MINVALUE 1 // tra 1 e 10
START WITH 5 //CACHE 5 sono I numero precalcolati
deve essere
INCREMENT BY 1 //un valore inferiore al range 1…10
MAXVALUE 10
CACHE 5
CYCLE
(Le squenze possono essere modificate con ALTER ed eliminate con DROP)
Le sequenze possono essere usate tramite il loro nome e NEXTVAL oppure CURVAL
SELECT contatore.NEXTVAL FROM DUAL //provoca anche l’avanzamento
SELECT contatore.CURRVAL FROM DUAL //la sequenza non avanza
Il data dictionary per le sequenze è USER_SEQUENCES
3. 22/07/04 Ing. Ronchi Sergio 3
I SINONIMI
E’ possibile creare un sinonimo per qualsiasi oggetto del database (tabelle, viste, procedure,…)
CREATE SYNONYM offices
FOR hr.locations; //viene creato un sinonimo per
la tabella location
//che si trova nello schema hr.
CREATE PUBLIC SYNONYM emp_table //L’amministratore può
creare un sinonimo
FOR oe.employees@remote.us.oracle.com; //pubblico per una
tabella che si trova
//in un database remoto
Il data dictionary per I sinonimi è USER_SYNONYMS
4. 22/07/04 Ing. Ronchi Sergio 4
TIPI DI DATI DEFINITI DALL’UTENTE
Oracle è un database che permette uno sviluppo Object Oriented. La base di questo approccio è
la possibilità di definire tipi personalizzati:
CREATE TYPE name_info AS OBJECT
(ename VARCHAR2(20),
address VARCHAR2(50),
city VARCHAR2(25)
)
Il data dictionary per I tipi è USER_TYPES
I tipi possono essere usati come quelli predefiniti:
CREATE TABLE employee
(empid NUMBER(4),
info NAME_INFO)
L’inserimento dati avverrà così:
INSERT INTO employee VALUES(100,
name_info(‘John Smith’,’12 St. Paul road’,’London’))
5. 22/07/04 Ing. Ronchi Sergio 5
Tablespace
Un database Oracle è costituito da spazi tabella
Oltre ai tablespace predefiniti è possibile crearne
altri. I tablespace corrispondono a file fisici.
CREATE TABLESPACE app_space
DATAFILE c:oracleoradataorclapp.dbf SIZE10M
DEFAULT STORAGE
(INITIAL 1M NEXT 5M
MINEXTENT 1 MAXEXTENT 100) ONLINE
In seguito creando delle tabelle è possibile assegnare queste a un determinato
Tablespace
6. 22/07/04 Ing. Ronchi Sergio 6
ROLLUP e CUBE
Le funzioni di raggruppamento già viste possono essere ulteriormente estese da ROLLUP e
CUBE.
ROLLUP permette di ottenere dei sottototali, CUBE permette ti ottenere totali incorociati
SELECT DEPTNO, JOB, SUM(SAL)
FROM EMP
WHERE DEPTNO<60
GROUP BY ROLLUP (DEPTNO,JOB);
SELECT DEPTNO, JOB, SUM(SAL)
FROM EMP
WHERE DEPTNO<60
GROUP BY CUBE (DEPTNO,JOB);
7. 22/07/04 Ing. Ronchi Sergio 7
Creazione di Indici
Gli indici in Oracle sono molto complessi. In generale comunque servono per recuperare più
velocemente le informazioni. E’ consigliabile definire un indice su una colonna con quella
colonna nella WHERE si ottiene meno del 5% delle righe totali, oppure se quella colonna
viene usata frequentemente nelle condizioi WHERE e nelle JOIN, oppure ancora se quella
colonna contiene una buova varietà di valori diversi o valori nulli. La creazione degli indici,
se velocizza le SELECT, rallenta le operazioni di UPDATE e INSERT
CREATE INDEX emp_hiredate ON emp(hiredate)
CREATE UNIQUE INDEX agente ON Agenti(Codice,Area)
Il data dictionary per gli indici è USER_INDEXES