Post

Visualizzazione dei post da 2015

RECYCLE BIN

Immagine
Il Recycle Bin è una tabella del Dizionario Dati ed ogni user ha un proprio Recycle Bin, pertanto gli oggetti droppati continuano ad occupare spazio all'interno del tablespace in cui sono definiti diminuendo quindi la  quota  associata a ciascuno user. E' un contenitore logico non fisico. Non ha un tablespace o datafile. Quando viene effettuata una "drop table" la tabella e tutti i sui oggetti associati rimangono nel datafiles di riferimento ma cambia il nome in "BIN$unique_id$version". Se invece si effettua il comando "drop table...purge" la tabelle e i suoi oggetti associati vengono cancellati dal datafile e quindi non c'è più un riferimento nel Recycle Bin. Gli oggetti nel recycleBin rimangono nel tablespace fino a quando non viene effettuata una PURGE dall'utente o viene automaticamente effettuato da Oracle per superamento della quota dell'user nel tablespace se: - crea una nuova tabella o inserisce dati  - il tablespace deve est

DEFAULT value

Per inserire un valore di default in una colonna già esistente eseguire la seguente istruzione. S i n t a s s i ALTER TABLE nome_tabella MODIFY colonna DEFAULT valore; E s e m p i o Creiamo una tabella come segue: CREATE TABLE emp_1 AS SELECT * FROM employees; Aggiungere un valore di default ad una colonna. ALTER TABLE emp_1 MODIFY salary DEFAULT 1000; E' possibile utilizzare in una Insert o un Update direttamente il valore DEFAULT. INSERT INTO   emp_1   VALUES (208,'Harrison','Bloom','HBLOOM','011.44.1343.829268', '29/10/2015' ,'SA_REP', DEFAULT ,'0,2','148','80'); UPDATE emp_1 SET salary=   DEFAULT   where EMPLOYEE_ID = 105; La colonna salary conterrà il valore 1000. Se la colonna non esiste occorre eseguire la seguente sintassi. ALTER TABLE emp_1 ADD salary_min Number DEFAULT 700; ALTER TABLE nome _tabella ADD nome_colonna tipo_colonna DEFAULT valore;

USER_CONSTRAINTS

E' una vista del Data Dictionary che visualizza per una tabella il nome di tutte le constraint e la relativa tipologia. select * from USER_CONSTRAINTS where table_name  = 'REGIONS'; Di seguito il significato di alcune colonne: colonna CONSTRAINT_TYPE           C = ceck constraint           P = pirmary key           R = foreign key colonna DELETE_RULE  indica lo stato delle righe nella tabella figlio quando vengono cancellate le corrispondenti righe della tabella padre.

REGEXP

Le funzioni REGEXP_ sono note come Regular Expression Functions e possono essere viste come una estensione delle funzioni di stringa Substr, Instr, Replace  e Like. REGEXP_INSTR (stringa_input, regular_espression, start_position, occorrenze del regular_espression, opt1, match_parameter_value) Restituisce un numero che rappresenta la posizione nella string di input, a partire dalla posizione di inizio,  dove c'è la n-esima occorrenza dell' "item" da cercare. start_position di default vale 1 occorrenze del regular_espression di default vale 1 opt1 può valere solo 0 oppure 1 e di default vale 0. Se 1 restituisce la posizione immediatamente successiva alla prima posizione individuata. match_parameter_value è opzionale e può valere ad esempio: 'c'     case-sensitive matching 'i'     case_insensitive matching 'x'    ignora gli spazi bianchi E s e m p i o select STREET_ADDRESS, regexp_instr(STREET_ADDRESS, '[^[:alpha:]]'), r

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)

INSERT ALL - FIRST

Esistono due tipi di istruzione Multitables INSERT: UNCONDITIONAL : tutti i risultati della subquery vengono inserti nelle clausole INTO. S i n t a s s i INSERT ALL INTO nome_tabella_1 (colonna_1,..., colonna_h) VALUES (valore_1, ...valore_h) INTO nome_tabella_2 VALUES (valore_1, ...valore_g) ......... INTO nome_tabella_m subquery; R e g o l e la parola chiave ALL è obbligatoria; deve esserci almeno una clausola INTO; il campo values_n può essere un valore  o coincide con il nome della colonna estratto dalla subquery alla quale può essere applicato una funzione di conversione o formattazione;  i campi nelle clausole VALUES possono essere differenti; la clausola VALUES può essere omessa e in questo caso nella tabella viene inserito il risultato della subqyery. Quindi la suddetta tabella deve avere lo stesso numero di colonne e tipo di dati (o comunque convertibili in automatico) della subquery; la subquery deve essere sempre presente. CONDITIONAL : i risultati d

EXTERNAL TABLE (sql loader)

Le tabelle esterne sono tabelle di sola lettura e pertanto non possono essere eseguite DML e creati Indici e Constraint. I metadati della tabella sono memorizzati all'interno del database mentre i dati sono memorizzati in file al di fuori del db. E' possibile usare le utility SQL LOADER e ORACLE DATA PUMP per leggere le tabelle e caricarle nel db. Per creare una tabella esterna occorre: Creare una directory, in cui salvare il file esterno, all'interno del file system del server Oracle; Creare l'oggetto oracle del database "directory"; Dare le grant di lettura e\o scrittura della directory agli utenti che devono utilizzare la tabella esterna; Creare la tabella esterna. S i n t a s s i CREATE OR REPLACE DIRECTORY nome_directory AS riferimento_directory; "riferimento_directory" è una stringa racchiusa tra apici come ad esempio 'C:\file_ester\estr'. Non viene rilevato un errore in fase di creazione dell'oggetto Directory se la

CONSTRAINTS

I tipi di Constraints supportati da Oracle sono i seguenti: UNIQUE NOT NULL PRIMARY KEY (è l'unione della Unique e Not Null Constraint) FOREIGN KEY (definita in una tabella figlio deve far riferimento a colonne della tabella padre di tipo Unique o Primary Key; può contenere valori NULL) CHECK (definisce una condizione che ogni riga deve soddisfare) R e g o l e può essere disabilitata anche se le colonne constraint contengono dati; una Tabella può contenere una sola Primary Key ma più Foreign Key; può essere definita sia a livello di colonna che di tabella. Le prime sono incluse nella definizione delle colonne mentre le seconde sono definite alla fine della definizione della tabella; la Constraint NOT NULL non può essere definita a livello di tabella (out of Line). S i n t a s s i a livello di colonna - in Line column_name [ CONSTRAINT constraint_name ] constraint_type a  livello di tabella - out of Line CONSTRAINT constraint_name constraint_type (column_name,

Installare Ubuntu da Usb

Immagine
Collegarsi al sito di Ubuntu Italia e dal link Download scegliere il pacchetto da installare. Su Linux per individuare la distribuzione 32 o 64 bit eseguire uno dei seguenti comandi: cat /proc/cpuinfo | grep lm (se il processore è a 32 bit, non verrà restituito alcun output, altrimenti nell'output si vedrà evidenziata in rosso la parola lm ) oppure  sb_release -ds && uname -m  (il primo rappresenta il nome e la versione della distribuzione, il secondo l'architettura del processore del vostro pc: i686 -> 32bit, x86_64 -> 64 bit). Consiglio di installare la versione Desktop ed LTS che ha maggiore aggiornamenti e stabilità. Il file scaricato sarà un ISO. Collegarsi a "LinuxLive USB Creator" e scaricare "Lili" che è un file exe. Una volta lanciato il file, verrà istallato il programma seguente. Inserire la chiavette Usb di almeno due GB e seguire i passi 1 - 5 indicati dal programma Lili. scegliere la usb scegliere il file

ROWNUM: estrazione lotto di righe

Immagine
Supponiamo di avere un insieme di righe da voler estrarre in lotti, ad esempio lotti da 10, senza utilizzare una particolare condizione su una colonna. Di seguito la lista da estrarre: select EMPLOYEE_ID , FIRST_NAME, LAST_NAME from EMPLOYEES where EMPLOYEE_ID between 100 and 125; La funzione ROWNUM viene eseguita dopo la clausola ORDER BY Oracle esegue prima  l'ordinamento sull'intera lista e poi estrae il sottoinsieme di righe indicato, ossia non estrae prima il sottoinsieme di righe e poi lo ordina. Se la clausola non è presente, il risultato della query è di default ordinato secondo la prima colonna. select EMPLOYEE_ID , FIRST_NAME, LAST_NAME from EMPLOYEES where EMPLOYEE_ID between 100 and 125 and ROWNUM < 11; select EMPLOYEE_ID , FIRST_NAME, LAST_NAME from EMPLOYEES where EMPLOYEE_ID between 100 and 125 and ROWNUM < 11 ORDER BY 1 desc; Se vogliamo estrarre i seguenti lotti 100-109, 110-119, 120-125  utilizzare la seguente query:

Impostare DHCP

Immagine
Il DHCP - Dynamic Host Configuration Protocol - in breve è un protocollo di rete di livello applicativo che consente al router di identificare i dispositivi connessi alla rete assegnando loro un indirizzo IP automaticamente. Una errata configurazione può causare l’impossibilità di navigare su Internet. Vediamo come configurarlo su Windows 7 Professional. Accedere al pannello di controllo > Administrative Tools > Services Selezionare DHCP Client  Impostare Startup type = Automatic Una volta lanciato il servizio client DHCP ed averlo impostato per l’esecuzione automatica, devi configurare la connessione di rete in modo che accetti la configurazione automatica da parte del router per accedere ad Internet. Per prima cosa, clicca con il tasto destro del mouse sull’icona della rete collocata nell’area di notifica (accanto all’orologio di Windows). Selezionare la voce Open Network and Sharing Center > Change Adapter Center > selezionare propriet

Lista alfabetica Excel

Immagine
Per ottenere una lista alfabetica con Excel, utilizzare la funzione  CHAR() che utilizza come argomento un numero e restituisce una lettera. Inserire in una colonna i numeri da 65 a 90 e applicare in un altra colonna la seguente formula CHAR(65) = A    per lettere Maiuscole CHAR(97) = a    per lettere minuscole E' possbile produrre la lista alfabetica senza inserire una seconda colonna contenete interi, se si applica la seguente formula: CHAR(64 + ROW(A1))

DATA TYPES

Immagine
E' possibile visualizzare i tipi di dato di una tabella con il comando: DESC nome_tabella; DATE  è un tipo di dato Oracle che memorizza dati in uno speciale formato numerico interno ad Oralce e rappresenta anno, mese, giorno, ora, minuti e secondi. Di default è visibile nel formato DD-MON-RR. RR calcola in automatico il secolo dalla funzione SYSDATE sulla base dei primi due e degli ultimi digit dell'anno corrente. E' come YY ma può essere utilizzato per specificare differenti secoli. Anno Corrente    Data fornita    Interpretato da RR    Interpretato da YY 1978                   22-OCT-78         1978                            1978 1978                   22-OCT-49         2049                            1949 2078                   22-OCT-49         2149                            2049 2048                   22-OCT-78         1978                            2078 I dati sono memorizzati internamente come: CENTURY YAER MONTH DAY HOUR MINUTE SECOND 19 78 10 22 12

VIEW

Una vista è una tabella logica creata tramite l'istruzione SELECT di una o più tabelle e serve per visualizzare  tutti o parte dei dati delle tabelle di partenza. Può contenere ad esempio solo alcune colonne di una tabella perché non tutti i dati devono essere visibili per ragioni di sicurezza o contenere le stesse colonne ma con nome diverso perché i nomi originari sono troppo lunghi e poco significativi. La subquery che la definisce può includere join, group e subquery. Eseguire una DML su una view significa aggiornare la tabelle che la definiscono. Ci sono due tipi di viste: SIMPLE VIEW creata da una semplice Select e per la quale può essere eseguita una istruzione dml; COMPLEX VIEW creata da più tabelle in join, contiene funzioni e aggregazione di dati e per la quale può essere eseguita solo una Select. S i n t a s s i CREATE [OR REPLACE] [FORCE | NOFORCE] VIEW [schema.]nameView [(alias,....)] AS subquery [WITH CHECK OPTION [CONSTRAINT constraintname]] [WITH READ

ROLLUP, CUBE, GROUPING, GROUPING SETS

Immagine
L'operatore ROLLUP raccogglie i dati ottenuti da una GROUP BY in ulteriori raggruppamenti noti come "superaggregate rows". Viene utilizzato sempre in combinazione con la clausola GROUP BY. E s e m p i Estrarre per ogni dipartimento e professione la somma dei salari. select department_name , job_title, sum(SALARY) from employees join departments using( DEPARTMENT_ID) where department_id not in (10, 40,60,90) group by department_name , job_title order by department_name , job_title ; Se si vuole conoscere anche la somma dei salari di ogni dipartimento utilizzare la parola chiave ROLLUP dopo la parola chiave GROUP BY. select department_name , job_title , sum(SALARY) from employees join departments using( DEPARTMENT_ID) join jobs using(job_id) where  department_id  not in  (10, 40,60,90,70) GROUP BY ROLLUP ( department_name ,JOB_TITLE ) order by department_name ,job_title; L'operatore ROLLUP ha prodotto sei"subtotals group" da destra

Explain Plan - Sql Developer

Immagine
Il piano di esecuzione di una query può essere eseguito o con F10 o cliccando sul tasto Explain Plan di seguito evidenziato. L'Explain Plan è utile per capire se la query sta andando in full table scan o sta usando gli indici.

USER_CONS_COLUMNS

Immagine
USER_CONS_COLUMNS  è una vista del Dizionario Dati che visualizza il nome di una colonna (compreso il nome dello schema  e della tabella) a cui una constraint è applicata. E s e m p i o: connettersi come HR ed eseguire la query select * from USER_CONS_COLUMNS;