(Oracle) - Oracle9i - Introduzione a Oracle 9i - Student Guide - Volume 1

download (Oracle) - Oracle9i - Introduzione a Oracle 9i - Student Guide - Volume 1

of 432

Transcript of (Oracle) - Oracle9i - Introduzione a Oracle 9i - Student Guide - Volume 1

Introduzione a Oracle9i: SQL

Guida per lo studente Volume 1

40049IT11 Versione 1.1 Gennaio 2002 D34260

AutoriNancy Greenberg Priya Nathan

Copyright Oracle Corporation, 2000, 2001. Tutti i diritti riservati. Questa documentazione contiene informazioni di propriet della Oracle Corporation e viene distribuita sulla base di condizioni di licenza che prevedono restrizioni relative all'uso e alla divulgazione ed protetta altres dalle leggi vigenti sul copyright. La decodificazione del software vietata salvo i casi espressamente previsti dalla legge. Limitazioni dei diritti per il Governo degli Stati Uniti Restricted Rights Legend Use, duplication or disclosure by the Government is subject to restrictions for commercial computer software and shall be deemed to be Restricted Rights software under Federal law, as set forth in subparagraph (c)(1)(ii) of DFARS 252.227-7013, Rights in Technical Data and Computer Software (October 1988). If this documentation is delivered to a U.S. Government Agency not within the Department of Defense, then it is delivered with "Restricted Rights," as defined in FAR 52.227-14, Rights in Data-General, including Alternate III (June 1987). Nessuna parte di questo materiale pu essere copiata in alcuna forma e con alcun mezzo senza previa autorizzazione della Oracle Corporation. L'esecuzione di copie una violazione della legge sul copyright e pu essere perseguita civilmente e/o penalmente. Le informazioni contenute in questo documento sono soggette a modifiche senza preavviso. Qualora riscontrasse dei problemi nella documentazione, l'utente pregato di segnalarli per iscritto a Oracle Education Products, Oracle Corporation, 500 Oracle Parkway, Box SB-6, Redwood Shores, CA 94065. La Oracle Corporation non garantisce che il presente documento sia privo di errori. Tutti i riferimenti alla Oracle e ai prodotti Oracle sono marchi o marchi registrati della Oracle Corporation. Tutti gli altri nomi di prodotti e di societ citati sono utilizzati unicamente a fini identificativi e possono essere marchi dei rispettivi proprietari.

Contributi tecnici e revisioniJosephine Turner Martin Alvarez Anna Atkinson Don Bates Marco Berbeek Andrew BranniganLaszlo Czinkoczki

Michael Gerlach Sharon Gray Rosita Hanoman Mozhe Jalali Sarah Jones Charbel Khouri Christopher Lawless Diana Lorentz Nina Minchen Cuong Nguyen Daphne Nougier Patrick Odell Laura Pezzini Stacey Procter Maribel Renau Bryan Roberts Helen Robertson Sunshine Salmon Casa Sharif Bernard Soleillant Craig Spoonemore Ruediger Steffan Karla Villasenor Andree Wheeley Lachlan Williams

EditoreNita Brozowski

SommarioPrefazione Percorsi formativi consigliati Introduzione Obiettivi I-2 Oracle9i I-3 Oracle9i Application Server I-5 Oracle9i Database I-6 RDBMS e ORDBMS I-7 Piattaforma Internet Oracle I-8 Passi di sviluppo di un sistema I-9 Memorizzazione di dati su supporti diversi I-11 Concetto di database relazionale I-12 Definizione di database relazionale I-13 Modelli di dati I-14 Modello entity relationship I-15 Convenzioni per i modelli entity relationship I-16 Correlazione di pi tabelle I-18 Terminologia dei database relazionali I-19 Propriet dei database relazionali I-20 Comunicazione con un sistema RDBMS tramite SQL I-21 RDBMS I-22 Istruzioni SQL I-23 Tabelle utilizzate nel corso I-24 1 Scrittura di istruzioni sql SELECT di base Obiettivi 1-2 Caratteristiche delle istruzioni SELECT SQL 1-3 Istruzione SELECT di base 1-4 Selezione di tutte le colonne 1-5 Selezione di colonne specifiche 1-6 Scrittura di istruzioni SQL 1-7 Impostazioni predefinite delle intestazioni di colonna 1-8 Espressioni aritmetiche 1-9 Uso degli operatori aritmetici 1-10 Precedenza degli operatori 1-11 Uso delle parentesi 1-13 Definizione di un valore nullo 1-14 Espressioni aritmetiche con valori nulli 1-15 Definizione degli alias di colonna 1-16 Uso degli alias di colonna 1-17 Operatore di concatenazione 1-18 Uso degli operatori di concatenazione 1-19 Stringhe di caratteri 1-20 Uso delle stringhe di caratteri 1-21 Righe duplicate 1-22 Eliminazione delle righe duplicate 1-23iii

Interazione tra SQL e iSQL*Plus 1-24 Confronto tra istruzioni SQL e comandi iSQL*Plus Panoramica di iSQL*Plus 1-26 Esecuzione del log in a iSQL*Plus 1-27 Ambiente iSQL*Plus 1-28 Visualizzazione della struttura di tabella 1-29 Interazione con gli script 1-31 Riepilogo 1-34 Panoramica dell'esercitazione 1-35 2 Limitazione e ordinamento di dati Obiettivi 2-2 Limitazione di righe mediante una selezione 2-3 Limitazione delle righe selezionate 2-4 Uso della clausola WHERE 2-5 Stringhe di caratteri e date 2-6 Condizioni di confronto 2-7 Uso delle condizioni di confronto 2-8 Altre condizioni di confronto 2-9 Uso della condizione BETWEEN 2-10 Uso della condizione IN 2-11 Uso della condizione LIKE 2-12 Uso della condizione NULL 2-14 Condizioni logiche 2-15 Uso dell'operatore AND 2-16 Uso dell'operatore OR 2-17 Uso dell'operatore NOT 2-18 Regole di precedenza 2-19 Clausola ORDER BY 2-22 Ordinamento in ordine decrescente 2-23 Ordinamento in base ad alias di colonna 2-24 Ordinamento in base a pi colonne 2-25 Riepilogo 2-26 Panoramica dell'esercitazione 2 2-27

1-25

3

Funzioni che agiscono su una sola riga Obiettivi 3-2 Funzioni SQL 3-3 Due tipi di funzioni SQL 3-4 Funzioni che agiscono su una sola riga 3-5 Funzioni che agiscono su una sola riga 3-6 Funzioni di stringa 3-7 Funzioni di stringa 3-8 Funzioni di conversione dei caratteri in maiuscolo e minuscolo 3-9 Uso delle funzioni di conversione dei caratteri in maiuscolo e minuscolo 3-10

iv

Funzioni di manipolazione delle stringhe 3-11 Uso delle funzioni di manipolazione delle stringhe 3-12 Funzioni numeriche 3-13 Uso della funzione ROUND 3-14 Uso della funzione TRUNC 3-15 Uso della funzione MOD 3-16 Uso delle date 3-17 Operazioni aritmetiche con le date 3-19 Uso degli operatori aritmetici con le date 3-20 Funzioni di data 3-21 Uso delle funzioni di data 3-22 Panoramica dell'esercitazione 3: prima parte 3-24 Funzioni di conversione 3-25 Conversione implicita tra tipi di dati 3-26 Conversione esplicita tra tipi di dati 3-28 Uso della funzione TO_CHAR con le date 3-31 Elementi del modello del formato data 3-32 Uso della funzione TO_CHAR con le date 3-36 Uso della funzione TO_CHAR con i numeri 3-37 Uso delle funzioni TO_NUMBER e TO_DATE 3-39 Formato data RR 3-41 Esempio di formato data RR 3-42 Nidificazione delle funzioni 3-43 Funzioni generali 3-45 Funzione NVL 3-46 Uso della funzione NVL 3-47 Uso della funzione NVL2 3-48 Uso della funzione NULLIF 3-49 Uso della funzione COALESCE 3-50 Espressioni condizionali 3-52 Espressione CASE 3-53 Uso dell'espressione CASE 3-54 Funzione DECODE 3-55 Uso della funzione DECODE 3-56 Riepilogo 3-58 Panoramica dell'esercitazione 3, seconda parte 3-59 4 Visualizzazione di dati da pi tabelle Obiettivi 4-2 Recupero di dati da pi tabelle 4-3 Prodotti cartesiani 4-4 Generazione di un prodotto cartesiano 4-5 Tipi di join 4-6 Unione tramite join di tabelle mediante la sintassi Oracle 4-7 Definizione di equijoin 4-8

v

Recupero di record tramite equijoin 4-9 Condizioni di ricerca aggiuntive tramite l'operatore AND 4-10 Qualificazione di nomi di colonne ambigui 4-11 Uso degli alias di tabella 4-12 Unione tramite join di pi di due tabelle 4-13 Non-equijoin 4-14 Recupero di record tramite non-equijoin 4-15 Outer join 4-16 Sintassi di outer join 4-17 Uso degli outer join 4-18 Self join 4-19 Unione tramite join di una tabella a se stessa 4-20 Panoramica dell'esercitazione 4, prima parte 4-21 Unione tramite join di tabelle mediante la sintassi SQL: 1999 4-22 Creazione di cross join 4-23 Creazione di natural join 4-24 Recupero di record tramite natural join 4-25 Creazione di join con la clausola USING 4-26 Recupero di record con la clausola USING 4-27 Creazione di join con la clausola ON 4-28 Recupero di record con la clausola ON 4-29 Creazione di join a tre livelli con la clausola ON 4-30 Confronto tra INNER JOIN e OUTER JOIN 4-31 LEFT OUTER JOIN 4-32 RIGHT OUTER JOIN 4-33 FULL OUTER JOIN 4-34 Condizioni aggiuntive 4-35 Riepilogo 4-36 Panoramica dell'esercitazione 4, seconda parte 4-37 5 Aggregazione di dati mediante le funzioni di gruppo Obiettivi 5-2 Definizione di funzione di gruppo 5-3 Tipi di funzioni di gruppo 5-4 Sintassi delle funzioni di gruppo 5-5 Uso delle funzioni AVG e SUM 5-6 Uso delle funzioni MIN e MAX 5-7 Uso della funzione COUNT 5-8 Uso della parola chiave DISTINCT 5-10 Funzioni di gruppo e valori nulli 5-11 Uso della funzione NVL con le funzioni di gruppo 5-12 Creazione di gruppi di dati 5-13 Creazione di gruppi di dati: sintassi della clausola GROUP BY 5-14 Uso della clausola GROUP BY 5-15 Raggruppamento in base a pi colonne 5-17vi

Uso della clausola GROUP BY su pi colonne 5-18 Query non valide con le funzioni di gruppo 5-19 Esclusione dei risultati di raggruppamento 5-21 Esclusione dei risultati di raggruppamento: clausola HAVING 5-22 Uso della clausola HAVING 5-23 Funzioni di gruppo nidificate 5-25 Riepilogo 5-26 Panoramica dell'esercitazione 5 5-27 6 Subquery Obiettivi 6-2 Uso di una subquery per la soluzione di un problema 6-3 Sintassi delle subquery 6-4 Uso di una subquery 6-5 Regole per l'uso delle subquery 6-6 Tipi di subquery 6-7 Subquery che restituiscono una sola riga 6-8 Esecuzione di subquery che restituiscono una sola riga 6-9 Uso delle funzioni di gruppo in una subquery 6-10 Uso della clausola HAVING con le subquery 6-11 Istruzione contenente errori 6-12 Istruzione che non restituisce righe 6-13 Subquery che restituiscono pi righe 6-14 Uso dell'operatore ANY nelle subquery che restituiscono pi righe 6-15 Uso dell'operatore ALL nelle subquery che restituiscono pi righe 6-16 Valori nulli in una subquery 6-17 Riepilogo 6-18 Panoramica dell'esercitazione 6 6-19 Generazione di output leggibile con iSQL*Plus Obiettivi 7-2 Variabili di sostituzione 7-3 Uso della variabile di sostituzione 7-5 Uso dei valori di tipo carattere e data con le variabili di sostituzione 7-7 Specifica di nomi di colonna, espressioni e testo 7-8 Definizione delle variabili di sostituzione 7-10 Comandi DEFINE e UNDEFINE 7-11 Uso del comando DEFINE con la variabile di sostituzione 7-12 Uso della variabile di sostituzione doppia 7-13 Uso del comando VERIFY 7-14 Personalizzazione dell'ambiente iSQL*Plus 7-15 Variabili del comando SET 7-16 Comandi di formattazione iSQL*Plus 7-17 Comando COLUMN 7-18 Uso del comando COLUMN 7-19

7

vii

Modelli di formato COLUMN 7-20 Uso del comando BREAK 7-21 Uso dei comandi TTITLE e BTITLE 7-22 Creazione di uno script per l'esecuzione di un report 7-24 Report di esempio 7-26 Riepilogo 7-28 Panoramica dell'esercitazione 7 7-29 8 Manipolazione dei dati Obiettivi 8-2 Linguaggio DML (Data Manipulation Language) 8-3 Aggiunta di una nuova riga a una tabella 8-4 Sintassi dell'Istruzione INSERT 8-5 Inserimento di nuove righe 8-6 Inserimento di righe con valori nulli 8-7 Inserimento di valori speciali 8-8 Inserimento di valori di tipo data specifici 8-9 Creazione di uno script 8-10 Copia di righe da un'altra tabella 8-11 Modifica dei dati in una tabella 8-12 Sintassi dell'istruzione UPDATE 8-13 Aggiornamento di righe in una tabella 8-14 Aggiornamento di due colonne mediante una subquery 8-15 Aggiornamento delle righe in base a un'altra tabella 8-16 Errore del vincolo di integrit durante l'aggiornamento delle righe 8-17 Rimozione di una riga da una tabella 8-18 Istruzione DELETE 8-19 Eliminazione di righe da una tabella 8-20 Eliminazione di righe in base a un'altra tabella 8-21 Errore del vincolo di integrit durante l'eliminazione delle righe 8-22 Uso di una subquery in un'istruzione INSERT 8-23 Uso della parola chiave WITH CHECK OPTION su istruzioni DML 8-25 Panoramica della funzione predefinita esplicita 8-26 Uso dei valori predefiniti espliciti 8-27 Istruzione MERGE 8-28 Sintassi dell'istruzione MERGE 8-29 Unione di righe 8-30 Transazioni di database 8-32 Vantaggi delle istruzioni COMMIT e ROLLBACK 8-34 Controllo delle transazioni 8-35 Esecuzione del rollback delle modifiche su un savepoint 8-36 Elaborazione di transazioni implicite 8-37 Stato dei dati prima dell'esecuzione dell'istruzione COMMIT o ROLLBACK 8-38 Stato dei dati dopo l'esecuzione dell'istruzione COMMIT 8-39 Esecuzione del commit dei dati 8-40viii

Stato dei dati dopo l'esecuzione dell'istruzione ROLLBACK 8-41 Rollback a livello di istruzione 8-42 Coerenza in lettura 8-43 Implementazione della coerenza in lettura 8-44 Esecuzione del lock 8-45 Lock implicito 8-46 Riepilogo 8-47 Panoramica dell'esercitazione 8 8-48 Esempio di coerenza in lettura 8-52 9 Creazione e gestione di tabelle Obiettivi 9-2 Oggetti di database 9-3 Regole di denominazione 9-4 Istruzione CREATE TABLE 9-5 Riferimenti a tabelle di altri utenti 9-6 Opzione DEFAULT 9-7 Creazione di tabelle 9-8 Tabelle nel database Oracle 9-9 Esecuzione di query sul dizionario dati 9-10 Tipi di dati 9-11 Tipi di dati di data e ora 9-13 Tipo di dati TIMESTAMP WITH TIME ZONE 9-15 Tipo di dati TIMESTAMP WITH LOCAL TIME 9-16 tipo di dati INTERVAL YEAR TO MONTH 9-17 Tipo di dati INTERVAL DAY TO SECOND 9-18 Creazione di una tabella mediante la sintassi di una subquery 9-20 Creazione di una tabella mediante una subquery 9-21 Istruzione ALTER TABLE 9-22 Aggiunta di una colonna 9-24 Modifica di una colonna 9-26 Eliminazione di una colonna 9-27 Opzione SET UNUSED 9-28 Eliminazione di una tabella 9-29 Modifica del nome di un oggetto 9-30 Troncamento di una tabella 9-31 Aggiunta di commenti a una tabella 9-32 Riepilogo 9-33 Panoramica dell'esercitazione 9 9-34

ix

10 Inclusione di vincoli Obiettivi 10-2 Definizione dei vincoli 10-3 Regole per l'uso dei vincoli 10-4 Definizione di vincoli 10-5 Vincolo NOT NULL 10-7 Vincolo UNIQUE 10-9 Vincolo PRIMARY KEY 10-11 Vincolo FOREIGN KEY 10-13 Parole chiave del vincolo FOREIGN KEY 10-15 Vincolo CHECK 10-16 Sintassi per l'aggiunta di un vincolo 10-17 Aggiunta di un vincolo 10-18 Eliminazione di un vincolo 10-19 Disabilitazione di un vincolo 10-20 Abilitazione di un vincolo 10-21 Vincoli con clausola CASCADE CONSTRAINTS 10-22 Visualizzazione dei vincoli 10-24 Visualizzazione delle colonne associate a vincoli 10-25 Riepilogo 10-26 Panoramica dell'esercitazione 10 10-27 11 Creazione di viste Obiettivi 11-2 Oggetti di database 11-3 Definizione di vista 11-4 Finalit delle viste 11-5 Viste semplici e viste complesse 11-6 Creazione di una vista 11-7 Recupero di dati da una vista 11-10 Esecuzione di query su una vista 11-11 Modifica di una vista 11-12 Creazione di una vista complessa 11-13 Regole per l'esecuzione di operazioni DML su una vista 11-14 Uso della clausola WITH CHECK OPTION 11-17 Disabilitazione delle operazioni DML 11-18 Rimozione di una vista 11-20 Viste inline 11-21 Analisi Top-N 11-22 Esecuzione dell'analisi Top-N 11-23 Esempio di analisi Top-N 11-24 Riepilogo 11-25 Panoramica dell'esercitazione 11 11-26

x

12 Altri oggetti di database Obiettivi 12-2 Oggetti di database 12-3 Definizione di sequenza 12-4 Sintassi dell'istruzione CREATE SEQUENCE 12-5 Creazione di una sequenza 12-6 Conferma di sequenze 12-7 Pseudo-colonne NEXTVAL e CURRVAL 12-8 Uso di una sequenza 12-10 Modifica di una sequenza 12-12 Regole per la modifica di una sequenza 12-13 Rimozione di una sequenza 12-14 Definizione di indice 12-15 Modalit di creazione degli indici 12-16 Creazione di un indice 12-17 Situazioni che richiedono la creazione di un indice 12-18 Situazioni che non richiedono la creazione di un indice 12-19 Conferma degli indici 12-20 Indici basati sulle funzioni 12-21 Rimozione di un indice 12-23 Sinonimi 12-24 Creazione e rimozione di sinonimi 12-25 Riepilogo 12-26 Panoramica dell'esercitazione 12 12-27 13 Controllo dell'accesso degli utenti Obiettivi 13-2 Controllo dell'accesso degli utenti 13-3 Privilegi 13-4 Privilegi di sistema 13-5 Creazione di utenti 13-6 Privilegi di sistema degli utenti 13-7 Concessione dei privilegi di sistema 13-8 Definizione di ruolo 13-9 Creazione di un ruolo e concessione dei privilegi 13-10 Modifica della password 13-11 Privilegi sugli oggetti 13-12 Concessione di privilegi sugli oggetti 13-14 Uso delle parole chiave WITH GRANT OPTION e PUBLIC 13-15 Conferma dei privilegi concessi 13-16 Revoca dei privilegi sugli oggetti 13-17 Revoca dei privilegi sugli oggetti 13-18 Database link 13-19 Riepilogo 13-21 Panoramica dell'esercitazione 13 13-22xi

14 Sessione pratica di SQL Panoramica della sessione pratica 14-2 15 Uso degli operatori SET Obiettivi 15-2 Operatori SET 15-3 Tabelle utilizzate in questa lezione 15-4 Operatore UNION 15-7 Uso dell'operatore UNION 15-8 Operatore UNION ALL 15-10 Uso dell'operatore UNION ALL 15-11 Operatore INTERSECT 15-12 Uso dell'operatore INTERSECT 15-13 Operatore MINUS 15-14 Regole dell'operatore SET 15-16 Oracle Server e gli operatori SET 15-17 Corrispondenza delle istruzioni SELECT 15-18 Controllo dell'ordine delle righe 15-20 Riepilogo 15-21 Panoramica dell'esercitazione 15 15-22 16 Funzioni di data e ora di Oracle9i Obiettivi 16-2 FUSI ORARI 16-3 Supporto per data e ora in Oracle9i 16-4 TZ_OFFSET 16-6 CURRENT_DATE 16-8 CURRENT_TIMESTAMP 16-9 LOCALTIMESTAMP 16-10 DBTIMEZONE e SESSIONTIMEZONE 16-11 EXTRACT 16-12 Conversione TIMESTAMP con FROM_TZ 16-13 Conversione da STRING To TIMESTAMP mediante TO_TIMESTAMP e TO_TIMESTAMP_TZ 16-14 Conversione dell'intervallo di tempo con TO_YMINTERVAL 16-15 Riepilogo 16-16 Panoramica dell'esercitazione 16 16-17 17 Funzioni avanzate della clausola GROUP BY Obiettivi 17-2 Ripasso delle funzioni di gruppo 17-3 Ripasso della clausola GROUP BY 17-4 Ripasso della clausola HAVING 17-5 GROUP BY con gli operatori ROLLUP e CUBE 17-6 Operatore ROLLUP 17-7 Esempio di operatore ROLLUP 17-8xii

Operatore CUBE 17-9 Esempio di operatore CUBE 17-10 Funzione GROUPING 17-11 Esempio di funzione GROUPING 17-12 GROUPING SETS 17-13 Esempio di GROUPING SETS 17-15 Colonne composte 17-17 Esempio di colonne composte 17-19 Raggruppamenti concatenati 17-21 Esempio di raggruppamenti concatenati 17-22 Riepilogo 17-23 Panoramica dell'esercitazione 17 17-24 18 Subquery avanzate Obiettivi 18-2 Definizione di subquery 18-3 Subquery 18-4 Uso di una subquery 18-5 Subquery che restituiscono pi colonne 18-6 Confronto tra colonne 18-7 Subquery basate su confronti a coppie 18-8 Subquery basate su confronti incrociati 18-9 Uso di una subquery nella clausola FROM 18-10 Espressioni di subquery scalari 18-11 Esempi di subquery scalari 18-12 Subquery correlate 18-14 Uso di subquery correlate 18-16 Uso dell'operatore EXISTS 18-18 Uso dell'operatore NOT EXISTS 18-20 Subquery UPDATE correlata 18-21 Subquery DELETE correlata 18-24 Clausola WITH 18-26 Esempio di clausola WITH 18-27 Riepilogo 18-29 Panoramica dell'esercitazione 18 18-31 19 Query gerarchiche Obiettivi 19-2 Dati di esempio della tabella EMPLOYEES 19-3 Struttura ad albero naturale 19-4 Query gerarchiche 19-5 Esame della struttura ad albero 19-6 Esame della struttura ad albero: bottom-up 19-8 Esame della struttura ad albero: top-down 19-9 Classificazione di righe con la pseudo-colonna LEVEL 19-10

xiii

Formattazione di report gerarchici con LEVEL e LPAD 19-11 Cancellazione di diramazioni 19-13 Riepilogo 19-14 Panoramica dell'esercitazione 19 19-15 20 Estensioni alle istruzioni DML e DDL in Oracle9i Obiettivi 20-2 Ripasso dell'istruzione INSERT 20-3 Ripasso dell'istruzione UPDATE 20-4 Panoramica delle istruzioni INSERT su pi tabelle 20-5 Panoramica delle istruzioni INSERT su pi tabelle 20-6 Tipi di istruzioni INSERT su pi tabelle 20-7 Istruzioni INSERT su pi tabelle 20-8 INSERT ALL non condizionale 20-10 INSERT ALL condizionale 20-11 INSERT FIRST condizionale 20-13 INSERT pivot 20-15 Tabelle esterne 20-18 Creazione di una tabella esterna 20-19 Esempio di creazione di una tabella esterna 20-20 Esecuzione di query sulle tabelle esterne 20-23 Clausola CREATE INDEX nell'istruzione CREATE TABLE 20-24 Riepilogo 20-25 Panoramica dell'esercitazione 20 20-26 A Soluzioni delle esercitazioni B Descrizione e dati delle tabelle C Uso di SQL* Plus D Scrittura di script avanzati E Componenti architetturali di Oracle Indice Esercitazioni aggiuntive Soluzioni delle esercitazioni aggiuntive Tabelle e descrizioni delle esercitazioni aggiuntive

xiv

Prefazione

Profilo Requisiti Prima di iniziare il corso necessario saper utilizzare un'interfaccia GUI. I requisiti necessari sono una buona conoscenza dei concetti e delle tecniche di elaborazione dei dati. Struttura del corso Introduzione a Oracle9i: SQL un corso con istruttore e si articola in parti teoriche ed esercitazioni pratiche. Le dimostrazioni in linea e le sessioni di esercitazioni consentono di mettere in pratica le nozioni e i concetti illustrati nel corso.

Preface-3

Pubblicazioni correlate Pubblicazioni Oracle Titolo Codice identificativo

Oracle9i Reference, Release 1 (9.0.1) Oracle9i SQL Reference, Release 1 (9.0.1) Oracle9i Concepts, Release 1 (9.0.0) Release 1 (9.0.1) iSQL*Plus Users Guide and Reference, Release 9.0.0 SQL*Plus Users Guide and Reference, Release 9.0.1Altre pubblicazioni System Release Bulletin Guide all'installazione e guide per l'utente File read.me

A90190-02 A90125-01 A88856-02 A88876-02 A88826-01 A88827-02

Oracle9i Server Application Developers Guide Fundamentals

Pubblicazioni del gruppo IOUG (International Oracle User's Group) Oracle Magazine

Preface-4

Convenzioni tipograficheDi seguito vengono elencate le convenzioni tipografiche utilizzate in modo specifico nel testo o nel codice.

Convenzioni tipografiche nel testo Convenzione Maiuscolo Oggetto o termine Comandi, funzioni, nomi di colonna, nomi di tabella, oggetti PL/SQL, schemi, Nomi di file, variabili di sintassi, nomi utente, password Nomi di trigger e pulsanti Esempio Utilizzare il comando SELECT per visualizzare informazioni memorizzate nella colonna LAST_NAME colonna della tabella EMPLOYEES.

Minuscolo corsivo

dove:

ruolo

il nome del ruolo da creare.

Iniziale maiuscola

Assegnare un trigger When-Validate-Item al blocco ORD. Scegliere Annulla.

Corsivo

Pubblicazioni, nomi di corsi e manuali e parole o frasi a cui si desidera conferire particolare Enfasi

Per ulteriori informazioni, consultare Oracle Server SQL Language Reference Manual. Non salvare le modifiche al database.

Virgolette

Titoli delle lezioni L'argomento trattato nella Lezione 3 a cui si fa riferimento "Utilizzo degli oggetti". in un corso

Preface-5

Convenzioni tipografiche (continuazione) Convenzioni tipografiche nel codice Convenzione Maiuscolo Minuscolo, corsivo Iniziale maiuscola Oggetto o termine Comandi, funzioni Esempio SELECT employee_id FROM employees;

Variabili della sintassi CREATE ROLE ruolo; Trigger di Forms Form module: ORD Trigger level: S_ITEM.QUANTITY item Trigger name: When-Validate-Item . . . . . . OG_ACTIVATE_LAYER (OG_GET_LAYER ('prod_pie_layer')) . . . SELECT last_name FROM employees;

Minuscolo

Nomi di colonna, nomi di tabella, nomi di file, oggetti PL/SQL

Grassetto

Testo immesso dall'utente

CREATE USER scott IDENTIFIED BY tiger;

Preface-6

Percorsi formativi consigliati

Introduzione a Oracle9i: SQL Percorsi formativi consigliati- 2

Percorso formativo per linguaggi per Oracle9iIntroduction to Oracle9i: SQLIntroduction to Oracle9i: SQL Basics Oracle9i: Advanced SQL

or

Introduction to Oracle9i for Experienced SQL Users inClass

Oracle9i: SQL for End Users inClass

inClass

Oracle9i: Program with PL/SQLOracle9i: PL/SQL Fundamentals Oracle9i: Develop PL/SQL Program Units

inClass Oracle9i: Advanced PL/SQL inClass

Copyright Oracle Corporation, 2001. Tutti i diritti riservati.

Percorso formativo integrativo per linguaggi Introduction to Oracle9i: SQL composto da due moduli, Introduction to Oracle9i: SQL Basics e Oracle9i: Advanced SQL. In Introduction to Oracle9i: SQL Basics viene descritto come creare strutture di database e memorizzare, recuperare e manipolare i dati in un database relazionale. In Oracle9i: Advanced SQL vengono descritte le istruzioni SELECT avanzate, Oracle SQL e la creazione di report iSQL*Plus. Per gli utenti che hanno gi lavorato con altri database relazionali e conoscono il linguaggio SQL disponibile un altro corso denominato Introduction to Oracle9i for Experienced SQL Users. In questo corso vengono descritte le istruzioni SQL che non fanno parte di ANSI SQL, ma sono specifiche di Oracle. Oracle9i: Program with PL/SQL composto da due moduli, Oracle9i: PL/SQL Fundamentals e Oracle9i: Develop PL/SQL Program Units. In Oracle9i: PL/SQL Fundamentals vengono descritte le nozioni fondamentali di PL/SQL, inclusa la struttura del linguaggio PL/SQL, il flusso di esecuzione e l'interfaccia con SQL. In Oracle9i: Develop PL/SQL Program Units viene descritto come creare stored procedure, function, package e trigger nonch come gestire ed eseguire il debug del codice di programma PL/SQL. Oracle9i: SQL for End Users destinato agli utenti che hanno poca esperienza in materia di programmazione e tratta le istruzioni SQL di base. Questo corso rivolto agli utenti finali che desiderano acquisire conoscenze di base sulla programmazione in SQL. Oracle9i: Advanced PL/SQL rivolto agli utenti che hanno gi maturato un'esperienza nel campo della programmazione PL/SQL. In questo corso vengono descritte la scrittura di codice efficace, la programmazione orientata a oggetti, l'uso di codice esterno e le funzioni avanzate disponibili nei package forniti con Oracle. Introduzione a Oracle9i: SQL Percorsi formativi consigliati- 3

Percorso formativo per linguaggi per Oracle9iIntroduction to Oracle9i: SQLIntroduction to Oracle9i: SQL Basics Oracle9i: Advanced SQL

or

Introduction to Oracle9i for Experienced SQL Users inClass

Oracle9i: SQL for End Users inClass

inClass

Oracle9i: Program with PL/SQLOracle9i: PL/SQL Fundamentals Oracle9i: Develop PL/SQL Program Units

inClass Oracle9i: Advanced PL/SQL inClass

Copyright Oracle Corporation, 2001. Tutti i diritti riservati.

Percorso formativo integrativo per linguaggi Nella diapositiva sono riportati diversi moduli e corsi disponibili nel percorso formativo per linguaggi. Nella tabella seguente sono elencati i moduli e i corsi, nonch i TBT equivalenti.

Corso o modulo Introduction to Oracle9i: SQL Basics Oracle9i: Advanced SQL Introduction to Oracle9i for Experienced SQL Users Oracle9i: PL/SQL Fundamentals Oracle9i: Develop PL/SQL Program Units Oracle9i: SQL for End Users Oracle9i: Advanced PL/SQL

TBT equivalente Oracle SQL: Basic SELECT Statements Oracle SQL: Data Retrieval Techniques Oracle SQL: DML and DDL Oracle SQL and SQL*Plus: Advanced SELECT Statements Oracle SQL and SQL*Plus: SQL*Plus and Reporting Oracle SQL Specifics: Retrieving and Formatting Data Oracle SQL Specifics: Creating and Managing Database Objects PL/SQL: Basics PL/SQL: Procedures, Functions, and Packages PL/SQL: Database Programming SQL for End Users: Part 1 SQL for End Users: Part 2 Advanced PL/SQL: Implementation and Advanced Features Advanced PL/SQL: Design Considerations and Object Types

Introduzione a Oracle9i: SQL Percorsi formativi consigliati- 4

Introduzione

Copyright Oracle Corporation, 2001. Tutti i diritti riservati.

Obiettivi

Al termine della lezione, lo studente sar in grado di:

descrivere le caratteristiche di Oracle9i; discutere gli aspetti teorici e pratici di un database relazionale; descrivere l'implementazione Oracle dei sistemi RDBMS e ORDBMS.

I-2

Copyright Oracle Corporation, 2001. Tutti i diritti riservati.

Obiettivo della lezione In questa lezione verranno illustrati i sistemi RDBMS (sistema di gestione di database relazionali, Relational Database Management System) e ORDBMS (sistema di gestione di database relazionali a oggetti, Object Relational Database Management System). Verranno inoltre presentati i seguenti argomenti: istruzioni SQL specifiche di Oracle; iSQL*Plus, utilizzato per l'esecuzione di istruzioni SQL e per la creazione e la formattazione di report.

Introduzione a Oracle9i: SQL I-2

Oracle9i

Scalabilit

Un unico fornitore

Affidabilit

Un'unica interfaccia di gestione Set di competenze comuni

Un solo modello di sviluppo

I-3

Copyright Oracle Corporation, 2001. Tutti i diritti riservati.

Caratteristiche di Oracle9i Oracle fornisce un'infrastruttura completa a prestazioni elevate per l'e-business: Oracle9i include tutti gli strumenti necessari per sviluppare, distribuire e gestire applicazioni Internet. I vantaggi includono: scalabilit dai dipartimenti fino ai siti e-business aziendali; architettura robusta, affidabile, disponibile, protetta; un solo modello di sviluppo, opzioni per una facile distribuzione; possibilit di sfruttare il set di competenze corrente di un'organizzazione in tutta la piattaforma Oracle (compreso SQL, PL/SQL, Java e XML); un'unica interfaccia di gestione per tutte le applicazioni; tecnologie standard del settore, nessun blocco proprietario.

Introduzione a Oracle9i: SQL I-3

Oracle9i

I-4

Copyright Oracle Corporation, 2001. Tutti i diritti riservati.

Oracle9i I due prodotti Oracle9i Application Server e Oracle9i Database forniscono un'infrastruttura completa e semplice per applicazioni Internet.

Introduzione a Oracle9i: SQL I-4

Oracle9i Application ServerPortali

A P A C H E

Applicazioni transazionali

Business Intelligence intelligence

Integrazione

I-5

Copyright Oracle Corporation, 2001. Tutti i diritti riservati.

Oracle9i Application Server Oracle9i Application Server (Oracle9iAS) consente di eseguire tutte le applicazioni, mentre Oracle9i Database di memorizzare tutti i dati. Oracle9i Application Server l'unico application server che include servizi per le diverse applicazioni server che si desidera eseguire. Su Oracle9iAS possibile eseguire: portali o siti Web; applicazioni transazionali Java; applicazioni di business intelligence. Fornisce inoltre integrazione tra utenti, applicazioni e dati in tutta l'organizzazione.

Introduzione a Oracle9i: SQL I-5

Oracle9i DatabaseDati relazionali a oggetti

Documenti

XMLDati multimediali

Messaggi

I-6

Copyright Oracle Corporation, 2001. Tutti i diritti riservati.

Oracle9i Database I ruoli dei due prodotti sono molto chiari. Oracle9i Database gestisce tutti i dati e non solo i dati relazionali a oggetti, in genere gestiti da un database aziendale; possono infatti essere anche dati non strutturati quali: fogli di calcolo; documenti Word; presentazioni PowerPoint; XML; dati multimediali, quali file MP3, di immagine, video e altro ancora.

Non neppure necessario che i dati siano inseriti nel database. Oracle9i Database comprende servizi che consentono di memorizzare metadati sulle informazioni memorizzate nei file system. possibile utilizzare il database server per gestire e recuperare le informazioni indipendentemente dalla posizione.

Introduzione a Oracle9i: SQL I-6

RDBMS e ORDBMS

Modello relazionale e modello relazionale a oggetti Tipi di dati e oggetti definiti dall'utente Compatibilit assoluta con i database relazionali Supporto di oggetti multimediali e LOB (Large Object) Funzionalit database server di qualit elevata

I-7

Copyright Oracle Corporation, 2001. Tutti i diritti riservati.

Informazioni su Oracle Server Oracle9i Server supporta sia il modello relazionale che quello relazionale a oggetti ed estende la capacit di modellare i dati per supportare un modello di database relazionale a oggetti che consente di sfruttare la programmazione orientata a oggetti, tipi di dati complessi, business object complessi e la completa compatibilit con l'universo relazionale. Sono diverse le funzioni incluse che garantiscono prestazioni ottimali e una migliore funzionalit delle applicazioni OLTP (Online Transaction Processing), ad esempio una migliore condivisione delle strutture dei dati in fase di esecuzione, buffer cache pi estese e vincoli differibili. Le applicazioni di data warehouse trarranno vantaggio da miglioramenti quali l'esecuzione parallela di operazioni di INSERT, UPDATE e DELETE, il partizionamento e l'ottimizzazione di query parallele. Operando nell'ambito dell'architettura NCA (Network Computing Architecture), Oracle9i supporta applicazioni client-server e basate sul Web distribuite e a pi livelli. Oracle9i pu essere utilizzato da decine di migliaia di utenti contemporaneamente, supporta fino a 512 petabyte di dati (1 petabyte equivale a 1.000 terabyte) e pu gestire qualsiasi tipo di dato, compresi dati di testo, spaziali, di immagini, audio, video e temporali, oltre ai tradizionali dati strutturati. Per ulteriori informazioni, consultare Oracle9i Concepts.

Introduzione a Oracle9i: SQL I-7

Piattaforma Internet OracleQualsiasi client di posta Qualsiasi Qualsiasi browser elettronica client FTP

Client

Strumenti di sviluppo

Gestione sistema

Applicazioni InternetBusiness Logica di presentazione logic e dati e business logic

SQL

PL/SQL

Database

Application server

Java

Servizi di reteI-8

Copyright Oracle Corporation, 2001. Tutti i diritti riservati.

Piattaforma Internet Oracle Oracle fornisce una piattaforma Internet completa a prestazioni elevate per il commercio elettronico e il data warehousing. Questa piattaforma integrata include tutti gli strumenti necessari per sviluppare, distribuire e gestire applicazioni Internet. La piattaforma Internet Oracle costituita dai tre elementi principali seguenti: client basati su browser per l'elaborazione della presentazione; application server per l'esecuzione della business logic e la fornitura della logica di presentazione ai client basati su browser; database per l'esecuzione della business logic con uso intensivo del database e la fornitura dei dati.

Oracle offre un'ampia gamma dei pi avanzati strumenti di sviluppo a interfaccia GUI per la realizzazione di business application, oltre a una nutrita serie di applicazioni software per varie aree di attivit e settori. Stored procedure, stored function e package possono essere scritti con SQL, PL/SQL o Java.

Introduzione a Oracle9i: SQL I-8

Passi di sviluppo di un sistemaAnalisi strategica e analisi di dettaglio Progettazione Creazione e documentazione Transizione Produzione

I-9

Copyright Oracle Corporation, 2001. Tutti i diritti riservati.

Passi di sviluppo di un sistema Dalla concezione alla produzione, possibile sviluppare un database utilizzando una serie articolata di passi di sviluppo di un sistema che prende il nome di system development life cycle. Questo approccio sistematico e top-down allo sviluppo dei database trasforma i requisiti di business di accesso alle informazioni in un database operativo. Analisi strategica e analisi di dettaglio Studiare e analizzare i requisiti di business. Intervistare utenti e responsabili per identificare le esigenze di accesso alle informazioni. Tenere conto delle dichiarazioni degli obiettivi aziendali e applicativi e di eventuali specifiche di sistema future. Creare modelli del sistema. Trasformare gli elementi acquisiti in una rappresentazione grafica delle esigenze e delle regole aziendali. Confermare e perfezionare il modello con l'ausilio di analisti ed esperti.

Progettazione Progettare il database in base al modello sviluppato nella fase di analisi strategica e di dettaglio. Creazione e documentazione Creare il sistema prototipo. Scrivere ed eseguire i comandi per creare le tabelle e gli oggetti di supporto per il database. Sviluppare la documentazione per l'utente, il testo della Guida in linea e i manuali operativi per supportare l'uso e il funzionamento del sistema. Introduzione a Oracle9i: SQL I-9

Passi di sviluppo di un sistemaAnalisi strategica e analisi di dettaglio Progettazione Creazione e documentazione Transizione Produzione

I-10

Copyright Oracle Corporation, 2001. Tutti i diritti riservati.

Passi di sviluppo di un sistema (continuazione) Transizione Perfezionare il prototipo. Portare un'applicazione in produzione dopo averne valutato l'accettabilit da parte degli utenti, aver effettuato le conversioni dei dati esistenti, aver testato l'applicazione in situazione di operazioni parallele apportando eventuali modifiche necessarie. Produzione Distribuire il sistema agli utenti. Mettere in funzione il sistema di produzione. Monitorarne le prestazioni, migliorarlo e perfezionarlo. Nota: le diverse fasi del system development life cycle, ovvero dei passi di sviluppo di un sistema, possono essere eseguiti ripetutamente. Il presente corso incentrato sulla fase di creazione.

Introduzione a Oracle9i: SQL I-10

Memorizzazione di dati su supporti diversi

Database Foglio di calcolo elettronicoI-11

Archivio

Copyright Oracle Corporation, 2001. Tutti i diritti riservati.

Memorizzazione delle informazioni Ogni organizzazione ha esigenze specifiche di accesso alle informazioni. Una biblioteca, ad esempio, deve gestire una lista degli iscritti, dei volumi, delle date di riconsegna degli stessi e delle penali. Una societ, invece, ha l'esigenza di memorizzare informazioni anagrafiche sugli impiegati, i dipartimenti di appartenenza e gli stipendi. Queste informazioni vengono definite dati. Le organizzazioni possono memorizzare i dati su diversi tipi di supporto e in diversi formati, quali documenti cartacei raccolti in appositi archivi o dati memorizzati in fogli di calcolo elettronici o database. I database sono raccolte organizzate di informazioni. Per gestire i database occorrono appositi sistemi di gestione, detti DBMS (Database Management System). I DBMS sono programmi che memorizzano, recuperano e modificano su richiesta i dati del database. Esistono quattro tipi principali di database: gerarchico, reticolare, relazionale e, quello introdotto pi di recente, relazionale a oggetti.

Introduzione a Oracle9i: SQL I-11

Concetto di database relazionale

Nel 1970 E.F. Codd propose il modello relazionale per sistemi di database. Tale modello ha costituito la base del sistema di gestione di database relazionali (RDBMS). Il modello relazionale costituito dai seguenti elementi: insieme di oggetti o relazioni; serie di operatori per agire sulle relazioni; integrit dei dati per garantire accuratezza e uniformit.

I-12

Copyright Oracle Corporation, 2001. Tutti i diritti riservati.

Modello relazionale I princpi del modello relazionale furono indicati per la prima volta da E. F. Codd in una pubblicazione del giugno 1970 dal titolo "A Relational Model of Data for Large Shared Data Banks", nella quale l'autore propose il modello relazionale per sistemi di database. I modelli pi diffusi utilizzati in quell'epoca erano di tipo gerarchico, reticolare oppure semplici file sequenziali (flat file). I sistemi di gestione di database relazionali (RDBMS) divennero ben presto molto diffusi, soprattutto per la facilit d'uso e la flessibilit della struttura. Inoltre, alcuni tra i produttori pi innovativi, come la Oracle, integrarono il sistema RDBMS con una serie di potenti strumenti di sviluppo di applicazioni e prodotti per gli utenti finali, fornendo cos una soluzione globale. Componenti del modello relazionale Insiemi di oggetti o relazioni in cui vengono memorizzati i dati Serie di operatori in grado di agire sulle relazioni in modo da produrne altre Integrit dei dati per garantire accuratezza e uniformit

Per ulteriori informazioni, consultare E. F. Codd, The Relational Model for Database Management Version 2 (Reading, Mass.: Addison-Wesley, 1990).

Introduzione a Oracle9i: SQL I-12

Definizione di database relazionale

Un database relazionale un insieme di relazioni o di tabelle bidimensionali. Oracle server

Nome tabella: EMPLOYEES

Nome tabella: DEPARTMENTS

I-13

Copyright Oracle Corporation, 2001. Tutti i diritti riservati.

Definizione di database relazionale Un database relazionale utilizza relazioni o tabelle bidimensionali per memorizzare le informazioni. Si potrebbe, ad esempio, voler memorizzare informazioni su tutti gli impiegati di un'azienda. In un database relazionale vengono create diverse tabelle per memorizzare diversi tipi di informazioni sugli impiegati, ad esempio una tabella per gli impiegati, una per i dipartimenti e una per gli stipendi.

Introduzione a Oracle9i: SQL I-13

Modelli di dati

Modello di sistema secondo il cliente

Modello di entit del modello del cliente Modello di tabella del modello di entit

Oracle Server

Tabelle su disco

I-14

Copyright Oracle Corporation, 2001. Tutti i diritti riservati.

Data Models I modelli costituiscono gli assi portanti della progettazione. I tecnici realizzano il modello di un'autovettura per studiare a fondo i minimi particolari prima di metterla in produzione. Analogamente, i progettisti di sistema sviluppano modelli per studiare a fondo le idee e migliorare la comprensione della struttura dei database. Scopo dei modelli I modelli aiutano a comunicare le idee concepite dalle persone e possono essere utilizzati per: comunicare; categorizzare; descrivere; specificare; indagare; dedurre; analizzare; imitare.

L'obiettivo quello di produrre un modello appropriato per i diversi usi, che possa essere compreso da un utente finale e che contenga dettagli sufficienti a consentire agli sviluppatori di realizzare un sistema di database. Introduzione a Oracle9i: SQL I-14

Modello entity relationship Creare un diagramma entity relationship in base alle specifiche aziendali o agli elementi acquisiti.IMPIEGATO #* matricola * nome o mansioneassegnato a composto da

DIPARTIMENTO #* numero * nome o localit

Scenario . . . Assegnare uno o pi impiegati a un

dipartimento. . . . . . Ad alcuni dipartimenti non stato ancora assegnato alcun impiegato. . .I-15 Copyright Oracle Corporation, 2001. Tutti i diritti riservati.

Modelli ER In un sistema efficace i dati sono suddivisi in categorie distinte o entit. Un modello entity relationship (ER) una rappresentazione delle diverse entit di un'azienda e delle relazioni tra le stesse. I modelli ER derivano dalle specifiche aziendali o dagli elementi acquisiti e vengono realizzati durante la fase analitica nell'ambito del system development life cycle, ovvero dei passi di sviluppo di un sistema. Consentono di separare le informazioni richieste da un'azienda dalle attivit eseguite nella stessa. Anche se le aziende possono cambiare attivit, il tipo di informazioni tende a rimanere costante. Di conseguenza anche le strutture dei dati tendono a essere costanti. Vantaggi dei modelli ER Documentano le informazioni per l'organizzazione in modo chiaro e preciso. Forniscono un'immagine chiara dei requisiti di accesso alle informazioni. Forniscono una rappresentazione grafica di facile comprensione per la progettazione del database. Costituiscono un'efficace struttura per l'integrazione di pi applicazioni. Componenti principali Entit: elemento significativo di cui occorre conoscere informazioni, ad esempio dipartimenti, impiegati e ordini. Attributo: elemento che descrive o qualifica un'entit. Ad esempio, gli attributi dell'entit impiegato sono matricola, nome, mansione, data di assunzione, numero di dipartimento e cos via. I singoli attributi possono essere obbligatori o facoltativi. Questo stato detto opzionalit. Relazione: associazione specificata tra entit, che indica opzionalit e cardinalit, ad esempio impiegati e dipartimenti, ordini e articoli. Introduzione a Oracle9i: SQL I-15

Convenzioni per i modelli entity relationshipEntit Rettangolo a bordi arrotondati Nome univoco singolare Maiuscolo Sinonimo tra parentesi Attributo Nome singolare Minuscolo Obbligatorio contrassegnato con "*" Facoltativo contrassegnato con "o"

IMPIEGATO #* matricola * nome o mansione

assegnato a composto da

DIPARTIMENTO #* numero * nome o localit

Identificatore univoco (UID, Unique Identifier) Primario contrassegnato con "#" Secondario contrassegnato con "(#)"I-16 Copyright Oracle Corporation, 2001. Tutti i diritti riservati.

Modelli ER (continuazione) Entit Per rappresentare un'entit in un modello utilizzare le seguenti convenzioni: rettangolo a bordi arrotondati di qualsiasi dimensione; nome entit univoco singolare; nome entit in maiuscolo; sinonimi facoltativi in maiuscolo tra parentesi ( ). Attributi Per rappresentare un attributo di un modello, utilizzare le seguenti convenzioni: nomi singolari in minuscolo; attributi obbligatori, o valori che devono essere conosciuti, contrassegnati con un asterisco *. attributi facoltativi, o valori che possono essere conosciuti, contrassegnati con la lettera o RelazioniSimbolo Linea tratteggiata Linea piena Linea a "zampa di gallina" Linea singola Descrizione Elemento facoltativo che indica "pu essere" Elemento obbligatorio che indica "deve essere" Elemento di cardinalit che indica "uno o pi" Elemento di cardinalit che indica "uno e uno solo"

Introduzione a Oracle9i: SQL I-16

Convenzioni utilizzate nei modelli entity relationshipEntit Rettangolo a bordi arrotondati Nome univoco singolare Maiuscolo Sinonimo tra parentesi Attributo Nome singolare Minuscolo Obbligatorio contrassegnato con "*" Facoltativo contrassegnato con "o"

IMPIEGATO #* matricola * nome o mansione

assegnato a

DIPARTIMENTO #* numero * nome composto da o localit

Identificatore univoco (UID, Unique Identifier) Primario contrassegnato con "#" Secondario contrassegnato con "(#)"I-17 Copyright Oracle Corporation, 2001. Tutti i diritti riservati.

Modelli ER (continuazione) Unique Identifiers Ogni direzione della relazione contiene: una label, ad esempio indicato da o assegnato a; un'opzionalit, ovvero deve essere o pu essere; una cardinalit, ovvero uno e uno solo oppure uno o pi.

Nota: Il termine cardinalit sinonimo di grado. Ogni entit di origine {pu essere | deve essere} nome relazionale di {una e una sola | una o pi} entit di destinazione. Nota: convenzione leggere in senso orario. Identificatori univoci Gli identificatori univoci (UID, Unique Identifier) sono combinazioni di attributi o di relazioni o di entrambi gli elementi, il cui scopo distinguere le occorrenze di un'entit. Ogni occorrenza di un'entit deve essere identificabile in modo univoco. Contrassegnare i singoli attributi che fanno parte dell'UID con un simbolo numerico # Contrassegnare gli UID secondari con il simbolo di un numero tra parentesi (#)

Introduzione a Oracle9i: SQL I-17

Correlazione di pi tabelle

Ogni riga di dati di una tabella identificata in modo univoco da una chiave primaria (PK). possibile correlare logicamente i dati di pi tabelle tramite chiavi esterne (FK).Nome tabella:DEPARTMENTS

Nome tabella:EMPLOYEES

Chiave primariaI-18

Chiave esterna Chiave primariaCopyright Oracle Corporation, 2001. Tutti i diritti riservati.

Correlazione di pi tabelle Ogni tabella contiene dati che descrivono esattamente un'entit. La tabella EMPLOYEES contiene ad esempio informazioni relative agli impiegati. Le categorie di dati sono indicate nella parte superiore delle tabelle, mentre i singoli casi sono elencati nella parte inferiore. Utilizzando un formato di tabella possibile visualizzare, comprendere e utilizzare immediatamente le informazioni. Poich i dati relativi a entit differenti vengono memorizzati in tabelle diverse pu essere necessario combinare due o pi tabelle per rispondere a una richiesta specifica. Pu essere necessario ad esempio conoscere la localit del dipartimento in cui lavora un impiegato. In questo caso occorrono informazioni dalla tabella EMPLOYEES (contenente i dati relativi agli impiegati) e dalla tabella DEPARTMENTS (contenente le informazioni sui dipartimenti). Un sistema RDBMS consente di correlare i dati di una tabella con quelli di un'altra tramite le chiavi esterne. Una chiave esterna costituita da una o pi colonne che fanno riferimento a una chiave primaria nella stessa o in un'altra tabella. La possibilit di correlare i dati di una tabella con quelli di un'altra consente di organizzare le informazioni in unit gestibili separatamente. I dati degli impiegati possono essere memorizzati in una tabella distinta, in modo da essere logicamente distinti da quelli del dipartimento. Istruzioni per le chiavi primarie e le chiavi esterne Nelle chiavi primarie non sono ammessi valori duplicati. Le chiavi primarie in genere non possono essere modificate. Le chiavi esterne sono basate su valori di dati e sono puntatori puramente logici e non fisici. I valori delle chiavi esterne devono corrispondere a quelli di una chiave primaria o di una chiave univoca esistente oppure essere nulli. Una chiave esterna deve fare riferimento a una colonna di chiave primaria o di chiave univoca. Introduzione a Oracle9i: SQL I-18

Terminologia dei database relazionali2 3 4 6 5

1

I-19

Copyright Oracle Corporation, 2001. Tutti i diritti riservati.

Terminologia utilizzata nei database relazionali I database relazionali possono contenere una o pi tabelle. Le tabelle costituiscono la struttura di memorizzazione di base dei sistemi RDBMS e contengono tutti i dati necessari relativamente a elementi del mondo reale, ad esempio impiegati, fatture o clienti. Nella diapositiva riportato il contenuto di una tabella o relazione EMPLOYEES. I numeri indicano gli elementi riportati di seguito. 1. Una riga singola o una tabella contenente tutti i dati richiesti per un determinato impiegato. Ogni riga di una tabella deve essere identificata in modo univoco da una chiave primaria che non consente righe duplicate. L'ordine delle righe non significativo; specificarlo quando si recuperano i dati. 2. Una colonna o attributo contenente la matricola dell'impiegato. La matricola dell'impiegato identifica un impiegato in modo univoco nella tabella EMPLOYEES. Nell'esempio la colonna della matricola indicata come chiave primaria. Una chiave primaria deve contenere un valore e tale valore deve essere univoco. 3. Una colonna che non costituisce un valore di chiave. Una colonna rappresenta un tipo di dato in una tabella; nell'esempio, lo stipendio di tutti gli impiegati. L'ordine delle colonne non significativo quando vengono memorizzati i dati; specificarlo quando si recuperano i dati. 4. Una colonna contenente il numero del dipartimento, che funge anche da chiave esterna. Una chiave esterna una colonna che definisce la relazione tra le tabelle. Una chiave esterna fa riferimento a una chiave primaria o a una chiave univoca della stessa o di un'altra tabella. Nell'esempio, DEPARTMENT_ID identifica in modo univoco un dipartimento nella tabella DEPARTMENTS. 5. Un campo pu non contenere valori. In questo caso si parla di valore nullo. Nella tabella EMPLOYEES solo per gli impiegati il cui ruolo rappresentante commerciale presente un valore nel campo COMMISSION_PCT (commissione). 6. Un campo si trova all'intersezione tra una riga e una colonna e pu contenere soltanto un valore. Introduzione a Oracle9i: SQL I-19

Propriet dei database relazionali

Un database relazionale:

accessibile e modificabile tramite l'esecuzione di istruzioni SQL (Structured Query Language); contiene un insieme di tabelle senza puntatori fisici; utilizza una serie di operatori.

I-20

Copyright Oracle Corporation, 2001. Tutti i diritti riservati.

Propriet dei database relazionali In un database relazionale non viene specificato il percorso di accesso alle tabelle e non necessario conoscere in che modo i dati sono disposti fisicamente. Per accedere al database, si esegue un'istruzione SQL (Structured Query Language), il linguaggio standard ANSI (American National Standards Institute) per operare sui database relazionali. Tale linguaggio contiene una vasta gamma di operatori per il partizionamento e la combinazione delle relazioni. Il database pu essere modificato tramite le istruzioni SQL.

Introduzione a Oracle9i: SQL I-20

Comunicazione con un sistema RDBMS mediante SQLL'istruzione SQL viene immessa.SELECT department_name FROM departments;

L'istruzione viene inviata a Oracle Server.

Oracle Server

I-21

Copyright Oracle Corporation, 2001. Tutti i diritti riservati.

Linguaggio SQL (Structured Query Language) SQL consente di comunicare con Oracle Server. SQL presenta i seguenti vantaggi: efficienza; facilit di apprendimento e utilizzo; funzionalit completa, in quanto consente di definire, recuperare e manipolare i dati delle tabelle.

Introduzione a Oracle9i: SQL I-21

RDBMS

Oracle Server

Tabelle utente

Dizionario dati

I-22

Copyright Oracle Corporation, 2001. Tutti i diritti riservati.

RDBMS Oracle fornisce un sistema RDBMS (sistema di gestione di database relazionali, Relational Database Management System) flessibile, denominato Oracle9i. Grazie alle sue funzioni, possibile memorizzare e gestire i dati con tutti i vantaggi di una struttura relazionale, nonch utilizzare PL/SQL, un motore che consente all'utente di memorizzare ed eseguire program unit. Oracle9i supporta inoltre Java e XML. Oracle Server consente di recuperare i dati in base a tecniche di ottimizzazione. Include funzionalit di protezione che controllano le modalit di accesso e utilizzo dei database. Tra le altre funzionalit figurano l'uniformit e la protezione dei dati tramite meccanismi di lock. Oracle9i Server fornisce un approccio aperto, completo e integrato alla gestione delle informazioni. Oracle Server comprende un database Oracle e un'istanza di server Oracle. Ogni volta che si avvia un database, viene allocata un'area SGA (System Global Area) e vengono avviati i processi di background di Oracle. L'area di memoria SGA viene utilizzata per le informazioni del database condivise dagli utenti del database. La combinazione tra processi di background e buffer di memoria viene detta istanza Oracle.

Introduzione a Oracle9i: SQL I-22

Istruzioni SQLSELECT INSERT UPDATE DELETE MERGE CREATE ALTER DROP RENAME TRUNCATE COMMIT ROLLBACK SAVEPOINT GRANT REVOKE Recupero dati Comandi DML (Data Manipulation Language)

Comandi DDL (Data Definition Language)

Comandi TCL (Transaction Control Language)

Comandi DCL (Data Control Language)

I-23

Copyright Oracle Corporation, 2001. Tutti i diritti riservati.

Istruzioni SQL Il linguaggio SQL Oracle conforme agli standard riconosciuti del settore. La Oracle Corporation garantisce la futura compatibilit con i nuovi standard, coinvolgendo attivamente le persone con un ruolo chiave nelle commissioni normative SQL. Le commissioni normative riconosciute nel settore sono l'American National Standards Institute (ANSI) e l'International Standards Organization (ISO). Entrambe hanno accettato SQL come linguaggio standard per i database relazionali. Istruzione Descrizione SELECT Recupera i dati dal database. INSERT Inserisce nuove righe, modifica righe esistenti e rimuove quelle UPDATE indesiderate dalle tabelle del database Noti collettivamente come DELETE comandi DML (Data Manipulation Language) MERGE CREATE Imposta, modifica e rimuove strutture dei dati dalle tabelle. Noti ALTER collettivamente come comandi DDL (Data Definition Language) DROP RENAME TRUNCATE COMMIT Gestisce le modifiche apportate da istruzioni DML. Le modifiche ROLLBACK apportate ai dati possono essere raggruppate in transazioni logiche. SAVEPOINT GRANT Concede o revoca diritti di accesso al database Oracle e alle strutture in REVOKE esso contenute. {>Noti collettivamente come comandi DCL (Data Control Language) Introduzione a Oracle9i: SQL I-23

Tabelle utilizzate nel corsoEMPLOYEES

DEPARTMENTSI-24

JOB_GRADES

Copyright Oracle Corporation, 2001. Tutti i diritti riservati.

Tabelle utilizzate nel corso In questo corso verranno utilizzate le tre tabelle seguenti: tabella EMPLOYEES, contenente i dati di tutti gli impiegati; tabella DEPARTMENTS, contenente i dati di tutti i dipartimenti; tabella JOB_GRADES, contenente i dati degli stipendi per i diversi livelli.

Nota: la struttura e i dati di tutte le tabelle sono riportati nell'Appendice B.

Introduzione a Oracle9i: SQL I-24

Riepilogo

Oracle9i Server il database per Internet Computing. Oracle9i basato sul sistema di gestione dei database relazionali a oggetti. I database relazionali sono costituiti da relazioni, gestiti mediante operazioni relazionali e governati da vincoli di integrit dei dati. Oracle Server consente di memorizzare e gestire le informazioni tramite il linguaggio SQL e il motore PL/SQL.

I-25

Copyright Oracle Corporation, 2001. Tutti i diritti riservati.

Riepilogo I sistemi di gestione di database relazionali sono costituiti da oggetti o relazioni, gestiti mediante operazioni e governati da vincoli di integrit dei dati. La Oracle Corporation fornisce prodotti e servizi volti a soddisfare le diverse esigenze in materia di sistemi di gestione di database relazionali. I principali prodotti sono Oracle9i Database Server, con il quale memorizzare e gestire informazioni mediante SQL, e Oracle9i Application Server con cui eseguire tutte le applicazioni. SQL Oracle Server supporta il linguaggio SQL standard ANSI e contiene una serie di estensioni. SQL il linguaggio utilizzato per comunicare con il server per l'accesso, la manipolazione e il controllo dei dati.

Introduzione a Oracle9i: SQL I-25

Introduzione a Oracle9i: SQL I-26

Scrittura di istruzioni sql SELECT di base

Copyright Oracle Corporation, 2001. Tutti i diritti riservati.

ObiettiviAl termine della lezione, lo studente sar in grado di:

descrivere le caratteristiche delle istruzioni SQL SELECT; eseguire un'istruzione SELECT di base; distinguere le istruzioni SQL dai comandi iSQL*Plus.

1-2

Copyright Oracle Corporation, 2001. Tutti i diritti riservati.

Obiettivo della lezione Per estrarre dati dal database, necessario utilizzare l'istruzione SQL (Structured Query Language) SELECT. Potrebbe essere necessario limitare le colonne visualizzate. In questa lezione vengono descritte tutte le istruzioni SQL necessarie per eseguire tali azioni. possibile creare istruzioni SELECT da utilizzare pi volte. In questa lezione viene inoltre descritto l'ambiente iSQL*Plus in cui si eseguono le istruzioni SQL. Nota: iSQL*Plus un nuovo strumento di Oracle9i che fornisce un ambiente per browser in cui eseguire i comandi SQL. Nelle precedenti release di Oracle, SQL*Plus costituiva l'ambiente di esecuzione predefinito dei comandi SQL. SQL*Plus Plus ancora disponibile e viene descritto nell'Appendice C.

Introduzione a Oracle9i: SQL 1-2

Caratteristiche delle istruzioni SQL SELECTProiezione Selezione

Tabella 1 Join

Tabella 1

Tabella 11-3

Tabella 2

Copyright Oracle Corporation, 2001. Tutti i diritti riservati.

Caratteristiche delle istruzioni SQL SELECT Un'istruzione SELECT recupera le informazioni dal database. Un'istruzione SELECT consente di effettuare le operazioni riportate di seguito. Proiezione: la funzione di proiezione in SQL consente di scegliere le colonne di una tabella che si desidera vengano restituite da una query. possibile scegliere un numero qualsiasi di colonne. Selezione: la funzione di selezione in SQL consente di scegliere le righe di una tabella che si desidera vengano restituite da una query. possibile utilizzare diversi criteri per limitare le righe visualizzate. Join: la funzione di join in SQL consente di unire i dati memorizzati in tabelle diverse mediante la creazione di un collegamento tra di essi. Le operazioni di join verranno descritte in una lezione successiva.

Introduzione a Oracle9i: SQL 1-3

Istruzione SELECT di base

SELECT FROM

*|{[DISTINCT] colonna|espressione [alias],...} tabella;

SELECT identifica le colonne. FROM identifica la tabella.

1-4

Copyright Oracle Corporation, 2001. Tutti i diritti riservati.

Istruzione SELECT di base Nella sua forma pi semplice, un'istruzione SELECT deve includere i seguenti elementi: una clausola SELECT che specifichi le colonne da visualizzare; una clausola FROM che specifichi la tabella contenente le colonne elencate nella clausola SELECT. introduce un elenco di una o pi colonne; seleziona tutte le colonne; elimina i duplicati; seleziona la colonna o l'espressione specificata; assegna alle colonne selezionate intestazioni diverse; specifica la tabella contenente le colonne.

Nella sintassi: SELECT * DISTINCT colonna|espressione alias FROM tabella

Nota: in questo corso i termini parola chiave, clausola e istruzione assumono il seguente significato: con parola chiave si intende un singolo elemento SQL: ad esempio SELECT e FROM con clausola si intende una parte di un'istruzione SQL: ad esempio SELECT employee_id, last_name,... con istruzione si intende una combinazione di due o pi clausole: ad esempio SELECT * FROM employees Introduzione a Oracle9i: SQL 1-4

Selezione di tutte le colonne

SELECT * FROM departments;

1-5

Copyright Oracle Corporation, 2001. Tutti i diritti riservati.

Selezione di tutte le colonne e di tutte le righe possibile visualizzare tutte le colonne di dati di una tabella inserendo un asterisco (*) dopo la parola chiave SELECT. Nell'esempio riportato nella diapositiva la tabella DEPARTMENTS composta da quattro colonne, DEPARTMENT_ID, DEPARTMENT_NAME, MANAGER_ID e LOCATION_ID, e da sette righe, una per ciascun dipartimento. inoltre possibile visualizzare tutte le colonne della tabella elencandole dopo la parola chiave SELECT. La seguente istruzione SQL visualizza ad esempio tutte le colonne e tutte le righe della tabella DEPARTMENTS, ottenendo lo stesso risultato dell'esempio riportato nella diapositiva: SELECT FROM department_id, department_name, manager_id, location_id departments;

Introduzione a Oracle9i: SQL 1-5

Selezione di colonne specifiche

SELECT department_id, location_id FROM departments;

1-6

Copyright Oracle Corporation, 2001. Tutti i diritti riservati.

Selezione di colonne specifiche e di tutte le righe Per visualizzare colonne specifiche della tabella utilizzando l'istruzione SELECT, necessario specificare i nomi di colonne, separandoli con una virgola. Nell'esempio riportato nella diapositiva vengono visualizzati tutti i numeri di dipartimento e di localit contenuti nella tabella DEPARTMENTS. Nella clausola SELECT, specificare le colonne che si desidera visualizzare, nell'ordine in cui si desidera che vengano restituite in output. Per visualizzare ad esempio la localit prima del numero del dipartimento, da sinistra verso destra, utilizzare la seguente istruzione: SELECT location_id, department_id FROM departments;

Introduzione a Oracle9i: SQL 1-6

Scrittura di istruzioni SQL Le istruzioni SQL non prevedono la distinzione tra maiuscole e minuscole. Le istruzioni SQL possono essere scritte su una o pi righe. Non possibile abbreviare le parole chiave o dividerle su pi righe. Le clausole vengono in genere scritte su righe diverse. Per facilitare la lettura del codice, possibile utilizzare le indentazioni.

1-7

Copyright Oracle Corporation, 2001. Tutti i diritti riservati.

Scrittura di istruzioni SQL Le regole descritte di seguito consentono di creare istruzioni valide, che siano allo stesso tempo facili da leggere e da modificare: le istruzioni SQL non prevedono la distinzione tra maiuscole e minuscole, se non altrimenti specificato. possibile scrivere le istruzioni SQL su una o pi righe; non possibile dividere le parole chiave su pi righe o abbreviarle; le clausole vengono in genere scritte su righe diverse per facilitarne la lettura e la modifica; per facilitare la lettura del codice, possibile utilizzare le indentazioni; le parole chiave sono in genere scritte in lettere maiuscole; tutte le altre parole, come ad esempio i nomi delle tabelle e le colonne, sono scritte in lettere minuscole.

Esecuzione di istruzioni SQL Utilizzando iSQL*Plus, fare clic sul pulsante Execute per eseguire il comando o i comandi nella finestra di editing.

Introduzione a Oracle9i: SQL 1-7

Impostazioni predefinite delle intestazioni di colonna iSQL*Plus: per impostazione predefinita la giustificazione dell'intestazione centrata; per impostazione predefinita l'intestazione viene visualizzata in maiuscolo. le intestazioni delle colonne composte da caratteri e date sono giustificate a sinistra; le intestazioni delle colonne composte da numeri sono giustificate a destra; per impostazione predefinita l'intestazione viene visualizzata in maiuscolo.Copyright Oracle Corporation, 2001. Tutti i diritti riservati.

SQL*Plus:

1-8

Impostazioni predefinite delle intestazioni di colonna In iSQL*Plus, le intestazioni di colonna vengono visualizzate in maiuscolo e centrate. SELECT last_name, hire_date, salary FROM employees;

possibile sostituire l'intestazione di colonna visualizzata con un alias. Ulteriori informazioni sugli alias di colonna verranno fornite pi avanti in questa lezione. Introduzione a Oracle9i: SQL 1-8

Espressioni aritmeticheCreare espressioni con dati numerici e di tipo data utilizzando operatori aritmetici.Operatore + * / Descrizione Addizione Sottrazione Moltiplicazione Divisione

1-9

Copyright Oracle Corporation, 2001. Tutti i diritti riservati.

Espressioni aritmetiche Le espressioni aritmetiche consentono di modificare la modalit di visualizzazione dei dati, di eseguire calcoli o analisi What-if. Le espressioni aritmetiche possono contenere nomi di colonne, valori numerici costanti e operatori aritmetici. Operatori aritmetici Nella diapositiva sono elencati gli operatori aritmetici disponibili in SQL. possibile utilizzare tali operatori in qualsiasi clausola di un'istruzione SQL, ad eccezione della clausola FROM.

Introduzione a Oracle9i: SQL 1-9

Uso degli operatori aritmeticiSELECT last_name, salary, salary + 300 FROM employees;

1-10

Copyright Oracle Corporation, 2001. Tutti i diritti riservati.

Uso degli operatori aritmetici Nell'esempio riportato nella diapositiva viene utilizzato l'operatore di addizione per calcolare un aumento di stipendio di 300 dollari per tutti gli impiegati. Nell'output viene visualizzata una nuova colonna SAL+300. Si noti che la colonna SAL+300 risultante non una nuova colonna della tabella EMPLOYEES, ma solo una colonna che consente di visualizzare il risultato. Per impostazione predefinita, il nome di una nuova colonna ricavato dal calcolo che ha generato la colonna stessa, in questo caso salary+300. Nota: Oracle9i Server ignora gli spazi inseriti prima e dopo l'operatore aritmetico.

Introduzione a Oracle9i: SQL 1-10

Precedenza degli operatori

*

/

+

_

La moltiplicazione e la divisione hanno priorit rispetto all'addizione e alla sottrazione. Gli operatori con pari priorit vengono eseguiti da sinistra a destra. L'uso delle parentesi consente di assegnare una priorit di esecuzione agli operatori e di rendere pi chiare le istruzioni.

1-11

Copyright Oracle Corporation, 2001. Tutti i diritti riservati.

Precedenza degli operatori Se un'espressione aritmetica contiene pi operatori, la moltiplicazione e la divisione vengono eseguite per prime. Se all'interno di un'espressione vi sono pi operatori con pari priorit, questi vengono eseguiti da sinistra a destra. Per fare in modo che un'espressione venga eseguita per prima, possibile inserirla tra parentesi.

Introduzione a Oracle9i: SQL 1-11

Precedenza degli operatoriSELECT last_name, salary, 12*salary+100 FROM employees;

1-12

Copyright Oracle Corporation, 2001. Tutti i diritti riservati.

Precedenza degli operatori (continuazione) Nell'esempio riportato nella diapositiva vengono visualizzati il cognome, lo stipendio e il compenso annuo degli impiegati. Il compenso annuo viene calcolato moltiplicando lo stipendio mensile per 12 e aggiungendo un bonus una tantum di 100 dollari. Si noti che la moltiplicazione viene eseguita prima dell'addizione. Nota: utilizzare le parentesi per applicare l'ordine di precedenza standard e per rendere pi chiara l'istruzione. L'espressione riportata nella diapositiva pu essere scritta come (12*salary)+100 senza che il risultato cambi.

Introduzione a Oracle9i: SQL 1-12

Uso delle parentesiSELECT last_name, salary, 12*(salary+100) FROM employees;

1-13

Copyright Oracle Corporation, 2001. Tutti i diritti riservati.

Uso delle parentesi possibile utilizzare le parentesi per specificare l'ordine in cui si desidera che vengano eseguiti gli operatori, ignorando quindi le suddette regole di precedenza. Nell'esempio riportato nella diapositiva vengono visualizzati il cognome, lo stipendio e il compenso annuo degli impiegati. Il compenso annuo viene calcolato aggiungendo un bonus mensile di 100 dollari allo stipendio mensile e moltiplicando il tutto per 12. Grazie all'uso delle parentesi, l'addizione avr priorit rispetto alla moltiplicazione.

Introduzione a Oracle9i: SQL 1-13

Definizione di un valore nullo Un valore nullo un valore non disponibile, non assegnato, sconosciuto o non applicabile. Un valore nullo non corrisponde allo zero o a uno spazio.

SELECT last_name, job_id, salary, commission_pct FROM employees;

1-14

Copyright Oracle Corporation, 2001. Tutti i diritti riservati.

Valori nulli Se in una riga manca il valore di dati in corrispondenza di una determinata colonna, tale valore definito nullo. Un valore nullo un valore non disponibile, non assegnato, sconosciuto o non applicabile. Un valore nullo non corrisponde allo zero o a uno spazio, in quanto zero un numero e uno spazio un carattere. I valori nulli possono essere presenti nelle colonne contenenti qualsiasi tipo di dati. I vincoli NOT NULL e PRIMARY KEY consentono tuttavia di evitare che i valori nulli vengano utilizzati in una colonna. Si noti che nella colonna COMMISSION_PCT della tabella EMPLOYEES viene indicato che solo i responsabili delle vendite e i rappresentanti commerciali hanno diritto a una commissione. Il fatto che gli altri impiegati non abbiano diritto alle commissioni rappresentato dalla presenza di un valore nullo.

Introduzione a Oracle9i: SQL 1-14

Espressioni aritmetiche con valori nulliLe espressioni aritmetiche contenenti un valore nullo restituiscono un valore nullo.SELECT last_name, 12*salary*commission_pct FROM employees;

1-15

Copyright Oracle Corporation, 2001. Tutti i diritti riservati.

Valori nulli (continuazione) Se il valore di una colonna in un'espressione aritmetica nullo, anche il risultato sar nullo. Se ad esempio si divide un numero per zero, viene generato un errore. Se tuttavia si divide un numero per un valore nullo, il risultato un valore nullo o sconosciuto. Nell'esempio riportato nella diapositiva l'impiegato King non percepisce alcuna commissione. Poich il valore della colonna COMMISSION_PCT nell'espressione aritmetica nullo, anche il risultato sar nullo. Per ulteriori informazioni, consultare la sezione "Basic Elements of SQL" in Oracle9i SQL Reference.

Introduzione a Oracle9i: SQL 1-15

Definizione degli alias di colonnaUn alias di colonna:

consente di rinominare le intestazioni di colonna; risulta utile nei calcoli; inserito immediatamente dopo il nome della colonna; inoltre possibile inserire la parola chiave AS opzionale tra il nome della colonna e l'alias; richiede l'uso delle virgolette se contiene spazi o caratteri speciali o se prevede la distinzione tra maiuscole e minuscole.

1-16

Copyright Oracle Corporation, 2001. Tutti i diritti riservati.

Alias di colonna Nella visualizzazione del risultato di una query, iSQL*Plus utilizza in genere il nome della colonna selezionata come intestazione della colonna. possibile che tale intestazione non sia descrittiva e sia pertanto di difficile comprensione. possibile modificare un'intestazione di colonna utilizzando un alias. Specificare gli alias dopo la colonna nella SELECT list, utilizzando uno spazio come separatore. Per impostazione predefinita, le intestazioni degli alias sono visualizzate in caratteri maiuscoli. Racchiudere l'alias tra virgolette (" ") se contiene spazi o caratteri speciali, come ad esempio # o $, oppure se prevede la distinzione tra maiuscole e minuscole.

Introduzione a Oracle9i: SQL 1-16

Uso degli alias di colonnaSELECT last_name AS name, commission_pct comm FROM employees;

SELECT last_name "Name", salary*12 "Annual Salary" FROM employees;

1-17

Copyright Oracle Corporation, 2001. Tutti i diritti riservati.

Alias di colonna (continuazione) Nel primo esempio vengono visualizzati il nome e la percentuale di commissione di tutti gli impiegati. Si noti che la parola chiave AS opzionale stata inserita prima dell'alias di colonna. Il risultato della query lo stesso sia se viene utilizzata la parola chiave AS, sia se non viene utilizzata. Si noti inoltre che nell'istruzione SQL gli alias di colonna, ovvero name e comm, sono scritti in caratteri minuscoli, mentre nel risultato della query le intestazioni di colonna sono visualizzate in caratteri maiuscoli. Come indicato in una diapositiva precedente, le intestazioni di colonna sono visualizzate in caratteri maiuscoli per impostazione predefinita. Nel secondo esempio vengono visualizzati il cognome e lo stipendio annuo di tutti gli impiegati. Annual Salary stato racchiuso tra virgolette poich contiene uno spazio. Si noti che l'intestazione di colonna nell'output corrisponde esattamente all'alias di colonna.

Introduzione a Oracle9i: SQL 1-17

Operatore di concatenazioneUn operatore di concatenazione:

collega tramite concatenazione colonne o stringhe di caratteri ad altre colonne; rappresentato da due barre verticali o pipe (||); crea una nuova colonna che rappresenta un'espressione di caratteri.

1-18

Copyright Oracle Corporation, 2001. Tutti i diritti riservati.

Operatore di concatenazione possibile collegare le colonne ad altre colonne, espressioni aritmetiche o valori costanti per creare un'espressione di caratteri mediante l'operatore di concatenazione (||). Le colonne che si trovano ai lati dell'operatore vengono combinate per formare un'unica colonna di output.

Introduzione a Oracle9i: SQL 1-18

Uso degli operatori di concatenazione

SELECT FROM

last_name||job_id AS "Employees" employees;

1-19

Copyright Oracle Corporation, 2001. Tutti i diritti riservati.

Operatore di concatenazione (continuazione) Nell'esempio LAST_NAME e JOB_ID sono stati concatenati ed stato loro assegnato l'alias Employees. Si noti che il cognome e il codice mansione dell'impiegato vengono combinati in modo da formare un'unica colonna di output. La parola chiave AS che precede l'alias facilita la lettura della clausola SELECT.

Introduzione a Oracle9i: SQL 1-19

Stringhe di caratteri Una stringa di caratteri rappresentata da un carattere, un numero o una data all'interno della SELECT list. Le stringhe di caratteri e date devono essere racchiuse tra apici. Ciascuna stringa di caratteri viene restituita in output una volta per ciascuna riga restituita.

1-20

Copyright Oracle Corporation, 2001. Tutti i diritti riservati.

Stringhe di caratteri Viene denominato stringa di caratteri un carattere, un numero o una data all'interno della SELECT list che non costituisce un nome o un alias di colonna. Una stringa di caratteri viene visualizzata per ciascuna riga restituita. Le stringhe di caratteri in testo senza regole di formattazione possono essere incluse nel risultato della query e vengono considerate come le colonne nella SELECT list. Le stringhe di caratteri e date devono essere racchiuse tra apici (' '), a differenza delle stringhe numeriche.

Introduzione a Oracle9i: SQL 1-20

Uso delle stringhe di caratteri

SELECT last_name ||' is a '||job_id AS "Employee Details" FROM employees;

1-21

Copyright Oracle Corporation, 2001. Tutti i diritti riservati.

Stringhe di caratteri (continuazione) Nell'esempio riportato nella diapositiva vengono visualizzati il cognome e il codice mansione di tutti gli impiegati. L'intestazione di colonna Employee Details. Si noti che sono stati inseriti degli spazi tra gli apici nell'istruzione SELECT, al fine di facilitare la lettura dell'output. Nell'esempio riportato di seguito il cognome e lo stipendio di ciascun impiegato sono concatenati mediante una stringa di caratteri per rendere pi chiaro il significato delle righe restituite. SELECT last_name ||': 1 Month salary = '||salary Monthly FROM employees;

Introduzione a Oracle9i: SQL 1-21

Righe duplicatePer impostazione predefinita, vengono visualizzate Tutte le righe restituite da una query, comprese quelle duplicate.SELECT department_id FROM employees;

1-22

Copyright Oracle Corporation, 2001. Tutti i diritti riservati.

Righe duplicate Se non viene specificato diversamente, iSQL*Plus visualizza i risultati di una query senza eliminare le righe duplicate. Nell'esempio riportato nella diapositiva vengono visualizzati tutti i numeri dei dipartimenti contenuti nella tabella EMPLOYEES. Si noti che il numero di alcuni dipartimenti viene ripetuto.

Introduzione a Oracle9i: SQL 1-22

Eliminazione delle righe duplicateEliminare le righe duplicate utilizzando la parola chiave DISTINCT nella clausola SELECT.SELECT DISTINCT department_id FROM employees;

1-23

Copyright Oracle Corporation, 2001. Tutti i diritti riservati.

Righe duplicate (continuazione)Per eliminare le righe duplicate dal risultato di una query, inserire la parola chiave DISTINCT all'interno della clausola SELECT subito dopo la parola chiave SELECT. Nell'esempio riportato nella diapositiva la tabella EMPLOYEES contiene 20 righe effettive, ma i numeri di dipartimento univoci sono solo sette. possibile specificare pi colonne dopo il qualificatore DISTINCT. Il qualificatore DISTINCT ha effetto su tutte le colonne selezionate e il risultato rappresentato da ciascuna combinazione distinta delle colonne.

SELECT FROM

DISTINCT department_id, job_id employees;

Introduzione a Oracle9i: SQL 1-23

Interazione tra SQL e iSQL*PlusIstruzioni SQL

iSQL*Plus

Browser InternetComandi iSQL*Plus

Oracle server

Risultati della query

Report formattato Client

1-24

Copyright Oracle Corporation, 2001. Tutti i diritti riservati.

Interazione tra SQL e iSQL*Plus SQL un linguaggio basato su comandi che consente di comunicare con Oracle Server da qualsiasi strumento o applicazione. Il linguaggio SQL Oracle contiene molte estensioni. iSQL*Plus uno strumento Oracle, con un proprio linguaggio basato su comandi, in grado di riconoscere e sottomettere le istruzioni SQL a Oracle Server affinch possano essere eseguite. Caratteristiche di SQL Pu essere utilizzato da un'ampia gamma di utenti, compresi quelli con poca o nessuna esperienza di programmazione. un linguaggio non procedurale. Riduce i tempi di creazione e gestione dei sistemi. basato sulla lingua inglese. accessibile da un browser. Accetta l'inserimento delle istruzioni ad hoc. Supporta l'editing in linea per la modifica delle istruzioni SQL. Controlla le impostazioni dell'ambiente. Formatta i risultati delle query in un report di base. Consente di accedere a database locali e remoti. Introduzione a Oracle9i: SQL 1-24

Caratteristiche di iSQL*Plus

Confronto tra istruzioni SQL e comandi iSQL*PlusSQL un linguaggio conforme allo standard ANSI Le parole chiave non possono essere abbreviate Le istruzioni consentono di manipolare i dati e le definizioni di tabella presenti nel database iSQL*Plus un ambiente di propriet della Oracle Le parole chiave possono essere abbreviate I comandi non consentono di manipolare valori nel database Viene eseguito su un browser Viene caricato a livello centrale e non deve essere implementato su ciascun computer Comandi iSQL*Plus

Istruzioni SQL1-25

Copyright Oracle Corporation, 2001. Tutti i diritti riservati.

SQL e iSQL*Plus (continuazione) Nella tabella riportata di seguito vengono messi a confronto SQL e iSQL*Plus.SQL un linguaggio che consente di comunicare con Oracle Server e di accedere ai dati. basato sul linguaggio SQL standard ANSI (American National Standards Institute) Consente di manipolare i dati e le definizioni di tabella presenti nel database. Non supporta alcun carattere di continuazione. iSQL*Plus Riconosce le istruzioni SQL e le invia al server. l'interfaccia di propriet della Oracle per l'esecuzione delle istruzioni SQL. Non consente di manipolare i valori presenti nel database. Supporta il trattino (-) come carattere di continuazione, se il comando pi lungo di una riga. Supporta l'uso delle abbreviazioni. Utilizza i comandi per formattare i dati.

Non supporta l'uso delle abbreviazioni. Utilizza le funzioni per eseguire la formattazione.

Introduzione a Oracle9i: SQL 1-25

Panoramica di iSQL*PlusUna volta eseguito il log in a iSQL*Plus possibile:

descrivere la struttura di tabella; modificare le istruzioni SQL; eseguire SQL da iSQL*Plus; salvare le istruzioni SQL in file e aggiungerle a essi; eseguire le istruzioni memorizzate nei file salvati; caricare i comandi presenti in un file di testo nella finestra di editing di iSQL*Plus.

1-26

Copyright Oracle Corporation, 2001. Tutti i diritti riservati.

iSQL*Plus Nell'ambiente iSQL*Plus possibile: eseguire istruzioni SQL per recuperare, modificare, aggiungere e rimuovere dati dal database; formattare ed eseguire calcoli sui risultati delle query, nonch memorizzarli e visualizzarli sotto forma di report; creare script per memorizzare le istruzioni SQL che si desidera riutilizzare in seguito.Descrizione Comportamento generale delle istruzioni SQL per la sessione. Formattazione dei risultati della query. Salvataggio delle istruzioni in script di testo ed esecuzione delle istruzioni presenti in tali script. Invio delle istruzioni SQL dal browser a Oracle Server. Modifica delle istruzioni SQL presenti nella finestra di editing. Creazione di variabili e relativo passaggio alle istruzioni SQL, visualizzazione dei valori delle variabili e visualizzazione dei messaggi. Diversi comandi per la connessione al database, la manipolazione dell'ambiente iSQL*Plus e la visualizzazione delle definizioni di colonna.

I comandi iSQL*Plus possono essere suddivisi nelle categorie principali riportate di seguito.Categoria Di ambiente Formattazione Manipolazione file Esecuzione Modifica Interazione

Varie

Introduzione a Oracle9i: SQL 1-26

Esecuzione del log in a iSQL*PlusDall'ambiente per browser Windows in uso:

1-27

Copyright Oracle Corporation, 2001. Tutti i diritti riservati.

Esecuzione del log in a iSQL*Plus Per eseguire il log in tramite l'ambiente per browser: 1. Avviare il browser. 2. Inserire l'indirizzo URL dell'ambiente iSQL*Plus. 3. Inserire le informazioni appropriate nei campi Username, Password e Connection Identifier.

Introduzione a Oracle9i: SQL 1-27

Ambiente iSQL*Plus10 6 8

9

1 2 3 4

7

5

1-28

Copyright Oracle Corporation, 2001. Tutti i diritti riservati.

Ambiente iSQL*Plus Nel browser Windows, la finestra iSQL*Plus costituita da diverse aree chiave. 1. Finestra di editing: area in cui digitare le istruzioni SQL e i comandi iSQL*Plus. 2. Pulsante Execute: consente di eseguire le istruzioni e i comandi inseriti nella finestra di editing. 3. Opzione Output: l'impostazione predefinita Work Screen, che consente di visualizzare i risultati dell'istruzione SQL sotto la finestra di editing. Le altre opzioni disponibili sono File e Window, che consentono rispettivamente di salvare il contenuto in un file specificato e di visualizzare l'output in un'altra finestra. 4. Pulsante Clear Screen: consente di cancellare il testo dalla finestra di editing. 5. Pulsante Save Script: consente di salvare il contenuto della finestra di editing in un file. 6. Script Location: identifica il nome e la posizione di uno script che si desidera eseguire. 7. Pulsante Browse: consente di eseguire la ricerca di uno script mediante la finestra di dialogo di apertura dei file di Windows. 8. Icona di uscita: fare clic per terminare la sessione iSQL*Plus e tornare alla finestra LogOn di iSQL*Plus. 9. Icona Help: consente di accedere alla documentazione della Guida in linea di iSQL*Plus. 10. Pulsante Password: consente di modificare la password.

Introduzione a Oracle9i: SQL 1-28

Visualizzazione della struttura di tabellaUtilizzare il comando DESCRIBE di iSQL*Plus per visualizzare la struttura di una tabella.DESC[RIBE] nometabella

1-29

Copyright Oracle Corporation, 2001. Tutti i diritti riservati.

Visualizzazione della struttura di tabella In iSQL*Plus possibile visualizzare la struttura di una tabella utilizzando il comando DESCRIBE, il quale consente di visualizzare i nomi di colonne e i tipi di dati, nonch di determinare se una colonna deve contenere dati. Nella sintassi: nometabella il nome di una tabella, una vista o un sinonimo esistente, accessibile da parte dell'utente.

Introduzione a Oracle9i: SQL 1-29

Visualizzazione della struttura di tabella

DESCRIBE employees

1-30

Copyright Oracle Corporation, 2001. Tutti i diritti riservati.

Visualizzazione della struttura di tabella (continuazione) Nell'esempio riportato nella diapositiva vengono visualizzate le informazioni sulla struttura della tabella DEPARTMENTS. Risultati: Null? indica se una colonna deve o meno contenere dati; NOT NULL indica che la colonna deve contenere dati; Type visualizza il tipo di dati di una colonna. Nella tabella riportata di seguito vengono descritti i tipi di dati.Tipo di dati NUMBER(p,s) VARCHAR2(s) DATE CHAR(s) Descrizione Valore numerico composto da un massimo di p cifre e con s cifre a destra del separatore decimale. Valore di tipo carattere a lunghezza variabile con una dimensione massima pari a s. Valore di tipo data e ora compreso tra il 1 gennaio 4712 a.C. e il 31 dicembre 9999 d.C. Valore di tipo carattere a lunghezza fissa con una dimensione pari a s.

Introduzione a Oracle9i: SQL 1-30

Interazione con gli script

SELECT last_name, hire_date, salary FROM employees;

1 2

1-31

Copyright Oracle Corporation, 2001. Tutti i diritti riservati.

Interazione con gli script Inserimento delle istruzioni e dei comandi in uno script di testo Di seguito vengono riportate le operazioni che consentono di salvare i comandi e le istruzioni presenti nella finestra di editing di iSQL*Plus in uno script di testo. 1. Digitare le istruzioni SQL nella finestra di editing di iSQL*Plus. 2. Fare clic sul pulsante Save Script. Viene visualizzata la finestra di salvataggio di Windows. Individuare il nome del file. Per impostazione predefinita, viene utilizzata l'estensione .html. possibile modificare il tipo di file in un file di testo oppure salvare il file con estensione .sql.

Introduzione a Oracle9i: SQL 1-31

Interazione con gli script1D:\temp\emp_sql.htm

SELECT last_name, hire_date, salary FROM employees;

2

3

1-32

Copyright Oracle Corporation, 2001. Tutti i diritti riservati.

Interazione con gli script Uso di istruzioni e comandi presenti in uno script in iSQL*Plus Di seguito vengono riportate le operazioni che consentono di utilizzare i comandi e le istruzioni salvati in precedenza in uno script in iSQL*Plus . 1. Digitare il nome e la posizione dello script. Altrimenti, fare clic sul pulsante Browse per individuare il nome e la posizione dello script. 2. Fare clic sul pulsante Load Script. Il contenuto del file viene caricato nella finestra di editing di iSQL*Plus. 3. Fare clic sul pulsante Execute per eseguire il contenuto della finestra di editing di iSQL*Plus.

Introduzione a Oracle9i: SQL 1-32

Interazione con gli script

DESCRIBE employees SELECT first_name, last_name, job_id FROM employees;

1

3

2

1-33

Copyright Oracle Corporation, 2001. Tutti i diritti riservati.

Interazione con gli script Salvataggio dell'output in un file Di seguito vengono riportate le operazioni che consentono di salvare i risultati di un'istruzione SQL o di un comando iSQL*Plus in un file. 1. Digitare le istruzioni SQL e i comandi iSQL*Plus nella finestra di editing di iSQL*Plus. 2. Impostare Save come opzione di output. 3. Fare clic sul pulsante Execute per eseguire il contenuto della finestra di editing di iSQL*Plus. Viene visualizzata la finestra di salvataggio di Windows. Individuare il nome del file. Per impostazione predefinita, viene utilizzata l'estensione .html. possibile modificare il tipo di file. I risultati vengono inviati al file specificato.

Introduzione a Or