Post

Visualizzazione dei post da settembre, 2015

CONSTRAINTS: DEFERRED - DEFERRABLE

L'opzione DEFERRED permette ad una constraint di non essere applicata ai dati finché non termina la transazione. S i n t a s s i ALTER TABLE nome_tabella ADD CONSTRAINT nome_constr tipo_constraint DEFERRABLE; Le constraint di default sono NOT DEFERRABLE. Durante la sessione in corso è possibile impostare la constraint come DEFERRED. SET CONSTRAINT nome_constr DEFERRED; oppure si può agire su tutte le constraint: SET CONSTRAINT ALL DEFERRED; Per tutte le operazioni seguenti che operano sui dati, come Insert, Update...., non sarà applicata la constraint ma dopo la Commit la constraint diventerà valida, cioè IMMEDIATE, e quindi se sono stati inseriti dati che violano la constraint il comando Commit falisce e viene eseguito il rollback dei dati. Per impostare il comportamento di default delle constraint eseguire il comando: SET CONSTRAINT nome_constr IMMEDIATE ; oppure se si può agire su tutte le constraint: SET CONSTRAINT ALL IMMEDIATE;

INTERVAL

Immagine
Interval è un tipo di dato di tipo DATE. INTERVAL YEAR(n) TO MONTH Definisce un arco di tempo  in anni e mesi. Il numero di digit per definire il valore anno è n=0–9; di default vale 2. INTERVAL DAY(n1) TO SECOND(n2) Definisce un arco di tempo in giorni, ore, minuti e secondi. Il numero di digit per definire il valore giorni è n1 = 0–9; di default vale 2; invece per i secondi n2 = 0–9 e di default vale 6. INTERVAL HOUR TO SECOND Definisce un arco di tempo in ora, minuti, secondi, e frazioni di secondi. Di seguito l'intervallo di validità di alcuni campi: YEAR –4712 a 9999  (escluso anno 0) MONTH 01 - 12 DAY 01 - 31 HOUR 00 - 23 MINUTE 00 - 59 SECOND 00 - 59.9(n), dove 9(n) è la precisione in frazioni di secondi. Ricordiamo che la frazione di secondi non è applicabile al tipo DATE select INTERVAL '250' MONTH A, INTERVAL '250-02' YEAR(3) TO MONTH  B, INTERVAL '24:11:8.4445557' HOUR TO SECOND  C, INTERVAL '100 10:11:8.4445557

MetaCharacter

Gli operatori MetaCharacter sono simboli speciali utilizzati come parametri all'interno delle espressioni regolari. Vediamo alcuni esempi: ^ uguagliare il carattere posto all'inizio di una riga $ uguagliare il carattere posto alla fine di una riga [^...] i caratteri nella lista non devono essere uguagliati | uguaglia uno dei caratteri come un operatore logico OR \ trasforma i successivi meta character in litteral value; ad esempio \+ tratta il meta character + non più come simbolo + cerca una o più ocorrenze dalla precedente subespressione [:alpha:] insieme di caratteri alfabetici ed include solo le lettere [:digit:] insieme di caratteri numerici [a-z] insieme di caratteri alfabetici in minuscolo [A-Z] insieme di caratteri alfabetici in maiuscolo [0-9] insieme di numeri [1-9] insieme di numeri escluso lo zero [:alnum:] insieme di numeri e caratteri esclusa la punteggiatura

ADD COLUMN e DROP COLUMN

Quando si aggiunge una nuova colonna ad una tabelle la constraint NOT NULL può essere applicata solo se la tabella non contiene dati. ALTER TABLE nome_tabella ADD nome_colonna tipo_colonna NOT NULL; Se la tabella contiene dati, occorre aggiungere un valore di default. ALTER TABLE nome_tabella ADD nome_colonna tipo_colonna DEFUALT valore NOT NULL; Se la colonna già esiste e si vuole aggiungere la constraint NOT NULL eseguire l'istruzione (in Line) ALTER TABLE nome_tabella MODIFY nome_colonna NOT NULL ; opppure ALTER TABLE nome_tabella MODIFY nome_colonna CONSTRAINT nome_constraint NOT NULL ; Il comando seguente invece termina in errore perché è come una dichiarazione out of Line. ALTER TABLE nome_tabella ADD NOT NULL (nome_colonna); Il comando Drop Column richiede alcuni minuti ad Oracle per esaminare ogni riga e per cancellare fisicamente la colonna. Conviene  eseguire il comando DROP in un secondo momento, in un periodo di bassa attività del database. S i n t a s s i ALTER T

CORRELATED SUBQUERY

Correlated Subquery è una query integrata con una outer (o parent) query cioè include riferimenti ad elementi della query padre e pertanto non può essere eseguita da sola. La correlazione avviene tramite una relazione di almeno una colonna della tabella padre e di una colonna della subquery, all'interno della subquery stessa. Correlated subqueries può essere utilizzato nelle istruzioni SELECT, UPDATE e DELETE. Gli step eseguiti dal server Oracle per valutare una Correlated Subquey sono i seguenti: vengono estratte le opportune righe dalla outer query; ogni riga è utilizzata nella subquery, nella correlazione tra le colonne, e vengono restituite le righe dalla subquery; le suddette righe vengono utilizzate dalla clausola WHERE della outer query; la procedura è ripetuta per tutte le righe della tabella outer, finché tutte le righe sono processate. E s e m p i o SELECT FIRST_NAME,  LAST_NAME ,  JOB_ID ,  SALARY FROM employees E WHERE SALARY =   ( SELECT AVG(min_salary)