1. 22/07/04 Ing. Ronchi Sergio 1
SQL (Structured Query language)
SELECT Data retrieving
INSERT
UPDATE
DELETE
MERGE
DML
Data manipulation Language
CREATE
ALTER
DROP
RENAME
TRUNCATE
DDL
Data Definition Language
COMMIT
ROLLBACK
SAVEPOINT
Gestione delle transazioni
GRANT
REVOKE
DCL
Data Control Language
2. 22/07/04 Ing. Ronchi Sergio 2
Oggetti di un DB Oracle
Tabelle: Strutture base per memorizzare i dati
Viste: Estrapolazione logica dei dati delle tabelle
Sequenze: Generatori di sequenze numeriche
Indici: Elementi utili ad aumentare la performance delle query
Sinonimi: nomi alternativi per gli oggetti
I nomi degli oggetti devono iniziare con una lettera e al massimo possono essere lunghi 30
caratteri: alcuni nomi sono riservati a oggetti di sistema Oracle o sono parole chiave. I nomi
devono essere il più possibile descrittivi del contenuto.
Oracle 9i è case insensitive (alcuni database come MySQL invece sono case sensitive)
Per usare le istruzioni CREATE bisogna avere l’autorizzazione, assegnata dal DBA tramite
istruzioni DCL, di creazione in una certa storage area. Le tabelle di un certo utente finiscono in
un dato schema del database. Ogni utente ha un suo schema le tabelle appartenenti ad uno
schema non proprio vanno precedute con il nome dello schema:
SCOTT.EMP è la tabella EMP dello schema SCOTT
3. 22/07/04 Ing. Ronchi Sergio 3
Creazione di una tabella
CREATE TABLE dept
( deptno NUMBER(2),
dname VARCHAR2(14),
loc VARCHAR2(13)
);
Una volta creata la tabella è possibile vedere il risultato dell’operazione con
DESCRIBE dept
4. 22/07/04 Ing. Ronchi Sergio 4
TIPI DI DATI ORACLE
NUMERI
•NUMBER Numeri reali Corrispondente a tipi standard DOUBLE, FLOAT
•NUMBER(38) Numeri interi, corrisponde ai tipi standard INTEGER, SMALLINT
•NUMBER(p,s) Numeri decimali di precisione p (da 1 a 38) e scala s (da –84 a +127)
corrisponde al tipo standard DECIMAL
la scala negativa consente degli arrotondamenti ad esempio
7456123,89 come NUMBER(9,-2) viene memorizzato 7456100
5. 22/07/04 Ing. Ronchi Sergio 5
TIPI DI DATI
DATA E ORA
• DATE data: formato standard YYYY-MM-DD
• TIMESTAMP(p) assume la data e l'ora dell'ultima operazione fatta sulla riga
p (da 1 a 9 di default 6) è la precisione come frazione di secondo
tale tipo può avere le seguenti due specifiche
WITH TIME ZONE
WITH LOCAL TIME ZONE
• INTERVAL (yp) YEAR TO MONTH periodo di tempo in anni e mesi.
• INTERVAL (dp) DAY TO SECOND(sp) periodo di tempo in giorni, ore, min, sec.
•
6. 22/07/04 Ing. Ronchi Sergio 6
TIPI DI DATI
STRINGHE
•CHAR stringa di dimensione fissa 1 carattere
•CHAR(size) stringa di dimensione fissa (max 2000 bytes)
•NCHAR(size) stringa di dimensione fissa (max 2000 bytes)
•VARCHAR2(size) stringa di dimensione variabile (max 4000 bytes)
•NVARCHAR2(size) stringa di dimensione variabile (max 4000 bytes) usando come
base la codifica nazionale dei caratteri (Unicode)
CHAR e VARCHAR possono avere la specifica BYTE o CHAR
STRINGHE DI GRANDI DIMENSIONI
•LONG campo di testo al massimo di 2 Gbytes
•CLOB campo di testo al massimo di 4 Gbytes
•NCLOB campo di testo al massimo di 4 Gbytes Caratteri Nazionali
7. 22/07/04 Ing. Ronchi Sergio 7
TIPI DI DATI
ALTRI TIPI DI DATI
•RAW(size) campo binario puro al massimo di 2000 bytes
•LONG RAW campo binario puro al massimo di 2 GBytes
•BLOB campo binario di 4 GByte
•BFILE file binario di 4GByte
•ROWID stringa che rappresenta l’indirizzo di una riga in una tabella in
base 64
•UROWID indirizzo logico di una riga di una tabella in base a un indice
9. 22/07/04 Ing. Ronchi Sergio 9
Constraint (Foreign key)
CREATE TABLE dept_20
(employee_id NUMBER(4) PRIMARY KEY, last_name VARCHAR2(10),
job_id VARCHAR2(9), manager_id NUMBER(4),
hire_date DATE, salary NUMBER(7,2), commission_pct
NUMBER(7,2),
department_id NUMBER(6),
CONSTRAINT fk_deptno FOREIGN KEY (department_id)
REFERENCES departments(department_id) ON DELETE CASCADE,
CONSTRAINT fk_mgr FOREIGN KEY (manager_id )
REFERENCES employees(manager_id ) ON DELETE SET NULL
);
Non precisando ON DELETE la Delete Rule sarà Restict cioè non
sarà possibile eliminare un record padre se non avendo
eliminato prima tutti i record figli.
11. 22/07/04 Ing. Ronchi Sergio 11
Creazione di una tabella tramite una query
CREATE TABLE dept_80
AS
SELECT emp_id, emp_name, salary, hire_date
FROM employees
WHERE departmet_id=80;
In questo caso viene creata una nuova tabella in base alla query, conservando i nomi
e i tipi di dati.
12. 22/07/04 Ing. Ronchi Sergio 12
DDL (data definition language)
Eliminazione e rinomina di tabelle:
DROP TABLE PRODOTTI;
DROP TABLE PRODOTTI CASCADE CONSTRAINTS;
RENAME dept TO detail_dept;
modifica
ALTER TABLE CLIENTI ADD (INDIRIZZO VARCHAR2(50));
ALTER TABLE CLIENTI DROP COLUMN DESCRIZIONE;
ALTER TABLE CLIENTI SET UNUSED (TELEFAX);
ALTER TABLE CLIENTI DROP UNUSED COLUMNS;
ALTER TABLE CLIENTI MODIFY (NOME VARCHAR(50));
Aggiunta vincoli:
ALTER TABLE CLIENTI ADD CONSTRAINT
pk PRIMARY KEY(client_ID)
Troncamento: eliminazione di tutte le righe con impaccamento dello
spazio disco
TRUNCATE TABLE detail_dept;
Commentare una tabella o un campo
COMMENT ON TABLE Employee IS ‘Informazioni Impiegati’;
13. 22/07/04 Ing. Ronchi Sergio 13
DDL (data definition language)
Modifica vincoli:
ALTER TABLE CLIENTI ADD CONSTRAINT
pk PRIMARY KEY(client_ID)
ALTER TABLE CLIENTI DROP CONSTRAINT unic_key;
ALTER TABLE CLIENTI DROP CONSTRAINT PK CASCADE;
(CASCADE permette l’eliminazione di tutti i vincoli collegati)
ALTER TABLE CLIENTI DISABLE CONSTRAINT PK
CASCADE;
ALTER TABLE CLIENTI ENABLE CONSTRAINT PK
CASCADE;
14. 22/07/04 Ing. Ronchi Sergio 14
Visualizzare le tabelle e i vincoli creati
In Oracle esistono delle viste dette “Data Dictionary” che contengono
informazioni sugli oggetti del database:
USER_TABLES
USER_CONSTRAINTS
USER_TAB_COMMENTS
USER_COL_COMMENTS
……
Su queste viste è possibile eseguire delle query di SELECT per vederne il
contenuto informativo