Piccola Guida completa a MYSQL - Home Page del Laboratorio di

Documento creato da Andrea ☺
www.ceccherini.net – Per informazioni : [email protected]
MYSQL
MySQL è un database piuttosto popolare, reso ancor più interessante da
almeno due fattori: primo, la sua gratuità; secondo, il rapporto idilliaco
che lo lega al linguaggio PHP, con il quale costituisce una formidabile
accoppiata per lo svilluppo di siti web basati su database.
Vediamo qui i passi necessari per installare MySQL sul proprio PC con
sistema operativo Windows e per imparare le operazioni fondamentali di
amministrazione.
Installazione
Il punto di partenza non può che essere, naturalmente, il sito Internet di MySQL
(http://dev.mysql.com/downloads/) ; arrivati sulla home page clicchiamo su downloads e poi su mirrors;
nella pagina così raggiunta abbiamo a disposizione l'elenco di tutti i server da cui è possibile scaricare
MySQL; non dobbiamo far altro che scegliere un FTP geograficamente vicino a noi ed entrare nella
directory /mysql/Win32.
Una volta terminato il download del file, provvediamo a scompattarlo (ad esempio, usando WinZip) ed
eseguiamo poi il consueto setup.exe. L'installazione non presenta problemi di sorta, basta scegliere la
directory sul nostro disco fisso in cui installare il software e seguire la procedura guidata (se si è poco
esperti, si consiglia di optare per l'installazione tipica). A questo punto, MySQL è installato sul nostro PC;
possiamo passare ad occuparci della "messa in opera".
Operazioni fondamentali
All'interno della directory in cui abbiamo installato MySQL troveremo una sottodirectory, \bin, contenente
gli eseguibili sia del server vero e proprio, sia di alcuni client di amministrazione e di utilità.
Avviare MySQL
Per avviare il server MySQL basta lanciare il Servizio Mysql presente (aggiunto) tra i servizi di sistema.
Creazione di un DATABASE MySQL
Sulle piattaforma ENSIM LINUX, Mysql può essere gestito direttamente dall’utente tramite il pannello di
controllo. Sulle piattaforme Windows il database deve invece essere creato precedentemente
dall’amministratore del server o l’utente non sarà in grado di lavorarci. Per poterlo creare,
l’amministratore ha bisogno di un nome e una password; queste possono essere fornite dall’utente
oppure scelte direttamente dall’ admin. Si preferisce comunque il primo caso. Se siamo costretti al
secondo si usano quelle delle FTP.
Il Dbase deve essere creato da linea di comando xchè MySql non ha un interfaccia grafica di
amministrazione. Bisogna quindi utilizzare un prompt di MS-DOS e raggiungere la cartella “c:\mysql\bin”
( o dove abbiamo installato il tutto).
Una volta in c:\mysql\bin dobbiamo inizializzare il Dbase con questo comando :
mysqladmin create <nome database>
se questo comando dovesse essere respinto con una dicitura del tipo “..access denied for
user…localhost…ecc.”
può voler dire che è stata modificata la password di root. La sintassi per l’inizializzazione diventa allora di
questo tipo :
mysqladmin –u root –p create <nome database>
a seguito di questa sintassi sarà richiesta la password di root e il dbase verrà creato vuoto.
Gestione UTENTE di un DATABASE MySQL
A questo punto dobbiamo attribuire al database vuoto un utente e una password di amministrazione. Per
fare ciò dobbiamo entrare nella consolle di gestione di Mysql con il seguente comando, sempre digitato
nella cartella “c:\mysql\bin”:
mysql
se questo comando dovesse essere respinto con una dicitura del tipo “..access denied for
user…localhost…ecc.” può voler dire che è stata modificata, come prima, la password di root. La sintassi
per la gestione diventa allora di questo tipo :
mysql –u root –p
con questo comando verremo proiettati in una consolle di gestione
a questo punto dobbiamo definire utente e password in questo modo :
GRANT ALL PRIVILEGES ON <nome database>.* TO ‘<NOME UTENTE>’@’%’
IDENTIFIED BY ‘<PASSWORD>’;
se la dicitura è stata scritta bene, Mysql deve rendere un messaggio del tipo “OK, 0 query, 0 rows
affected” o qualcosa di simile. Eventuali errori verranno invece segnalati. Attenzione particolare agli apici.
ESPORTAZIONE di un DATABASE MySQL
Per l’esportazione da riga di comando si usa il comando MYSQLDUMP come in esempi riportati di seguito:
Esempio:
mysqldump -u root nomeDB > pippo.sql
(dove pippo.sql è il nome del file sql)
Molto importante è anche l'opzione --databases per inserire nel file anche le istruzioni di creazione del DB
altrimenti fai il dump solo delle tabelle.
mysqldump -u root --databases nomeDB > pippo.sql
IMPOSTAZIONE DI UN SISTEMA MySQL E QUALCHE PRIMO PASSO
Personalmente suggerirei di non approfondire in questa sezione…..xchè si possono fare discreti casini
(specie se si cambia la password di ROOT e poi ci se la scorda!). Per chi fosse abituato ad Access il
concetto di utenti e password può risultare nuovo. In MySQL possiamo creare un numero infinito di utenti
con le loro password e i loro "diritti" sui vari database. Per accedervi la prima volta abbiamo un nome
utente di default, "root", definizione tanto caro a chi conosce Linux. La password è inizialmente vuota. Si
può assegnare una password di propria scelta, con il seguente comando:
c:\mysql\bin\mysqladmin -u root password <lapassword>
In questo caso "root" ora avrà come password quella specificata. Se vogliamo modificare in seguito
questa password dovremo scrivere questo comando:
c:\mysql\bin\mysqladmin -u root -p password nuovapassword
Dopo l'enter sarà chiesta la vecchia password utilizzata da "root", una volta digitata e dopo aver premuto
nuovamente enter, a "root" sarà assegnata la nuova password immessa.
Entriamo nella shell dei comandi di MySQL. A differenza di Access che ha una comoda interfaccia grafica
per la sua gestione, MySQL ha solo una shell, scomoda a dire il vero, dove digitare i vari comandi.
Vedremo in seguito come risolvere questo problema con strumenti esterni, ma per adesso cerchiamo di
utilizzare direttamente i comandi.
Con una finestra Dos in Windows 98 o con la finestra di Prompt dei comandi in NT/2000, avviamo la shell
con il comando, ugale per la versione shareware, completa o beta:
c:\mysql\bin\mysql –u root –p <password>
Otterremo questa risposta:
Per uscire è sufficiente scrivere:
quit;
Adesso possiamo digitare i comandi direttamente. Iniziamo a vedere i database presenti, scrivendo:
show databases;
ricordandoci il punto e virgola obbligatorio nella console di MySQL, otterremo:
Naturalmente questo è solo un esempio dei database presenti sul mio computer. Per selezionare su quale
database lavorare, utilizziamo il comando "use":
use andrea;
quindi, per vedere le tabelle presenti in questo database:
show tables;
In questo caso sono presenti due tabelle, "altro" e "andrea". Adesso possiamo digitare i comandi SQL a
noi noti per visualizzare, aggiungere, modificare e cancellare record:
Select * from altro;
comandi che chi ha già dimestichezza anche con Access e ASP conosce perfettamente.
Ma se volessimo costruire una nuova tabella o un nuovo database, come ci dovremo comportare? In
Access siamo abituati a utilizzare comode griglie con opzioni selezionabili con il mouse, ma con MySQL
dovremo utilizzare sempre sequenze di comandi. Per creare un nuovo database scriviamo:
create database prova;
In questo modo, visualizzando la lista dei database presenti, troveremo ora un nuovo database di nome
"prova". Per lavorare ora su questo database usiamo il comando che già abbiamo imparato ad usare:
use prova;
Adesso impariamo a creare una tabella semplicissima contenente i campi "nome", "email","eta":
CREATE TABLE utenti(
id int(3) not null auto_increment,
Nome char(30),
Email chr(30),
Eta int(3),
Primary key(id));
Nella prima riga diciamo a MySQL di creare una tabella di nome "utenti", nella seconda diamo il nome del
primo campo "id" che sarà numerico, al quale abbiamo aggiunto che non può contenere valore nullo e
che si auto-incrementrà ad ogni record aggiunto. Le tre linee successive creano i campi che ci
serviranno, mentre l'ultima imposterà "id" come PRIMARY KEY, cioè chiave univoca dei vari record del
database. Per la visione di tutti i tipi di campi in MySQL rimando al paragrafo successivo dove darò una
breve panoramica.
Ora che sappiamo come creare un database e le relative tabelle, è necessario sapere come modificarne la
struttura, come cancellarle, come aggiungere campi, ecc. Nel nostro caso vogliamo modificare il campo
"nome" in "name" e modificarne il tipo in "text":
change nome name text;
Se vogliamo aggiungere il campo paese useremo:
add paese char(20);
Se vogliamo assegnare l'indice alla nostra tabella o vogliamo aggiungerne un altro:
add index(id);
Ma se vogliamo cancellare la tabella "utenti", invece:
drop table utenti;
E per cancellare tutto il database, nel nostro caso "prova" useremo:
drop database prova;
Per una maggior descrizione dei vari comandi vi invito a leggere la documentazione che troverete sul
sito: www.mysql.com
TIPI DI CAMPI UTILIZZABILI
MySQL mette a disposizione una ricca scelta di tipi di campi per le nostre tabelle, più numerosi di Access.
TINYINT - Valore numerico compreso tra -128 e 127.
TINYINT UNSIGNED - Valore numerico compreso tra 0 e 255.
SMALLINT - Valore numerico compreso tra -32768 e 32767.
SMALLINT UNSIGNED - Valore numerico compreso tra 0 e 65535.
MEDIUM - Valore numerico compreso tra -8388608 e 8388607.
MEDIUM UNSIGNED - Valore numerico compreso tra 0 e 16777215.
INT o INTEGER - Valore numerico compreso tra -2147483648 e 2147483647.
INT UNSIGNED - Valore numerico compreso tra 0 e 4294967295.
BIGINT - Valore numerico compreso tra -9223372036854775808 e 9223372036854775807.
BIGINT UNSIGNED - Valore numerico compreso tra 0 e 18446744073709551615.
FLOAT (m,d) - Valore numerico con valori decimali. Compreso tra -3.402823466E+38 e -1.175494351E38.
DOUBLE(m,d) o REAL(m,d) - Valore numerico con valori decimali. Compreso tra 1.7976931348623157E+308 e -2.2250738585072014E-308.
DECIMAL (m,d) o NUMERIC(m,d) - Valore numerico con decimali che sarà memorizzato come una serie di
caratteri.
DATE - Campo contenente una data in formato "aaaa-mm-gg".
DATETIME - Campo contenente la data e ora, informato "aaaa-mm-gg hh:mm:ss".
TIME - Campo contente un'ora nel formato: "hh:mm:ss".
CHAR - Campo contenente una stringa di caratteri che può avere la massina lughezza di 255.
TINYBLOB o TINYTEXT - Campo che può avere la massima lunghezza di 255 in formato binario nel primo
caso o testo nel secondo.
BLOB o TEXT - Campo che può avere la massima lunghezza di 65535 in formato binario nel primo caso o
testo nel secondo.
MEDIUMBLOB o MEDIUMTEXT - Campo che può avere la massima lunghezza di 16777215 in formato
binario nel primo caso o testo nel secondo.
LONGBLOB o LONGTEXT - Campo che può avere la massima lunghezza di 4294967295 in formato binario
nel primo caso o testo nel secondo.
ENUM ('value1','value2',.) - Campo che può contenere uno dei valori presente tra le parentesi.