L interfaccia a riga di comando di MySql Una volta completata la procedura di installazione possiamo finalmente testare le funzionalità di MySQL. Sia che ci si trovi in ambiente Linux che Windows, l'interfaccia di MySQL è rappresentata da una semplice riga di comando... E' importante ricordare che, appena installato, MySQL ha un utente root - in grado dicompiere qualsiasi azione sul server - che può accedere senza inserire alcuna password. Quindi la prima cosa da fare adesso è quella di impostare una password per l'utente root, così: mysql -u root password "miapassword" Una volta assegnata una password a root il nostro sistema potrà dirsi pronto a lavorare. Per accedere all'interfaccia di MySQL sarà ora necessario inserire i dati di autenticazione(user e password) in questo modo: mysql -u root -p Il sistema ci chiederà quindi di inserire la password dopodichè avvierà la connessione all'interfaccia di amministrazione del server... Questo quello che vedrete sul vostro monitor: Ora è possibile impartire comandi al MySQL. Nelle prossime lezioni vedremo il funzionamento dei principali comandi offerti dal MySQL. Vi ricordo, infine, che terminato di lavorare è necessario disconnettersi digitando:quit Con quit l'interfaccia di MySQL si chiude e vi ritroverete nuovamente nella Shell 1
Creare il primo database In questa lezione della nostra guida vedremo come creare il nostro primo database MySQL. la prima cosa da fare, ovviamente, è autenticarsi all'interno di MySQL. Una volta loggati digitate: SHOW DATABASES; Questa istruzione dice al nostro DBMS di mostrare tutti i database esistenti. Avendo appena installato MySQL dovreste avere solo 2 database: Il database "mysql" contiene i privilegi di accesso degli utenti; il database "test" serve, invece, come db di prova. Creare un database MySQL Poniamo, tuttavia, di non voler utilizzare il db "test" ma di voler creare un nuovo database MySQL sul quale lavorare. Supponiamo di vole creare un DB per ospitare i dati di una ipotetica agenda. Creiamo quindi il nostro DB "agenda": CREATE DATABASE agenda; Come è facile intuire l'istruzione CREATE DATABASE crea un nuovo DB all'interno della nostra installazione di MySQL. Proviamo ora a ripetere il comando SHOW DATABASES... ecco il risultato: Dopo aver creato il nostro nuovo DB possiamo iniziare a lavorarci sopra... tuttavia, prima di poterlo usare, dobbiamo selezionarlo, così: USE agenda; Una volta selezionato potremo iniziare a lavorare sul nostro DB... non ci resta quindi che iniziare ad impartire le istruzioni SQL (INSERT INTO, SELECT, UPDATE, DELETE, ecc). 2
Cancellare un database MySQL Ritengo opportuno chiudere questa lezione illustrandovi l'operazione inversa a quella descritta: ovvero la cancellazione di un database. Eliminare un DB è operazione semplicissima: basta scrivere DROP DATABASE seguito dal nome del DB da rimuovere. Poniamo, ad esempio, di voler cancellare proprio il DB "agenda" appena creato: DROP DATABASE agenda; Per verificare l'esito dell'operazione digitate nuovamente SHOW DATABASES: se tutto è andato per il meglio il database agenda non dovrebbe più comparire. Nota: Come avrete notato ogni istruzione all'interno di MySQL termina con il punto e virgola (;)... ricordatevelo sempre! 3
Vedere le tabelle Una volta creato, il nostro database è (ovviamente) vuoto. Per averne la conferma - dopo aver selezionato il nuovo DB - digitate: SHOW TABLES; Il risultato dovrebbe essere: Empty set (0.00 sec). 4
Tipi di tabelle in MySQL Come detto MyISAM è l'engine di default, questo vuol dire che, se in fase di creazione di una tabella non viene esplicitamente specificato il tipo di engine, questo sarà di deafult MyISAM. Per specificare l'engine: CREATE TABLE nome_tabella (...) ENGINE = INNODB;Per ulteriori informazioni circa le differenze tra MyISAM e INNODB rimando a questo breve articolo presente su questo sito.a Creiamo la nostra prima tabella Vediamo quindi di creare la nostra prima tabella all'interno del database "agenda". Funzione di questa nostra tabella - che chiameremo "amici" - sarà quella di archiviare una serie di informazioni personali (nome, cognome, telefono) relative, appunto, ai nostri amici. Ecco come crearla: CREATE TABLE amici ( nome VARCHAR(20), cognome VARCHAR(20), telefono INT(10) ); Ora il nostro DB ha la sua prima tabella! Come, non ci credete? allora facciamo una prova... SHOW TABLES; Il risultato dovrebbe essere: 5
Describe, Drop e Show Ora facciamo un'altra verifica. Assicuriamoci che la struttura della tabella sia corretta:describe amici; Il risultato sarà un resoconto come questo : Come vedete, si tratta di un riepilogo dei campi della tabella e delle loro caratteristiche. Per terminare questa lezione vediamo l'operazione inversa alla creazione di tabella, la loro eliminazione. Se, ad es., volessimo eliminare la tabella appena creata faremmo così: DROP TABLE amici; Per verificare digitate nuovamente SHOW TABLES. 6
I tipi di dati di MySQL: MySQL dispone di vari tipi di dati che svolgono diverse funzioni. Ad ogni colonna di una tabella è associato un solo tipo d'informazione. Più precisamente possiamo dire che la tipologia di dati assegnata ad ogni colonna la definisce e la limita, nel senso che la colonna potrà validamente accettare solo dati corrispondenti al tipo assegnatole. Facciamo un esempio: la colonna "nome" della tabella "amici" creata nella passata lezione è di tipo VARCHAR(20): questo significa che la colonna ammette solo caratteri alfanumerici ed ha una lunghezza massima di 20 caratteri 7
I dati numerici Di seguito alcune tabelle riepilogative 8
Da precisare che FLOAT, DOUBLE e DECIMAL funzionano alla stessa maniera (varia unicamente la capacità, ovvero il range di valori ammessi). Come si vede dalla tabella questi tre tipi di dati prevedono un doppio valore tra parentesi: la I indica il numero di Interi ammessi, la D il numero di Decimali. Se ad es. passiamo il numero 12.345678 ad una colonna di tipo FLOAT(2,4), tale numero diverrà 12.3456 (inquanto si accettano 2 interi ma solo 4 decimali). Per concludere questa lezione sui tipi di dati nuerici dobbiamo menzionare i cd. modificatori: AUTO_INCREMENT - Aumenta automaticamente il valore di una colonna aggiungendo 1 al valore massimo. E' opportuno utilizzarlo in combinazione con NOT NULL. Può essere applicato a tutti i tipi numerici interi. UNSIGNED - un campo contrassegnato con UNSIGNED non accetta valori negativi ZEROFILL - viene utilizzato per inserire un numero preceduto da una quantità variabile di zeri in base all'ampiezza della colonna. Se per esempio si dichiara un campo INT(10) ZEROFILL e si desidera memorizzare il valore "1234", esso verrà salvato come "0000001234" Facciamo un esempio: poniamo di voler creare un preziario di una libreria: 9
Creare una tabella di esempio definendo il tipo di dato 10
I tipi di dati di MySQL: dati stringa Oltre ai tipi numerici, visti nella passata lezione, è necessario considerare i cd. tipi di dati stringa. Vediamoli in una tabella riepilogativa: Tipi di dati Stringa Differenza tra char e varchar 11
Altri tipi dati I tipi TEXT e BLOB (Binary Large OBject) consentono di memorizzare grandi quantità di dati. Per finire ritengo opportuno menzionare i modificatori che possono essere utilizzati con questi tipi di dati: BINARY - Può essere utilizzato con CHAR o VARCHAR DEFAULT - Può essere utilizzato con tutti i tipi di dati (anche quelli numerici) ad eccezzione di TEXT e BLOB. Serve per indicare il valore di default del campo. NULL / NOT NULL - Può essere utilizzato con tutti i tipi di dati (numerici e stringa) PRIMARY KEY - Può essere utilizzato con tutti i tipi di dati (numerici e stringa) UNIQUE - Può essere utilizzato con tutti i tipi di dati (numerici e stringa). Con UNIQUE si imposta una regola di unicità, questo significa che nessun dato contenuto nella colonna può essere ripetuto. Ogni dato deve, quindi, essere unico. 12
Interrogazione Client/Server Nelle passate lezioni abbiamo visto come creare database e tabelle ed i tipi di dati ammessi. Di seguito analizzeremo la procedura per l'accesso ai dati, procedura che, indipendentemente dalla piattaforma e dal linguaggio utilizzato, presenta caratteristiche di logica comune. Tale procedura è riassumibile nei seguenti step: 1) Connessione al DB 2) Interrogazione (Query) o Comando 3) In caso di Query -> ricevimento del Recordset e manipolazione dei dati 4) Chiusura della connessione Di seguito lo schema tradizionale di interrogazione Client/Server 13
Differenza tra Comando ed Interrogazione Da sottolineare il ruolo di primo piano ricoperto nella fase n.2 (interrogazione) dal linguaggio SQL (Structure Query Language). Grazie alle semplici istruzioni di SQL, infatti, è possibile compiere ogni tipo di operazione sul nostro database: estrarre, modificare, inserire dati e molto altro ancora. La differenza tra interrogazione e comando sta nell'emissione o meno di una risposta di ritorno. Esempi di comando possono essere INSERT INTO, UPDATE e DELETE; esempio tipico di interrogazione è SELECT che restituisce sempre, appunto, un set di risultati (recordset). In questa sede non ritengo opportuno ne tantomeno necessario affrontare sintassi, comandi e possibilità del linguaggio SQL per il quale rimando all'ottima guida a SQL scritta dal mio amico Luca Ruggiero. Vi ricordo che la conoscenza di SQL è condizione ineliminabile per un corretto e completo utilizzo di MySQL. 14
I tipi di dato DATA /1 Nelle lezioni riguardanti i tipi di dati ne abbiamo saltato (volutamente) un tipo molto importante: il tipo di dati correlati alla data. Tali tipi di dati sono molto utili quando si ha a che fare con informazioni riguardanti la data e lora. Di seguito una tabella riepilogativa: MySQL è molto generoso in merito alla gestione di date e orari... sono infatti davvero tante le funzioni interne che MySQL mette a nostra disposizione per trattare con questi tipi di dati. In questa sede non è certo possibile passarle in rassegna una ad una, ma ci limiteremo a vedere le più importanti e comunemente utilizzate: Tra queste sicuramente vanno menzionate le funzioni per l'ottenimento di data e ora corrente: NOW(), CURDATE() e CURTIME(). 15
I tipi di dato DATA /2 16
I tipi di dato DATA /3 Per finire una breve precisazione: quelle viste fin qui non sono che una piccola parte delle funzioni interne che MySQL prevede per la gestione di date e orari. Vi rimando quindi alla documentazione ufficiale per vedere le (tante) altre funzioni che, sono certo, vi torneranno spesso utili nello sviluppo di applicazioni pratiche. 17
Funzioni condizionali in MySQL: CASE, IF, IFNULL e NULLIF In questo articolo vedremo come utilizzare delle istruzioni condizionali all'interno delle nostre query MySQL. Il nostro scopo, in sostanza, sarà quello di "influenzare" una query sulla base che una data condizione sia vera oppure no. In sostanza faremo ricorso ad un costrutto di tipo IF che dovrebbe essere noto a chiunque abbia delle seppur minime conoscenze di programmazione. Il DBMS MYSQL supporta, a dire il vero, diverse funzioni per gestire le istruzioni condizionali che prendono il nome di Control Flow Functions (letteralmente: "funzioni per il controllo del flusso"). Queste funzioni sono: CASE IF() IFNULL() NULLIF() Vediamole nel dettaglio. 18
CASE Mediante il costrutto CASE... WHEN è possibile creare delle istruzioni condizionali piuttosto complesse prevedendo non solo un'unica condizione, ma una serie di condizioni alternative. Ad esempio: 19
http://www.mrwebmaster.it/mysql/funzioni-condizionali-mysql-case-if-ifnull-nullif_10760.html 20