SQL* Plus è un software utilizzato sia dai DBA, sia da programmatori PL/SQL per interagire con i database. Permette infatti di eseguire comandi SQL, script PL/SQL e funzioni di amministrazione.
Il tool è compreso nell'installazione della versione server di Oracle, mentre per la versione client è necessario specificare la relativa opzione o modalità di installazione. Esaminiamo alcuni comandi di base.
Comandi base di SQL* Plus
Abbiamo già visto come stabilire una connessione ad un database. Colleghiamoci nuovamente al database Seed utilizzando l'utente HR. Possiamo farlo in due modi.
Nel primo modo andiamo su Start>Programmi>Oracle_HOME>Application Development>"SQL Plus" e inseriamo le credenziali di accesso per l'utente HR nella finestra di login. Ricordiamo di fare riferimento al nostro servizio di rete.
Possiamo verificare l'identità dell'utente connesso con il comando show user
.
Il secondo modo consiste nell'aprire un prompt dei comandi (Start>Esegui e cmd) e scrivere:
C:>sqlplusw hr/hrpassword@test-servizio
Anche qui possiamo verificare quale è l'utente connesso al database Seed.
Il comando sqlplusw lancia SQL* Plus in modalità grafica. Se si omette il nome del servizio, SQL* Plus proverà la connessione in modalità locale. È però necessario aver impostata la variabile d'ambiente oracle_sid
.
Stabilita la connessione con SQL*Plus è possibile connettersi ad un altro database (locale o remoto) o rimanere connessi allo stesso, ma con un altro utente, utilizzando il comando CONNECT.
Sintassi di CONNECT
CONNECT <nome_utente>/<password_utente>@<nome_servizio_rete>
Lo slash (/) separa il nome dell'utente dalla sua password. Non avendo a disposizione altri utenti se non quelli amministrativi proviamo ora a collegarci come utente SYSTEM
(password: systemuser).
CONNECT system/systemuser@test-servizio
Ovviamente la connessione con l'utente HR, stabilita precedentemente, viene terminata. Se si omette l'inserimento della password sarà SQL* Plus ad chiedercela. Facciamo ancora un esempio.
Altrettanto importante è DISCONNECT che consente la disconnessione dell'utente dal database a cui è collegato senza terminare SQL* Plus.
Per terminare la connessione e uscire definitivamente da SQL* Plus usiamo i comandi EXIT o QUIT.
Per modificare la password dell'utente con cui ci siamo connessi utilizzeremo invece il comando PASSWORD. Proviamo a modificare la password dell'utente HR dopo esserci ricollegati come "HR".
SQL> PASSWORD
D'ora in poi la password per HR sarà quella scelta, e non più a "hrpassword".
Immissione di statement SQL
Le istruzioni in SQL* Plus (dette statement) dovrebbero essere immesse su un'unica riga. A volte queste sono così lunghe che è impossibile riuscirci. Si provvede perciò a "spezzarle" su più righe premendo il tasto "Invio".
Ogni statement deve sempre essere terminato con il punto e virgola (;), ciò che invece non vale per i comandi SQL.
Per terminare l'esecuzione di un comando o statement in SQL* Plus si usa la combinazione di tasti Ctrl+C. Questo è utile quando si desidera terminare una query su una grande tabella dove i tempi di risposta potrebbero essere molto lunghi.
Il comando DESCRIBE
È utile per ottenere informazioni sugli oggetti del database, come tabelle e viste. Se utilizziamo DESCRIBE
su una tabella Oracle ci mostrerà le colonne di cui è composta, il tipo di dati di ogni colonna e se queste possono o meno contenere valori nulli (NULL
).Per ora prendiamo per buoni questi concetti, che approfonidremo in seguito.
Tutti i comandi possono essere abbreviati, anche ai primi quattro caratteri o più, ad esempio DESC
, DESCR
e DESCRIB
sono tutte scelte valide per DESCRIBE
.
Proviamo a vedere quali sono gli oggetti posseduti da HR. Ricordiamo che quando un utente o account possiedono almeno un oggetto si indicano con il termine "schema". Con l'istruzione successiva chiediamo ad Oracle di mostrarci tutti gli oggetti dell'utente connesso.
SQL> SELECT * FROM tab
Usiamo il comando DESCRIBE con la tabella countries
SQL> DESC countries
La tabella countries ha tre colonne: country_id
, country_name
e region_id
. La prima può contenere tipi di dati CHAR
e non ammette valori nulli (NOT NULL
). La seconda ammette tipi di dati VARCHAR2
e la terza NUMBER
. Per quest'ultime si può anche omettere di inserire un valore e lo dimostra l'assenza della scritta NOT NULL
nella relativa colonna "Null?". Per adesso tralasciamo il significato dei tipi di dati, ad essi dedicheremo un'intera lezione.
Salvare i comandi SQL in un file
Il comando SPOOL ci permette di memorizzare in un file la cronologia dei comandi e degli statement SQL eseguiti in SQL* Plus. La sintassi è la seguente:
SPOOL <nome_file>
Il comando, per default, scrive in un file con estensione .lst ma possiamo anche specificare un'altra estensione. Facciamo un esempio. Connettiamoci a SQL* Plus come utente HR. Quindi proviamo subito ad eseguire
SQL> SPOOL c:miofile.txt
Visualizziamo ancora una volta tutti gli oggetti posseduti dall'utente HR con le istruzioni
SQL> SELECT * FROM tab; SQL> DESC countries
Con il comando
SQL> SPOOL OFF
terminiamo la scrittura nel file specificato. Ora proviamo ad aprire il file c:miofile.txt
e troviamo il tutto ciò che abbiamo eseguito nell'intervallo fra SPOOL c:miofile.txt
e SPOOL OFF
, compresi i risultati di ciascun comando o statement.
iSQL* Plus
Se SQL* Plus può sembrare un'applicazione grezza, iSQL* Plus risulterà sicuramente più piacevole. La "i" sta per Internet e iSQL* Plus è, infatti, un'applicazione web. Puntiamo il browser all'indirizzo
http://127.0.0.1/isqlplus
Al posto di 127.0.0.1 possiamo anche scrivere il nome del pc su cui è installato Oracle.
Per questa applicazione vale quanto già detto per la connessione in modalità grafica di SQL* Plus: inseriamo quindi il nome utente, la password e il servizio per la connessione. Premiamo il tasto "Login" per effettuare la connessione al database.
Nello spazio riservato all'inserimento delle istruzioni possiamo scrivere tutto ciò che abbiamo già visto con SQL* Plus. Proviamo quindi con
Select * from tab;
e premiamo il tasto "Esegui". Il risultato dello statement immesso ci verrà mostrato in modalità Web. Più comandi possono anche essere elencati nell'apposito spazio, uno sotto l'altro, ed eseguiti in successione premendo "Esegui".
Nella parte in alto a destra di iSQL* Plus troviamo l'icona "Preferenze" che, tra l'altro, ci consente di modificare la password dell'utente con cui abbiamo stabilito la connessione al DB (link "Modifica password").
Per disconnettere l'utente possiamo cliccare sull'icona "Logout". Il pulsante "Salva script" memorizza in un file di testo tutti i comandi presenti nello spazio di inserimento, successivamente richiamabili usando i pulsanti "Sfoglia" e "Carica script".