SlideShare a Scribd company logo
1 of 7
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
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
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
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’))
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
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);
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

More Related Content

Viewers also liked (11)

Java lezione 14
Java lezione 14Java lezione 14
Java lezione 14
 
Design Patterns
Design PatternsDesign Patterns
Design Patterns
 
Java lezione 8
Java lezione 8Java lezione 8
Java lezione 8
 
Oracle 3 (sq lnet)
Oracle 3 (sq lnet)Oracle 3 (sq lnet)
Oracle 3 (sq lnet)
 
Java Lezione 1
Java Lezione 1Java Lezione 1
Java Lezione 1
 
Oracle PL sql 2
Oracle PL sql 2Oracle PL sql 2
Oracle PL sql 2
 
Java lezione 15
Java lezione 15Java lezione 15
Java lezione 15
 
Sql 3
Sql 3Sql 3
Sql 3
 
Java lezione 19
Java lezione 19Java lezione 19
Java lezione 19
 
Oracle PL sql 3
Oracle PL sql 3Oracle PL sql 3
Oracle PL sql 3
 
Java lezione 10
Java lezione 10Java lezione 10
Java lezione 10
 

Similar to Sql 4

Py a6 python-database
Py a6 python-databasePy a6 python-database
Py a6 python-databaseMajong DevJfu
 
Sencha touch: Sviluppare un'app - 4° parte
Sencha touch: Sviluppare un'app - 4° parteSencha touch: Sviluppare un'app - 4° parte
Sencha touch: Sviluppare un'app - 4° parteGiuseppe Toto
 
Deftcon 2012 - Meo Bogliolo - SQLite Forensics
Deftcon 2012 - Meo Bogliolo - SQLite ForensicsDeftcon 2012 - Meo Bogliolo - SQLite Forensics
Deftcon 2012 - Meo Bogliolo - SQLite ForensicsSandro Rossetti
 
Deftcon 2012 - Meo Bogliolo - SQLite Forensics
Deftcon 2012 - Meo Bogliolo - SQLite ForensicsDeftcon 2012 - Meo Bogliolo - SQLite Forensics
Deftcon 2012 - Meo Bogliolo - SQLite ForensicsDeft Association
 
Lezione 1 - Introduzione al VBA per Excel
Lezione 1 - Introduzione al VBA per ExcelLezione 1 - Introduzione al VBA per Excel
Lezione 1 - Introduzione al VBA per ExcelGiovanni Della Lunga
 
Note di Data Warehouse e Business Intelligence - Tecniche di Naming Conventio...
Note di Data Warehouse e Business Intelligence - Tecniche di Naming Conventio...Note di Data Warehouse e Business Intelligence - Tecniche di Naming Conventio...
Note di Data Warehouse e Business Intelligence - Tecniche di Naming Conventio...Massimo Cenci
 
Note di Data Warehouse e Business Intelligence - La gestione delle descrizioni
Note di Data Warehouse e Business Intelligence - La gestione delle descrizioniNote di Data Warehouse e Business Intelligence - La gestione delle descrizioni
Note di Data Warehouse e Business Intelligence - La gestione delle descrizioniMassimo Cenci
 
MySQL
MySQLMySQL
MySQLjekil
 
corso oracle plsql.ppt
corso oracle plsql.pptcorso oracle plsql.ppt
corso oracle plsql.pptssuserf7962d
 

Similar to Sql 4 (20)

Py a6 python-database
Py a6 python-databasePy a6 python-database
Py a6 python-database
 
Basi Di Dati 01
Basi Di Dati 01Basi Di Dati 01
Basi Di Dati 01
 
C3es
C3esC3es
C3es
 
Sencha touch: Sviluppare un'app - 4° parte
Sencha touch: Sviluppare un'app - 4° parteSencha touch: Sviluppare un'app - 4° parte
Sencha touch: Sviluppare un'app - 4° parte
 
Php e database: php mysql
Php e database: php mysqlPhp e database: php mysql
Php e database: php mysql
 
Deftcon 2012 - Meo Bogliolo - SQLite Forensics
Deftcon 2012 - Meo Bogliolo - SQLite ForensicsDeftcon 2012 - Meo Bogliolo - SQLite Forensics
Deftcon 2012 - Meo Bogliolo - SQLite Forensics
 
Deftcon 2012 - Meo Bogliolo - SQLite Forensics
Deftcon 2012 - Meo Bogliolo - SQLite ForensicsDeftcon 2012 - Meo Bogliolo - SQLite Forensics
Deftcon 2012 - Meo Bogliolo - SQLite Forensics
 
Lezione 1
Lezione 1Lezione 1
Lezione 1
 
Lezione 1 - Introduzione al VBA per Excel
Lezione 1 - Introduzione al VBA per ExcelLezione 1 - Introduzione al VBA per Excel
Lezione 1 - Introduzione al VBA per Excel
 
Oracle 1
Oracle 1Oracle 1
Oracle 1
 
Data Base In Open Office
Data Base In Open OfficeData Base In Open Office
Data Base In Open Office
 
Note di Data Warehouse e Business Intelligence - Tecniche di Naming Conventio...
Note di Data Warehouse e Business Intelligence - Tecniche di Naming Conventio...Note di Data Warehouse e Business Intelligence - Tecniche di Naming Conventio...
Note di Data Warehouse e Business Intelligence - Tecniche di Naming Conventio...
 
SQL Server2000
SQL Server2000SQL Server2000
SQL Server2000
 
Note di Data Warehouse e Business Intelligence - La gestione delle descrizioni
Note di Data Warehouse e Business Intelligence - La gestione delle descrizioniNote di Data Warehouse e Business Intelligence - La gestione delle descrizioni
Note di Data Warehouse e Business Intelligence - La gestione delle descrizioni
 
Office & VBA - Giorno 6
Office & VBA - Giorno 6Office & VBA - Giorno 6
Office & VBA - Giorno 6
 
Excel development e sql 2.1
Excel development e sql   2.1Excel development e sql   2.1
Excel development e sql 2.1
 
Office & VBA - Giorno 7
Office & VBA - Giorno 7Office & VBA - Giorno 7
Office & VBA - Giorno 7
 
MySQL
MySQLMySQL
MySQL
 
Oracle PL sql 1
Oracle PL sql 1Oracle PL sql 1
Oracle PL sql 1
 
corso oracle plsql.ppt
corso oracle plsql.pptcorso oracle plsql.ppt
corso oracle plsql.ppt
 

More from Sergio Ronchi (12)

Java lezione 18
Java lezione 18Java lezione 18
Java lezione 18
 
Java lezione 17
Java lezione 17Java lezione 17
Java lezione 17
 
Java lezione 16
Java lezione 16Java lezione 16
Java lezione 16
 
Java lezione 12
Java lezione 12Java lezione 12
Java lezione 12
 
Java lezione 7
Java lezione 7Java lezione 7
Java lezione 7
 
Java lezione 6
Java lezione 6Java lezione 6
Java lezione 6
 
Java lezione 5
Java lezione 5Java lezione 5
Java lezione 5
 
Java lezione 4
Java lezione 4Java lezione 4
Java lezione 4
 
Java lezione 3
Java lezione 3Java lezione 3
Java lezione 3
 
Java introduzione
Java introduzioneJava introduzione
Java introduzione
 
Oracle PLSql 4
Oracle PLSql 4Oracle PLSql 4
Oracle PLSql 4
 
Sql 5
Sql 5Sql 5
Sql 5
 

Sql 4

  • 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