Il client mysql

MySQL è il programma client a riga di comando che consente di collegarsi al server MySQL per sfruttarne le funzionalità. Può essere usato in modo interattivo o non interattivo.

Per lanciare il programma è sufficiente richiamarlo indicandogli utenza e password con le modalità che abbiamo visto nelle lezioni precedenti. È possibile anche indicare direttamente a quale database ci si vuole collegare:

shell> mysql –user=utente -p database

Ricordiamo che è possibile indicare le opzioni sia in modo esteso che abbreviato, e che indicando l’opzione -p senza digitare la password il programma ci chiederà di immetterla successivamente in maniera che non rimanga visibile sullo schermo. Il nome del database è il primo dato “non-opzione” passato al programma e viene riconosciuto in quanto tale.

Naturalmente sono anche altre le opzioni che possono essere passate al programma. Vediamone alcune (tra parentesi la versione breve):

–host=indirizzo (-h indirizzo)
–user=utente (-u utente)
–password=password (-ppassword)
–port=porta (-P)
–socket=path (-S path)
–execute=istruzione (-e istruzione)
–skip-column-names (-N)
–no-beep (-b)
–version (-V)

Ed ecco il loro significato:

  • host, user, password: come detto, sono i parametri fondamentali di connessione al server
  • port: la porta su cui il server è in ascolto (di default è la 3306)
  • socket: il socket da usare per la connessione
  • execute: è l’opzione che consente di eseguire un’istruzione ed uscire immediatamente dal programma. L’istruzione sarà racchiusa tra virgolette.
  • skip-column-names: con questa opzione il client visualizzerà i risultati delle query omettendo i nomi delle colonne come intestazione
  • no-beep: evita al client di emettere il caratteristico suono di sistema quando si verifica un errore
  • version: chiede al client di visualizzare soltanto il numero di versione e quindi di uscire

Oltre alle opzioni abbiamo poi una serie di variabili di sistema che possono essere impostate nell’aprire la connessione: fra queste, vogliamo ricordare max-allowed-packetche ci consente di stabilire la dimensione massima del pacchetto di dati trasmissibile al server.
Vediamo quindi un esempio di connessione:

shell> mysql -h localhost -u alberto -p –port=3307 –skip-column-names –max-allowed-packet=1048576 vendite

Con questa istruzione, l’utente cerca di collegarsi al server sulla macchina locale sulla porta 3307, con il nome utente ‘alberto’ e richiedendo di digitare la password successivamente; inoltre chiede la connesione diretta al database “vendite” e di non includere i nomi delle colonne nell’output; infine viene stabilita una dimensione massima di 1 megabyte per i dati da trasferire al server con ogni istruzione.

Una volta lanciato il programma e stabilita la connessione al server, è quindi possibile interagire con il database attraverso il linguaggio SQL, di cui ci occuperemo più avanti, concludendo ogni istruzione con un punto e virgola (;). Vediamo un esempio di query con il relativo output:

mysql> select * from clienti;
+----+----------+---------+------------------+---------+
| id | nome     | cognome | indirizzo        | comune  |
+----+----------+---------+------------------+---------+
|  1 | Alberto  | Rossi   | via Larga 45     | Bologna |
|  2 | Mimmo    | Righi   | viale Roma 7     | Napoli  |
|  3 | Paolo    | Verdi   | via Napoli 19    | Roma    |
|  4 | Andrea   | Chiari  | via del Fiume 20 | Torino  |
|  5 | Sandra   | Ralli   | via Nizza 27     | Torino  |
+----+----------+---------+------------------+---------+
5 rows in set (0.00 sec)

È sempre possibile modificare il database in uso, attraverso l’istruzione USE; inoltre possiamo utilizzare alcune funzioni per ottenere informazioni sulla connessione in corso:

USE acquisti;
SELECT VERSION();
SELECT CONNECTION_ID();
SELECT DATABASE();

Con la prima istruzione selezioniamo il database “acquisti”, che sarà da quel momento in poi quello di default; la seconda restituisce la versione del server, la terza l’identificativo della connessione, la quarta il database di default (quello selezionato con USE; la funzione restituisce NULL se non abbiamo un db di default).

Il client mysql è in grado di interpretare diversi altri comandi, fra cui i seguenti:

  • help - visualizza la lista dei comandi
  • exit - termina l’esecuzione del client; suo sinonimo è quit
  • tee nomefile - registra tutto l’output del programma nel file indicato
  • notee - disabilita tee
  • pager nome programma (solo su sistemi Unix) – utilizza il programma indicato per visualizzare l’output (es.: “pager less -n -i -S”)
  • source nomefile - esegue come istruzione SQL il contenuto del file indicato
  • status - visualizza una serie di informazioni sul server e sulla connessione
  • use database - seleziona il database per le successive istruzioni SQL
  • warnings - visualizza i messaggi di tipo warning dopo ogni istruzione
  • nowarning - non visualizza i warning

Esecuzione di un file batch

Abbiamo già visto che è possibile, dall’interno del client mysql, eseguire il contenuto di un file con il comando source. È possibile fare la stessa cosa anche senza essere già collegati al client, lanciandolo con l’opzione -e oppure passandogli direttamente il file in input:

shell> mysql -uuser -ppassword -e “source nomefile
shell> mysql -uuser -ppassword < nomefile

Facciamo un accenno alla possibilità di visualizzare l’output di una query in forma verticale anziche´ orizzontale come avviene di solito: ciò risulta particolarmente utile quando dobbiamo visualizzare campi dal contenuto molto lungo (ad es. di tipo text), che sono piuttosto scomodi da leggere nel formato tradizionale.

Per fare questo è sufficiente concludere la query con il simbolo \G invece del solito punto e virgola: il client risponderà suddividendo ogni riga del result set di output in questo modo:

  • per prima cosa una riga di asterischi a segnare l’inizio della riga con il numero della riga stessa
  • poi una riga per ogni campo di output, con l’indicazione del nome del campo seguita da due punti e dal contenuto. Nel caso in cui il contenuto sia piuttosto lungo, verrà spezzato su più righe migliorando la leggibilità

Ecco un esempio:

mysql> SELECT * FROM articoli WHERE id = 7\G
*************************** 1. row **************
       id: 7 
     data: 2005-10-28 14:50:50
   autore: Alessandro Fulciniti
   titolo: Bookmark CSS e Javascript
    testo: Sono davvero molti i link interessanti
in cui mi sono imbattuto negli ultimi tempi e ho
pensato di riassumerli in questo post. Partiamo
da Javascript. è stato annunciato la scorsa 
settimana il vincitore dell'AddEvent Recording 
Contest. Dean Edwards, uno dei tre giudici e 
conosciuto a molti per lo script IE7, ha 
proposto... la sua soluzione.
Via del.icio.us scopro Moo.fx una liberia 
veramente piccola ed efficace per avere effetti 
di transizione su opacità e dimensioni con 
Javascript. Davvero un buon lavoro, e mi fa molto 
piacere che sia stata sviluppata da un italiano.

1 row in set (0.09 sec)

Le variabili utente

Nel corso di una connessione è possibile utilizzare delle variabili che sono specifiche della connessione stessa, quindi non visibili ad altri utenti; tali variabili vengono contraddistinte dall’uso di una chiocciolina (@) davanti al nome:

SET @var = 7;
SELECT * FROM articoli WHERE id = @var;
SELECT COUNT(*) FROM articoli INTO @var;

Come vedete è possibile usare le variabili come valori di confronto in una query, oppure utilizzarle per ricevere l’output di una query, se questo è formato da un solo valore.

Both comments and pings are currently closed.

Comments are closed.