back to top

Guida MySQL

Introduzione a MySQL

Il termine database in informatica sta ad indicare una struttura organizzata di dati. I database (o, più brevente, DB), quindi, sono gli archivi dove gli applicativi (nel senso più ampio del termine) memorizzano dei dati in modo persistente al fine di poterli leggere successivamente e, se necessario, modificare o cancellare. I DBMS (DataBase Management System) Tra i più diffusi software per...

Installare MySQL su Linux

In questa seconda lezione della nostra guida a MySQL vedremo come installare il DBMS in ambiente Linux. Per prima cosa, ovviamente, dobbiamo procurarci una versione aggiornata del software. Per fare ciò basta collegarsi al sito ufficiale e accedere all'area download e scaricare una copia dell'ultima versione disponibile di MySQL Community Server, cioè la versione open-source di MySQL. Selezionate il sistema...

Installare MySQL su Windows

Come abbiamo detto nella lezione introduttiva di questa nostra guida, MySQL è disponibile anche per ambiente Windows sia per architetture a 32 che a 64 bit. Il modo più semplice per installare MySQL in ambiente Windows è utilizzare MySQL Installer (disponibile a questa pagina): si tratta di un appliucazione a 32 bit attraverso la quale sarà possibile installare, sul vostro...

Il client MySQL: lavorare mediante riga di comando

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. Ovviamente esistono diverse GUI per gestire MySQL (una delle più famose è phpMyAdmin), tuttavia nella nostra guida, per prendere confidenza coi comandi del nostro DBMS,...

Gestire utenti e permessi in MySQL con GRANT e REVOKE

Abbiamo visto che, non appena installato MySQL, questo è gevernato da un unico utente con privilegi illimitati: l'utente root, infatti, è l'amministratore del nostro server MySQL e come tale può fare qualsiasi cosa al suo interno. Normalmente, tuttavia, quando si amministra un server MySQL è buona norma NON utilizzare sempre l'utente root: se si crea un'applicazione che utilizza uno specifico...

Creare il primo database MySQL

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 come illustrato nella precedente lezione. Una volta loggati all'interno del nostro client MySQL digitiamo: SHOW DATABASES; Questa istruzione chiede al nostro DBMS di mostrarci tutti i database esistenti. Avendo appena installato MySQL dovreste avere solo 2...

Configurare MySQL per accettare connessioni remote

La versione classica di MySQL Server ha, per evidenti ragioni di sicurezza, una caratteristica molto restrittiva: non accetta connessioni sulla porta 3306 (la porta a cui risponde MySQL) se non da localhost! Questa caratteristica può essere un problema se abbiamo l'esigenza di rendere disponibile il DBMS all'interno di una Rete: il caso tipico è quello di una configurazione su...

Creare una tabella MySQL

Una volta creato, il nostro database è (ovviamente) vuoto nel senso che al suo interno non è presente alcuna tabella. Per averne la conferma - dopo aver selezionato il nuovo DB creato alla lezione precedente - digitate: SHOW TABLES; Il risultato dovrebbe essere: Empty set (0.00 sec) Creiamo la nostra prima tabella con MySQL Vediamo quindi come creare la nostra prima tabella all'interno del...

Tipi di dati in MySQL: dati numerici

Come sappiamo, un database è uno strumento per l'archiviazione di informazioni all'interno di una struttura definita. Anche MySQL, ovviamente, rispetta questa definizione e per farlo offre supporto a differenti tipi di dato i quali definiscono con precisione ogni "scomparto" di ciascun database. Più precisamente ogni database e composto da tabelle che, a loro volta, sono composte da colonne le quali,...

Tipi di dati in MySQL: dati stringa

Oltre ai tipi numerici, visti nella passata lezione, è necessario ricordare un altro fondamentale tipo di dato supportato da MySQL: i dati stringa. Come per i valori numerici, anche per le stringhe, MySQL offre diverse tipologie tra cui scegliere quella più adatta. Vediamole in una tabella riepilogativa: Tipi di dati per le stringhe TipoDimensioni massimeMemoria occupataCHAR(n)255 byten byteVARCHAR(n)255 byteLEN + 1...

Tipi di dati in MySQL: date e orari

Nelle lezioni precedenti abbiamo visto i tipi di dati numerici e stringa, in questa lezione affronteremo un terzo tipo anch'esso molto utilizzato in MySQL: i dati correlati a date e orari. Tali tipi di dati sono molto utili quando si ha a che fare con informazioni riguardanti la data e l'orario. Di seguito una tabella riepilogativa: TipoFormatoDATETIMEAAAA-MM-GG HH:MM:SSDATEAAAA-MM-GGTIMEHH:MM:SSYEARAAAATIMESTAMPPuò avere diversi...

Indici MySQL: ottimizzare l’accesso ai dati con INDEX e KEY

Nelle precedenti lezioni abbiamo visto come creare una tabella all'interno di un database MySQL e come definire correttamente i campi in base al tipo di dato atteso. Abbiamo anche detto quanto sia importante scegliere il "giusto tipo" per le colonne delle nostre tabelle, in quanto una scelta scrupolosa e attenta può incidere (positivamente) sulle performances del nostro database. In questa...

Modificare le tabelle in MySQL: il comando ALTER TABLE

Fino a questo punto della nostra guida a MySQL abbiamo visto come creare una tabella, vediamo ora come modificarne la struttura dopo averla creata. Capita spesso, infatti, di dover intervenire sul database per apportare delle modifiche alla struttura delle tabelle perchè, ad esempio, ci si è accorti che in fase di creazione qualcosa è stato tralasciato oppure perchè, passando in...

Caricare dati nelle tabelle di MySQL: INSERT, REPLACE e LOAD DATA

Una volta creata la struttura del nostro database ci ritroveremo, ovviamente, con una serie di tabelle vuote. La prima cosa da fare, quindi, sarà quella di inserire dei dati all'interno di queste tabelle. Per fare ciò MySQL ci mette a disposizione diverse possibilità che in questa lezione cercheremo di illustrare. INSERT Il costrutto tipico per il caricamento di nuovi dati all'interno...

SELECT: effettuare interrogazioni con MySQL

In questa lezione della nostra guida a MySQL analizzeremo quello che sicuramente è il comando più utilizzato: SELECT. Prima di procedere nella descrizione di questo comando, tuttavia, è necessario fare qualche premessa. Premessa Ora che le nostre tabelle sono state popolate di dati possiamo vedere come effettuare delle interrogazioni al database. Mediante una interrogazione (o query) l'utente, attraverso la console o...

MySQL: operatori logici, di confronto e matematici

MySQL, come sappiamo, è basato sul linguaggio SQL e come tale ne supporta tutte le caratteristiche. Anche in MySQL, quindi, è possibile utilizzare una serie di operatori per effettuare confronti, calcoli o operazioni logiche. Vediamo quindi, in maniera schematica, gli operatori che possiamo utilizzare all'interno delle nostre query. Alcuni di questi li abbiamo già visti in alcuni esempi della nostra...

Gli operatori LIKE, BETWEEN e IN di MySQL

In questa lezione vedremo altri interessanti operatori supportati da MySQL, ovvero: LIKE, BETWEEN e IN. L'operatore LIKE Un operatore piuttosto "particolare" è LIKE il quale consente di effettuare dei "paragoni di somiglianza". Supponiamo ad esempio di voler estrarre dalla nostra tabella "amici" tutti i record corrispondenti ad un nome che inizia per "Maria": SELECT * FROM amici WHERE nome LIKE 'Maria%'; Questa query...

Ricerche FULL TEXT con MySQL

Uno dei vantaggi nell'utilizzo dei database per l'allocazione dei dati è quello di poter effettuare delle ricerche all'interno delle informazioni memorizzate. Nel caso particolare delle ricerche testuali, MySQL mette a disposizione un'avanzata metodologia di ricerca chiamata FULL TEXT che permette di ottenere risultati estremamente precisi e raffinati sulla base della pertinenza tra chiave di ricerca e contenuti. Ricerche FULL TEXT:...

Raggruppare valori (GROUP BY) e unire più resultset (UNION) in MySQL

In questa lezione tratteremo velocemente due sintassi che consentono di effettuare selezioni più complesse in MySQL. Essendo gli argomenti già stati trattati in appositi approfondimenti sul linguaggio SQL, ci limieremo a dei brevi accenni rinviando il lettore ai citati articoli. GROUP BY e HAVING La clausola GROUP BY è un elemento facoltativo che può essere inserito all'interno di una SELECT. Il...

Le join in MySQL: INNER JOIN, LEFT JOIN e RIGHT JOIN

Come abbiamo detto nella prima lezione di questa nostra guida, una delle caratteristiche principali dei database relazionali è quella di poter sfruttare, appunto, le relazioni tra le diverse tabelle del database. All'interno di MySQL, così come negli altri database di tipo relazionale, le tabelle di un database possono instaurare delle relazioni tra di loro al fine di creare un unicum...

MySQL COUNT: conteggiare i record in una tabella

MySQL COUNT è una funzione che consente di contare il numero di record presenti in una tabella del database MySQL o in una sua selezione. Questa funzione è spesso utilizzata in combinazione con altri comandi SQL come SELECT, WHERE, GROUP BY e JOIN per ottenere informazioni più specifiche in base alle esigenze. In questo articolo, esploreremo in dettaglio la funzione MySQL...

Operare sui dati in MySQL: UPDATE, DELETE e TRUNCATE

In questa lezione vedremo come operare sui dati già apresenti all'interno del nostro database MySQL. Più precisamente vedremo come effettuare degli aggiornamenti (modifiche) ai dati e come effettuare cancellazioni selettive o di massa. Aggiornare record con UPDATE MySQL consente di effettuare operazioni di modifica sui dati mediante il comando UPDATE di SQL. Attraverso questo comando è possibile modificare il valore presente...

MySQL: aggiungere commenti a tabelle, campi e query

In MySQL è possibile inserire commenti, cioè annotazioni visibili solo all'amministratore del DBMS che hanno lo scopo di aggiungere promemoria utili alla gestione e/o all'eventuale modifica del database e della sua struttura. I commenti in MySQL possono essere aggiunti sia all'interno della struttura della tabella (per meglio specificare il ruolo e/o la funzione della tabella o di un singolo campo)...

Le subquery in MySQL

A partire dalla versione 4.1 anche MySQL ha introdotto il supporto per le cosiddette subquery, cioè la possibilità di utilizzare delle SELECT all'interno di altre istruzioni. E' possibile, infatti, creare relazioni tra più tabelle o all'interno della medesima tabella mediante l'utilizzo di subquery all'interno di altre SELECT o di comandi come INSERT o UPDATE, ad esempio. Iniziamo col dire che...

Gestire lock di tabelle in MySQL

Una delle problematiche tipiche che un DBMS deve saper gestire è la concorrenza di diversi utenti in operazioni simultanee di lettura ed aggiornamento dei dati. Al fine di descrivere la problematica, si pensi a due utenti che, simultaneamente, leggano il medesimo dato per effettuarne l'aggiornamento. E' evidente che uno dei due utenti riuscirà per primo nell'operazione, con la conseguenza che...

Gestire le transazioni in MySQL

Nella precedente lezione abbiamo visto come gestire operazioni concorrenti e simultanee attraverso la definizione di vincoli (lock) e come è possibile impostarne uno a livello di tabella mediante il comando LOCK TABLES. In questa lezione vedremo, invece, come far fronte al medesimo problema sfruttando la potenza delle transazioni all'interno del nostro DBMS MySQL. Si vuole sottolinare che quanto esposto...

Funzioni MySQL per le stringhe: TRIM, REPLACE, SUBSTRING, MID, CONCAT, UCASE e LCASE

MySQL è corredato nativamente da un largo numero di funzioni atte a svolgere le più disparate funzioni. A partire da questa lezione cercheremo di affrontare, anche se in modo succinto, le principali di queste al fine di fornire al lettore gli strumenti essenziali per lavorare col DBMS. Da un punto di vista espositivo suddivideremo le funzioni di MySQL oggetto della...

Funzioni matematiche di MySQL: CEIL, FLOOR, ROUND, MIN, MAX, AVG, MOD e RAND

Come anticipato nella precedente lezione, MYSQL dispone di un ricco arsenale di funzioni matematiche native attraverso le quali fare calcoli come, ad esempio, arrotondamenti o estrarre valore massimi, mninimi e mediani. Di seguito un elenco delle funzioni matematiche native di MySQL più utilizzate. CEIL, FLOOR e ROUND Queste tre funzioni sono utilizzate per arrotondare numeri decimali. CEIL arrotonda al numero intero maggiore,...

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 a seconda che una data condizione sia vera oppure no. Faremo cioè ricorso ad un costrutto di tipo IF che dovrebbe essere noto a chiunque abbia delle seppur minime conoscenze di programmazione. Il DBMS MYSQL supporta,...

Funzioni MySQL per la gestione di date e orari

MySQL è molto generoso in merito alla gestione di date e orari, sono infatti davvero tante le funzioni interne che il DBMS mette a nostra disposizione per trattare con questo particolare tipo di dato. In questa sede non è possibile passarle in rassegna una ad una, ma ci limiteremo a vedere le più importanti e comunemente tilizzate. Data e orario...

Lavorare con le date in MySQL: effettuare inserimenti e ricerche per date e/o orario

In questa lezione della nostra guida affronteremo un aspetto prevalentemente pratico, cioè come lavorare con date e orari in MySQL. Nello specifico vedremo come scrivere una data/orario all'interno di un campo e, successivamente, come effettuare la selezione di record in base a ricerche per data e/o orario. Salvare una data o un orario all'interno di una tabella MySQL E' possibile scrivere...

MySQL Stored Procedures

A partire dalla versione 5.0, MySQL ha colmato, tra le altre cose, una delle più grandi carenze che gli venivano imputate, ossia la mancanza delle Stored Procedures. Grazie all'introduzione delle cosidette "procedure archiviate", ora anche in MySQL è possibile creare - all'interno della stessa base dati - delle specie di "programmi" grazie ai quali è possibile eseguire operazioni complesse...

MySQL Stored Functions

Come già detto all'interno della lezione precedente, nella generica famiglia delle Stored Procedures rientrano anche le Stored Functions, anche dette UDF (acronimo di User Defined Functions). Le Stored Functions differiscono dalle Stored Procedures in senso stretto in quanto le prime, a differenza delle seconde, prevedono un valore di ritorno. Creare una Stored Function con MySQL Per creare una Stored Function in MySQL...

I Trigger in MySQL

Sempre a partire dalla version 5.0.2, MySQL, oltre alla già viste Stored Procedures, ha introdotto i trigger, ovvero un meccanismo attraverso il quale è possibile automatizzare talune operazioni al verificarsi di eventi riguardanti i dati, quali INSERT, UPDATE o DELETE. Creare un Trigger con MySQL Quando definiamo un Trigger in MySQL dobbiamo stabilire se questo debba innescarsi prima o dopo un...

Le Viste (o Views) in MySQL

Le Viste (o Views) sono uno strumento per la rappresentazione dei dati in MySQL. In pratica possiamo pensare ad una Vista come se fosse una sorta di "tabella temporanea" il cui scopo è di presentare determinati dati in un determinato modo. Esattamente come le tabelle, infatti, le Viste sono composte da colonne e righe le quali, però, sono il...

Manutenzione tabelle MySQL: ANALYZE, CHECK, OPTIMIZE e REPAIR TABLE

MySQL fornisce alcuni statement per la manutenzione, il miglioramento delle performances e la risoluzione dei problemi dei database. I comandi in questione sono tre, cioè: ANALYZE TABLE CHECK TABLE OPTIMIZE TABLE REPAIR TABLE ANALYZE TABLE Il comando ANALYZE TABLE analizza e scrive la distribuzione degli indici di una tabella; può essere utilizzato sia con le tabelle di tipo MyISAM (per le quali corrisponde a myisamchk...

Backup MySQL (e ripristino) con mysqldump

Garantire la sicurezza e l'integrità dei dati è una esigenza di primaria importanza, per questo motivo è molto importante effettuare backup periodici del proprio database MySQL. Perché è importante effettuare il backup di MySQL Il backup non è un'operazione facoltativa. Effettuare backup della propria base dati è una procedura obbligata per chiunque gestisca database. Approntare strategie di disaster recovery è indispensabile per...

MySQL e scripting lato server (cenni)

I database costituiscono uno strumento indispensabile anche nello sviluppo di siti web e di web application. E' attraverso i database, infatti, che le pagine web, esattamente come i software, acquisiscono una memoria persistente. E' grazie all'interazione con un database, infatti, che i siti web hanno potuto trasformarsi in qualcosa di diverso e più evoluto: sono un esempio di questa evoluzione...