○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ Introduzione A l giorno d’oggi, i sistemi per la gestione di database implementano un linguaggio standard chiamato SQL (Structured Query Language). Fra le altre cose, il linguaggio SQL consente di prelevare, aggiungere, aggiornare e cancellare le informazioni contenute in un database. SQL è un linguaggio standard riconosciuto dall’istituto ANSI (American National Standards Institute) che consente di accedere a database Oracle, SQL Server, DB2 e MySQL. Questo volume descrive l’utilizzo del linguaggio SQL offrendo una grande quantità di esempi pratici. Inoltre sono disponibili online tutti gli script e i programmi presentati in questo volume (per informazioni consultare il paragrafo “Esempi per i capitoli”). In questo volume verranno trattati i seguenti argomenti. ■ Utilizzo del linguaggio SQL standard e delle estensioni sviluppate da Oracle Corporation per il proprio database. ■ Esplorazione del linguaggio PL/SQL (Procedural Language/SQL) che consente di scrivere programmi contenenti istruzioni SQL. ■ Uso di SQL*Plus per eseguire istruzioni, script e report SQL; SQL*Plus è lo strumento che consente di interagire con il database. ■ Esecuzione di query, inserimenti, aggiornamenti e cancellazioni sul database. ■ Creazione di tabelle, sequenze, indici, viste e utenti nel database. ■ Esecuzione di transazioni formate da più istruzioni SQL. ■ Definizione di tipi a oggetti nel database e creazione di tabelle di oggetti per gestire dati di tipo avanzato. ■ Uso di oggetti di grandi dimensioni, fino a 128 TB di dati a caratteri e binari e uso dei puntatori a file esterni. ■ Esecuzione di calcoli complessi utilizzando le funzioni analitiche. ■ Uso di tutte le funzionalità più recenti di Oracle10g, compresi i tipi BINARY_FLOAT, la clausola BINARY_DOUBLE e le estensioni dedicate agli oggetti di grandi dimensioni e alle collezioni. XII INTRODUZIONE Gestione della sicurezza del database. ■ Implementazione di tecniche di ottimizzazione per migliorare la rapidità di esecuzione delle istruzioni SQL. ■ Basi dell’esecuzione di codice SQL in Java tramite JDBC. Il volume è costituito da 16 capitoli e un’Appendice. ■ Capitolo 1 – Introduzione In questo capitolo vengono trattati i database relazionali, viene introdotto il linguaggio SQL, vengono presentati alcuni esempi di query e si introduce l’utilizzo di SQL*Plus per eseguire le query; inoltre viene brevemente introdotto il linguaggio PL/SQL. Capitolo 2 – Prelevamento di informazioni dalle tabelle di un database Estrazione di informazioni da una o più tabelle del database utilizzando istruzioni SELECT; uso delle espressioni aritmetiche per l’esecuzione di calcoli, filtraggio delle righe utilizzando una clausola WHERE e ordinamento delle righe tratte da una tabella. Capitolo 3 – Uso di semplici funzioni Questo capitolo descrive l’uso delle funzioni interne Oracle. Una funzione accetta zero o più parametri di input e restituisce un parametro di output. Le funzioni consentono di svolgere operazioni quali il calcolo delle medie e della radice quadrata di un numero. Capitolo 4 – Memorizzazione ed elaborazione di date e ore Descrive i metodi impiegati nel database Oracle per elaborare e memorizzare le date e le ore. Inoltre spiega come memorizzare una data e un’ora in un valore timestamp e l’uso degli intervalli per la memorizzazione di un periodo temporale. Capitolo 5 – Uso di SQL*Plus In questo capitolo si utilizza SQL*Plus per visualizzare la struttura di una tabella, per modificare un’istruzione SQL, per salvare ed eseguire uno script, per formattare l’output delle colonne, per definire e utilizzare delle variabili e per creare dei report. Capitolo 6 – Le subquery Spiega come inserire delle istruzioni SELECT all’interno di un’istruzione SQL esterna. L’istruzione SELECT interna è chiamata subquery. Inoltre vengono trattati vari tipi di subquery e la possibilità di realizzare tramite subquery istruzioni molto complesse a partire da componenti semplici. INTRODUZIONE XIII Capitolo 7 – Query avanzate Questo capitolo descrive l’impiego di query contenenti funzioni e operatori avanzati, come gli operatori su insiemi che combinano le righe restituite da più query, la funzione TRANSLATE() che consente di convertire una stringa, la funzione DECODE() che consente di ricercare un valore, l’espressione CASE che consente di svolgere operazioni logiche if-then-else e le clausole ROLLUP e CUBE che restituiscono righe contenenti subtotali. Inoltre si vedrà come utilizzare le funzioni analitiche per svolgere calcoli complessi come la ricerca dei prodotti più venduti in ciascun mese, dei migliori venditori e così via. Infine descrive l’esecuzione di query su dati organizzati in una gerarchia e l’impiego della nuova clausola MODEL introdotta a partire da Oracle10g per eseguire calcoli sulle righe. Capitolo 8 – Come modificare il contenuto delle tabelle Insegna ad aggiungere, modificare ed eliminare le righe utilizzando istruzioni INSERT, UPDATE e DELETE e spiega come rendere permanenti i risultati delle transazioni utilizzando l’istruzione COMMIT oppure annullarli completamente utilizzando l’istruzione ROLLBACK. Inoltre spiega come un database Oracle può elaborare contemporaneamente più transazioni. Capitolo 9 – La sicurezza del database Questo capitolo parla degli utenti del database e spiega come i privilegi consentono agli utenti di svolgere compiti specifici all’interno del database. Capitolo 10 – Creazione di tabelle, sequenze, indici e viste Descrive la gestione delle tabelle e delle sequenze per generare una serie di numeri; introduce l’uso degli indici che, come l’indice di un libro, consentono di accedere più rapidamente alle righe di una tabella. Inoltre parla delle viste, costituite da query predefinite operanti su una o più tabelle. Fra gli altri vantaggi, le viste consentono di nascondere la complessità a un utente e di implementare un ulteriore livello di sicurezza consentendo agli utenti di osservare solo una parte dei dati effettivamente contenuti nelle tabelle. Capitolo 11 – Introduzione alla programmazione PL/SQL Questo capitolo esplora il linguaggio PL/SQL che si basa su SQL e consente di scrivere programmi contenenti istruzioni SQL. PL/SQL è un linguaggio di terza generazione che contiene costrutti di programmazione standard. Capitolo 12 – Gli oggetti del database Spiega come creare nuovi tipi a oggetti, contenenti attributi e metodi. Descrive l’utilizzo di vari tipi a oggetti e spiega come definire oggetti colonna e tabelle di oggetti; infine insegna a manipolare gli oggetti in SQL e PL/SQL. XIV INTRODUZIONE Capitolo 13 – Le collezioni Questo capitolo spiega come creare collezioni che possono contenere più elementi. I tipi a collezione possono essere impiegati per definire le colonne delle tabelle; infine spiega come manipolare le collezioni in SQL e PL/SQL. Capitolo 14 – Gli oggetti LOB Presenta la creazione di oggetti di grandi dimensioni, che possono essere utilizzati per memorizzare fino a 128 TB di caratteri e dati binari e come puntare a un file esterno. Inoltre descrive l’utilizzo dei vecchi tipi LONG, tutt’ora supportati da Oracle10g per motivi di compatibilità all’indietro. Capitolo 15 – Esecuzione di codice SQL in Java In questo capitolo vengono introdotte le basi dell’esecuzione di istruzioni SQL in Java tramite JDBC (Java Database Connectivity), un’interfaccia di programmazione che consente a un programma Java di accedere a un database. Capitolo 16 – Ottimizzazione delle istruzioni SQL L’ultimo capitolo parla di alcuni suggerimenti per l’ottimizzazione delle istruzioni SQL che consentono di ridurre il tempo necessario per l’esecuzione delle query. Inoltre descrive il funzionamento dell’ottimizzatore Oracle e dei suggerimenti per l’ottimizzatore. Appendice – I tipi di dati Oracle L’Appendice mostra i tipi di dati disponibili in Oracle SQL e PL/SQL. A chi è dedicato questo volume Questo volume può essere utile ai seguenti lettori. ■ Sviluppatori nei linguaggi SQL e PL/SQL. ■ Amministratori di database che richiedono una conoscenza approfondita del linguaggio SQL. ■ Utenti professionali che devono scrivere query SQL per ottenere informazioni dal database della propria azienda. ■ Responsabili tecnici o consulenti che richiedono un’introduzione ai linguaggi SQL e PL/SQL. Per la consultazione di questo volume non è necessaria alcuna conoscenza preliminare sull’uso del database Oracle, di SQL o di PL/SQL. INTRODUZIONE XV Esempi per i capitoli Tutti gli script, i programmi e i file SQL utilizzati in questo volume possono essere prelevati dal sito Web all’indirizzo http://informatica.mcgraw-hill.it nella sezione Minisito. I file sono contenuti in un file Zip. Dopo aver prelevato il file Zip, tale file può essere aperto con WinZip e i file in esso contenuti possono essere estratti nella directory sql_book, che conterrà le tre subdirectory seguenti. ■ SQL Contiene gli script SQL utilizzati nel volume, compresi gli script per la creazione e l’inserimento di dati nelle tabelle. ■ sample_files Contiene i file di esempio utilizzati nel Capitolo 14. ■ Java Contiene i programmi Java utilizzati nel Capitolo 15.