Post

Visualizzazione dei post da aprile, 2014

CONVERSIONI IMPLICITE

Le CONVERSIONI IMPLICITE da un tipo di dato ad un altro, eseguite dal server Oracle sono le seguenti: - da CHAR, VARCHAR2, NCHAR, NVARCHAR2 a NUMBER - da CHAR, VARCHAR2, NCHAR, NVARCHAR2 a DATE - da NUMBER a CHAR, VARCHAR2, NCHAR, NVARCHAR2 - da DATE a CHAR, VARCHAR2, NCHAR, NVARCHAR2 In una espressione matematica le stringhe possono essere implicitamente convertite in dati di tipo numerico, solo se i caratteri rappresentano digits e un singolo punto decimale (.). Per ogni altro carattere incluso nella stringa di caratteri come il separatore di gruppo (,) e il segno del dollaro ($), la conversione deve essere eseguita tramite la funzione TO_NUMBER. Ad esempio le stringhe '1,234.25' e '€1,234.25' richiedono la funzione TO_NUMBER, mentre le stringhe '00123.45' e '1234.25' sono convertite in automatico in numerico in un espressione matematica.

CONSTRAINTS: DROP

Per eliminare una foreign key da una tabella usare la seguente sintassi. ALTER TABLE nome_tabella DROP CONSTRAINT nome_constraint; E s e m p i o CREATE TABLE ESEMPIO2    (        IDESE2 number,     NOME varchar2(10 byte),     COGNOME varchar2(10 byte),      constraint ESE2_PK FOREIGN KEY (IDESE2) REFERENCES ESEMPIO1(IDESE1)    );  ALTER TABLE ESEMPIO2 DROP CONSTRAINT ESE2_PK ; Il codice SQL della tabella è ora il seguente:  CREATE TABLE ESEMPIO2    (   IDESE2 NUMBER,      NOME VARCHAR2(10 BYTE),      COGNOME VARCHAR2(10 BYTE)    )

CONSTRAINTS: DISABLE - ENABLE

S i n t a s s i ALTER TABLE nome_tabella DISABLE | ENABLE CONSTRAINT nome_constraint [CASCADE]; Supponiamo di avere la seguente tabella e di voler disabilitare la sua foreign key. CREATE TABLE esempio2    (        IDESE2 number,     NOME varchar2(10 byte),     COGNOME varchar2(10 byte),      CONSTRAINT ese2_fk FOREIGN KEY (IDESE2) REFERENCES ESEMPIO1(IDESE1)    );  ALTER TABLE esempio2 DISABLE CONSTRAINT  ese2_fk  ; Il codice SQL della tabella è ora il seguente: CREATE TABLE ESEMPIO2    (    IDESE2 NUMBER,      NOME VARCHAR2(10 BYTE),      COGNOME VARCHAR2(10 BYTE),      CONSTRAINT  ese2_fk  FOREIGN KEY (IDESE2) REFERENCES ESEMPIO1 (IDESE1) DISABLE    ) Per abilitarlo nuovamente eseguire il comando: ALTER TABLE esempio2 ENABLE CONSTRAINT ese2_fk ; Se una foreign key è definita senza specificare la colonna della tabella, Oracle in automatico la associa alla colonna chiave primaria della tabella. CREATE TABLE esempio2 (        IDESE2 number,     NOME varc

Clausola WITH

La clausola WITH permette di assegnare un nome ad una subquery block e di essere richiamato dalla SELECT Statement che segue la clausola WITH. E' una sintassi della SELECT e deve essere definita prima della SELECT statement. La subquery referenziata con WITH viene trattata come una tabella temporanea (dinamica) utilizzabile soltanto all'interno di quella statement e non è memorizzata all'interno del database. Non può essere richiamata in successive sessioni SELECT statement. Il nome della subquery non può essere invocato all'interno della subquery che lo definisce. E s e m p i o tabella  SALE_CINEMA --------------------------------------------------- CINEMA_ID             CINEMA_NAME 1                                THE SPACE 2                                STARDUST 3                                VILLAGE 4                                ARS tabella SPETTACOLI ---------------------------------------------------------------------------------------------

Clausola WHERE

L'alias di una colonna non può essere utilizzato in una clausola WHERE. Esempio: select FIRST_NAME , LAST_NAME ,salary,  salary - salary*0.10 as "riduzione_salario" from employees where "riduzione_salario" < 3000  ; ORA-00904: "riduzione_salario": identificativo non valido 00904. 00000 -  "%s: invalid identifier" Query corretta: select FIRST_NAME , LAST_NAME ,salary,  salary - salary*0.10 as "riduzione_salario" from employees where salary - salary*0.10 < 3000  ;

Clausola ORDER BY

La clausola ORDER BY è usata per ordinare le righe. Di default il risultato di una query è ordinato in ordine ascendente e in funzione della prima colonna della Select. Deve essere posta alla fine del SQL Statement principale e si può specificare una o più colonne, un alias o un espressione. Le righe sono ordinate in ordine ascendente tramite la clausola ASC o in ordine discendente usando la clausola DESC . In un ordinamento di caratteri, la clausola ORDER BY è case-sensitive. La posizione delle colonne con valori a NULL possono essere controllate usando le seguenti clausole dopo ORDER BY: - NULLS FIRST forza i valori NULL ad apparire all'inizio della lista indipendentemente dal tipo di ordine - NULLS LAST forza i valori NULL ad apparire alla fine della lista indipendentemente dal tipo di ordine Di defualt i valori NULL compaiono all'inizio quando si usa la clausola DESC. Non possono apparire dopo ORDER BY: - colonne LOB, LONG o LONG RAW - tabelle annidate - tipi

Clausola HAVING

R e g o l e La clausola HAVING esclude (elimina) specifici risultati aggregati dopo il raggruppamento dei dati; specifica il gruppo di righe che deve essere visualizzato; può contenere funzioni aggregate; non può utilizzare alias per le colonne; viene elaborata da Oracle con i seguenti passi: Oracle raggruppa le righe; la funzione di gruppo è applicata al gruppo; i gruppi che soddisfano i criteri della clausola HAVING sono visualizzati. E s e m p i select max(salary) from employees having max(salary) > 20; Se vogliono visualizzare il massimo salario maggiore  di 20 per dipartimento occorre utilizzare la clausola Group by. select department_id , max(salary) from employees group by department_id having max(salary) > 20; Se invece occorre sapere la media dei massimi salari raggruppati per dipartimento con salario massimo maggiore di 200. select avg(max(salary)) from employees group by department_id having max(salary) > 200; Se si utilizza nella

AMPERSAND

L'Ampersand (&) serve per valorizzare il contenuto di una variabile. E s e m p i o select EMPLOYEE_ID, LAST_NAME , & NOME_COLONNA1 from EMPLOYEES order by & NOME_COLONNA2; Compariranno due prompt, uno per la variabile NOME_COLONNA1 e l'altro per NOME_COLONNA2 in cui inserire i due valori. Se si utilizzano un doppio Ampersand (&&) è possibile riutilizzare il valore della variabile senza mostrare all'utente ogni volta il prompt. L'utente vede il prompt solo la prima volta. Ad esempio nelle seguente query: select EMPLOYEE_ID, LAST_NAME , && NOME_COLONNA from EMPLOYEES order by & NOME_COLONNA; L'utente riceverà il prompt solo la prima volta che esegue la query e sarà usato nelle esecuzioni successive. Inoltre lo stesso valore sarà usato sia nella colonna della Select che nell'ordinamento.

ALTER TABLE MODIFY

Per modificare una colonna in una tabella eseguire il comando S i n t a s s i ALTER TABLE nome_tabella MODIFY nome_colonna tipo_colonna ; E s e m p i o Forziamo la colonna name da varchar2(8) a varchar2(10) e a non ammettere valori nulli: ALTER TABLE employee MODIFY name varchar2(100) not null; E' possibile modificare contemporaneamente più colonne di una stessa tabella. ALTER TABLE nome_tabella MODIFY (nome_colonna-1 tipo_colonna-1, nome_colonna-2 tipo_colonna-2,......, nome_colonna-n tipo_colonna-n); E s e m p i o Forziamo le colonne "name" e "surname" a varchar2(15) e quest'ultima colonna a non ammettere valori nulli: ALTER TABLE employee MODIFY (name varchar2(10) not null,  surname varchar2(15) not null); Le modifiche hanno effetto sui nuovi inserimenti; le righe esistenti non saranno impattate dalla modifica. Se dobbiamo aggiungere una CONSTRAINT su una colonna per assicurarci che abbia un valore non nullo eseguire il comando seguent

Formato date - Sql Developer

Immagine

Estrarre un file BLOB da un campo Oracle - Sql Developer

Immagine

Modello E-R - Sql Developer

Immagine

SQL Tuning Advisor - Sql Developer

Immagine
SQL Tuning Advisor implementa la funzionalità definita come "Automatic SQL Tuning". Per realizzare questa funzionalità si è lavorato con SQL DEVELOPER versione 4.0.1.14 La raccolta delle statistiche migliora le performance. Non è possbilie eseguire SQL Tuning Advisor senza i privilegi. Diamo all'utenza SH i privilegi per eseguire SQL Tuning Advisor. GRANT ADVISOR TO sh; GRANT ADMINSTER SQL TUNING SET TO sh; Cancelliamo le statisctiche dello schema SH per poi raccoglierle nuovamente. exec DBMS_STATS.DELETE_SCHEMA_STATS ('sh'); Eseguiamo la query con il comando CRTL+F12 che corrisponde ad eseguire SQL tuning advisor. Sotto "Suggerimenti" è consigliato di raccogliere le statistiche per le tabelle e gli indici. Se si seleziona"Ristruttura SQL" è consigliato di utilizzare join coindition perchè come spiegato in "Motivazione" un prodotto cartesiano è un operazione costosa e potrebbe produrre uan grande qu