|
|
|
|
|
Un articolo di: Staff
del 03/04/2002
Letture: 36155
|
|
|
Buono sconto 4% su Toner e Cartucce agli utenti AZpoint. SU Iomiricarico.it!!
1 - Le basi
I database sono fondamentali nella programmazione di qualsiasi tipo di gestionali, questi permettono di organizzare in maniera ottimale i dati. Sui dati immagazzinati in un database si possono svolgere differenti operazioni, questi infatti possono essere modificati, aggiornati, aggiunti, eliminati o consultati, a seconda delle nostre necessità. Per svolgere queste operazioni si ricorre a un insieme di programmi detto DBMS (DataBase Manegement System) che in pratica è un software che fa da tramite tra l'utente e la base di dati, fornendo così una rappresentazione logica dei dati.
I DBMS forniscono diversi modi per rappresentare un database logicamente:
· Gerarchici
· Ad oggetti
· Relazionali
Qui li ho elencati in ordine di apparizione sul mercato. I gerarchici hanno caratterizzato i primi DBMS sviluppati intorno alla metà degli anni 70. Questo sistema è basato sugli alberi. E' tutt'ora utilizzato anche se in pochi casi.
Il modello ad oggetti è dato da un insieme di classi, che definiscono le caratteristiche ed il comportamento degli oggetti del database. Questo permette di inserire nel database delle informazioni sulle operazioni da eseguire oltre ai dati. Ad oggi sfortunatamente manca un linguaggio standard per l'interrogazioni dei database basati sul modello ad oggetti.
Il modello relazionale nato da Codd nel 1970 è stato però iniziato ad utilizzare intorno al 1980. Questo modello è basato sul principio di insieme ed è il modello che noi useremo in questo tutorial. I dati sono organizzati in delle tabelle bidimensionali composte da un numero fisso di colonne dette attributi ed in genere sono etichettati e da un numero fisso di righe dette enuple. Le righe identificano un record, cioè un insieme di campi che corrispondono al valore della colonna in quella riga. Qui di seguito segue una rappresentazione grafica sommaria di un database; quella più in alto nella seguente lista è formata da quella seguente e così via:

Approfondiamo ora l'argomento DBMS. Elenchiamo ora i suoi componenti software basilari :
· GESTORE DEGLI ACCESSI: trasforma le operazioni di accesso ai dati in chiamate a procedure del gestore della memoria fisica.
· PRECOMPILATORE DEL LINGUAGGIO OSPITE: svolge un'analisi delle istruzioni del Database Definition Language (DDL) e ne ricava le specifiche chiamate alle procedure del DBMS e passa il codice trasformato al processore di interrogazioni.
· PROCESSORE DI INTERROGAZIONI: traduce le istruzioni dal linguaggio usato a quello del DBMS.
· COMPILATORE DELLE DEFINIZIONI DEI DATI: riceve le istruzioni dal linguaggio usato per definire la tipologia dei dati del database e genera il Dizionario dei dati.
· GESTORE DELLA MEMORIA FISICA: gestisce l'allocazione dei dati nella memoria di massa.
· INTERFACCIA UTENTI: permette all'utente di interagire col database.
· Il DBMS deve svolgere i seguenti compiti:
· Deve controllare in dati in modo da evitarne la ridondanza.
· Gestisce l'accesso ai dati attraverso uno schema concettuale, cioè deve fornire una organizzazione visiva del database indipendentemente dall'organizzazione fisica dei dati.
· Deve gestire l'accesso concorrente ai dati in modo da evitare blocchi e errori.
I database che prenderemo in considerazione in questa lezione sono quelli realizzati con MySQL è DBMS completamente gratuito ed estremamente veloce nato originariamente su UNIX, ma oggi presente anche su Linux e Windows. DBMS sta per DataBase Managemente System. Spieghiamo un po' cosa sono i DataBase:
Dopo questa piccola parte teorica elenchiamo gli strumenti che vi serviranno durante il tutorial:
· Il server MySQL (il nome del file in genere è: Mysql-shareware-3.xx.xx-win.zip (oppure la versione beta: Mysql-3.xx.xx-beta-win.zip. Per Linux sarà qualcosa tipo: mysql-x.xx.xx-pc-linux-gnu-xxxx.tar.gz).
· Un editor di testo (il notepad va benissimo).
· Tanta passione e un po' di tempo.
Per la prima voce troverete tutto su www.mysql.org per la seconda voce ormai tutti i sistemi operativi sono muniti di questo strumento (alcuni potrebbero preferire editor creati appositamente per MySql, facilmente reperibili su molti siti web), per l'ultima voce sfortunatamente non so quali risorse consigliare.
2 - L'installazione
Una volta effettuato il download passiamo finalmente all'installazione, qui di seguito presento l'installazione a seconda del diverso sistema operativo:
Windows 9x
Scompattiamo il server SQL in una cartella di nome mysql (io terrò come a riferimento il drive c, quindi il percorso completo sarà c:\mysql). Apriamo il prompt di MS-DOS e scriviamo:
C:\> cd mysql
C:\mysql\> cd bin
C:\mysql\bin\>mysqld-shareware -language=italian
(se usiamo la beta sostituiamo la riga di sopra con:
C:\mysql\bin\>mysqld -language=italian ).
Fatto questo siamo nella shell di MYSQL e possiamo iniziare a lavorare.
Windows 2000
Scompattiamo il server SQL in una cartella di nome mysql (io terrò come a riferimento il drive c, quindi il percorso completo sarà c:\mysql). Apriamo il prompt di MS-DOS e scriviamo:
C:\> cd mysql
C:\mysql\> cd bin
C:\mysql\bin\>nysqld-nt - install
Tramite questo comando abbiamo creato un nuovo servizio sul server, ora non ci resta che
avviarlo svolgendo le seguenti semplici operazioni:
1. Apriamo il pannello di controllo.
2. Selezioniamo la cartella "Strumenti di Amministrazione".
3. Avviamo la voce "Servizi".
4. Ci apparirà una lista, scorriamola fino a quando non troveremo la voce "MySQL" se non dovesse essere presente o abbiamo errato il processo di installazione o non è ancora aggiornata la finestra, in questo caso premiamo F5 per aggiornare.
5. Una volta selezionato il servizio dalla lista il servizio clicchiamo col tasto destro del mouse e selezioniamo la voce "Proprietà".
6. Ci apparirà una finestra clicchiamo su "Avvia" per avviare il servizio. Se vogliamo evitare di avviarlo a mano ad ogni avvio di Windows possiamo scegliere da "Tipo di avvio" la voce "Automatico".
Ora MySQL è perfettamente installato.
1. 1.Prima di tutto scaricate l'apposito pacchetto dal solito www.mysql.org
2. Scompattate il file appena scaricato in una cartella (sempre di nome mysql per comodità)
3. Assicuratevi di essere amministratori del sistema e fate partire lo script di configurazione automatica tramite il comando:
./configure
4. Dopo una breve attesa per la configurazione automatica potete finalmente passare all'installazione vera e propria. Digitate prima
Make
e subito dopo
make install
5. Una volta installato create le tabelle di sistema. Per fare ciò spostatevi nella directory in cui avete installato Mysql, accedete alla sottodirectory /bin ed eseguite:
./mysqk_install_db
6. Infine non vi resta che far partire il demone del mysql digitando:
./safe_mysqld &
Il carattere & serve fa eseguire il demone in background.
7. Se non ricevete errori l'installazione è avvenuta con successo, se no ripete l'installazione da capo, forse avete saltato alcuni passaggi.
Ora possiamo finalmente eseguire il nostro MySQL anche sotto Linux. ATTENZIONE!!! Questo tutorial è stato scritto con il sistema Windows come riferimento, non ci dovrebbero essere differenze, ma ci tengo comunque a precisarlo.
3 - La configurazione
Una volta installato presenterà un user di default di nome "root" ed una password vuota. Per inserire la password scrivete:
C:\mysql\bin\>mysqladmin -u root password nomepassword
Naturalmente sostituiremo nomepassword con la password che vogliamo inserire.
Per cambiare la password in qualsiasi momento scriveremo:
C:\mysql\bin\>mysqladmin -u root -p password nuovapassword
Dopo la pressione del tasto "Invio" vi sarà richiesta la vecchia password.
Per creare un nuovo utente scriveremo invece:
Ora possiamo finalmente accedere all'SQL vero e proprio per inviare i comandi presenti
nella tabella presente tra poche righe. Per accedere scriveremo:
C:\mysql\bin\>mysql -uroot -ppassword
Naturalmente root e password dovranno essere sostituite rispettivamente dal nostro username e dalla nostra password.
Se avete seguito bene le istruzioni MySQL si eseguirà. Verrà aperto una specie di prompt di MS-DOS dove al posto di "C:\>" troveremo scritto "mysql>".
Questa interfaccia è a riga di comando. Ogni comando deve essere terminato da ; e da un invio. Il solo tasto invio non basta!.
Per uscire basterà digitare:
mysql> quit;
Tramite il comando "use" selezioniamo il database sul quale vogliamo lavorare:
mysql> use nometabella;
Ma come faccio a sapere quale database utilizzare se non sappiamo quali sono presenti sul mio computer? Per fare questo basta ricorrere semplicemente al comando "show". Tramite la sintassi:
mysql> show databases;
Visualizziamo tutti i database presenti sulla nostra macchina, mentre se vogliamo visualizzare le tabelle da cui è formato basterà scrivere:
mysql> show tables;
Mentre se vogliamo vedere i campi che formano una tabella scriveremo:
mysql> show columns from nometabella;
Una volta che ci siamo resi conto dei database presenti nel nostro database possiamo anche
selezionare quello che preferiamo tramite il già visto comando "use" per poi procedere a interrogarlo, ma prima di procedere analizziamo le voci principali dell'help che ci apparirà digitando \h o help o \?:
clear o \c cancella il comando;
exit o quit o \q esce.
\g o ; invia il comando SQL;
\. o source esegue uno script (vedremo in seguito come crearli);
\s o status visualizza le informazioni di stato del server;
\u è sinonimo dell'use già visto in precedenza.
Libreria necessaria per il richiamo in un linguaggio
Spesso per utilizzare MySQL in un sistema operativo sono necessarie delle librerie dette MyODBC. Per installare la dll sopra citata basta eseguire un normale setup. Se si hanno i sorgenti è necessario prima compilare il tutto tramite queste tre righe da scrivere nel prompt di MS-DOS:
C:\> cd myodbc3-src
C:\> nmake -f Win_Makefile
C:\> nmake -f Win_Makefile install
Perchè questa installazione vada a buon fine bisogna assicurarsi di aver installato MDAC, Microsoft Data Access SDK scaricabile da: www.microsoft.com/data/ . Se invece ci troviamo sotto Linux la storia si allunga di non poco, per questo vi rimando alla guida di questa libreria reperibile su http://www.mysql.org/products/myodbc/manual_toc.html . Qui troverete tutte le informazioni che desiderate su questa libreria. Ho tralasciato Linux e non Windows perché questa guida è stata ideata pensando a Windows.
Se avete scaricato la versione già compilata basta scompattarla ed eseguire il setup.exe qui contenuto. Una volta terminata l'installazione aprite il Pannello di Controllo di Windows, ciccate su Strumenti di Amministrazione

Poi ciccate su Origine Dati (ODBC)

Vi troverete davanti ad una finestra come la seguente:

Assicuratici dell'esistenza di questo DSN utente nel nostro sistema ne potremo creare uno nostro. Ci apparirà la seguente finestra:

Una volta completata potremo finalmente interrogare il nostro database MySQL tramite i linguaggi Microsoft ™ compreso il nuovissimo ASP.NET. Le connessioni al database tramite i vari linguaggi le vedremo al punto sette di questo tutorial.
4 - Il nostro primo Database
Ora che abbiamo finalmente installato il nostro DBMS è giunto il momento di "giocarci" un po'. In questo paragrafo vedremo come creare un database, inserirci i dati e leggere i dati contenuti in esso. Per un riassunto dei principali comandi SQL vi rimando al paragrafo 4.1.
Per prima cosa creiamo il nostro database, per fare questo dobbiamo usare il comando CREATE DATABASE. Scriviamo quindi:
mysql> CREATE DATABASE Clienti;
Ora il nostro database esiste. Scriviamo un show databases per verificare che sia stato veramente creato. Selezioniamo poi il database appena creato scrivendo:
mysql> use Client;
Ora dobbiamo inserirci le tabelle. Visto che questo è un esempio creeremo una sola tabella di nome anagrafe in cui inseriremo solo tre campi: Nome, Telefono, Codice Fiscale. Inseriamo il codice fiscale perché essendo un identificativo univoco ci sarà molto utile nel caso noi volessimo fare ricerche nel nostro database. L'istruzione per creare il database è:
mysql> CREATE TABLE anagrafe(nome char(35) not null, telefono int not null, cod_fis char(16) not null);
Il not null indica che i campi non possono essere vuoti, omettendolo perdiamo questa clausola.
Ora abbiamo creato la nostra tabella. Facciamo un show tables per vedere se tutto è andato per il giusto verso. Ora la tabella esiste ma è vuota. Inseriamoci dei dati. Per fare ciò ricorriamo all'istruzione INSERT INTO:
mysql> INSERT INTO anagrafe (nome, telefono, cod_fis) VALUES('Davide Cerbo', 0892419, 'CRBDVD…');
mysql> INSERT INTO anagrafe (nome, telefono, cod_fis) VALUES ('Laura Rispoli', 0892241, 'RSPLUR…');
mysql> INSERT INTO anagrafe (nome, telefono, cod_fis) VALUES ('Pinco Pallino', 0892324, 'PLLPNC…');
Notiamo alcune cose su questa istruzione. I valori dei campi dopo il VALUES vanno inseriti nell'ordine in cui sono citati i campi precedentemente. Le stringhe vanno inserite tra apici, i valori numerici no. Altra cosa che balza subito all'occhio è che queste istruzioni sono simili. Potrebbe risultare noioso scriverle tutte ogni volta. Per evitare questo basta usare i cursori della tastiera. Con le frecce su e giù si va alla riga precedente o successiva, mentre con le frecce destra e sinistra ci si sposta per la stringa, permettendoci quindi di modificare la stringa e rimandarla in esecuzione, senza doverla riscrivere da capo; più avanti vedremo un metodo ancora più veloce per ottimizzare i valori ripetitivi. Ora che i dati nel nostro database sono inseriti possiamo visualizzarli tramite l'istruzione SELECT. Scriviamo quindi…
mysql> SELECT * FROM anagrafe;
… e godiamoci lo spettacolo:).
Qui termina il nostro esempio guidato. Ora tocca alla vostra fantasia che potrete ampiamente sbizzarrire leggendo per bene il paragrafo 4.1 che è a dir poco fondamentale.
I comandi SQL
Scarica i comandi SQL
5 - Creare nuovi utenti in MySQL
Per creare utenti in MySQL si possono scegliere due strade. La prima consiste nel creare l'utente col GRANT, cioè mentre stiamo fornendo gli accessi ad un determinato utente. La sintassi del GRANT cambierà quindi in:
GRANT tipoprivilegio ON nomedatabase.nomeabella TO utente@host IDENTIFIED BY 'nuovapassword' WITH GRANT OPTION;
Le parole in blu da sostituire credo siano abbastanza chiare, fatta eccezione per host. Ad host dovete sostituire l'indirizzo IP o il nome dell'host dal quale è consentita la connessione. Se al posto di host scriviamo % la connessione sarà accettata da qualsiasi host. Se il server gira in locale, l'host della macchina è localhost.
Altro metodo per creare un nuovo utente è quello di interagire direttamente sul database degli utenti. Per fare ciò dobbiamo andare a modificare la tabella user presente nel database mysql (creato di default durante l'installazione. Non cancellatelo per nessun motivo mi raccomando! Questo contiene informazioni basilari per il funzionamento di MySQL). Quindi apriamo il database in questione scrivendo:
mysql> use mysql;
Effettuiamo poi il seguente INSERT INTO:
INSERT INTO user VALUES('host','nomeutente',PASSWORD('password'), 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X');
oppure:
INSERT INTO user SET Host='host',User='nome utente' ,Password = PASSWORD(password), Select_priv= 'X', Insert_priv= 'X',Update_priv = 'X',Delete_priv= 'X',Create_priv ='X',Drop_priv= 'X',Reload_priv= 'X',Shutdown_priv= 'X',Process_priv= 'X',File_priv= 'X',Grant_priv= 'X', References_priv=''X',Index_priv= 'X',Alter_priv = 'X';
Il numero degli argomenti può variare da versione a versione quindi è sempre meglio fare un semplice SELECT per visualizzare tutti i campi prima. Alla X va sostituito o Y o N, a seconda se vogliamo concedere oppure no i permessi a quell'utente. Se inseriamo tutte Y creiamo un SuperUser.
Una volta fatto questo INSERT INTO dobbiamo fare un FLUSH (questo comando aggiorna le variabili di sistema, in questo caso quelle riguardanti i privileggi) scrivendo:
mysql> FLUSH PRIVILEGES;
6 - I tipi disponibili in MySQL
Quando creaiamo il nostro database naturalmente dobbiamo definire i tipi dei campi. I tipi dei campi che usa MySQL sono i seguenti:
· 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.175494351E-38.
· 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.
7 - Gli script: rendiamo il lavoro sequenziale
Spesso ci capita di dover fare lunghe sequenze di comandi SQL, ed è un po' scomodo scriverli nel prompt che ci offre MySQL di base, per questo possiamo ricorrere a diversi strumenti facilmente trovabili sul web, ma basta anche un semplice blocco note. Nel file di testo che andremo a creare dovremo inserire tutti i comandi che desideriamo creando un vero e proprio file batch. Fatto questo torniamo al nostro prompt di MySQL e digitiamo:
mysql> \.
Questa opzione è molto comoda nel caso in cui ci trovassimo a dover fare diversi comandi ripetitivi (copia e incolla docet) e ci permette anche di costruirci nel linguaggio che preferiamo il nostro piccolo editor di script.
8 - MySQL utilizzato in diversi linguaggi di programmazione: esempi pratici.
MySQl nei linguaggi di programmazione
9 - Conclusione e ringraziamenti
Detto questo metto momentaneamente la parola fine al mio tutorial, sperando di aggiornarlo presto con altri esempi dedicati alla programmazione, una serie di domande comuni ed una raccolta di "trucchi del mestiere". Naturalmente ogni informazione aggiuntiva, segnalazione di errore, domanda è ben accetta. Distribuisco questo tutorial in un formato modificabile, proprio nella speranza di riceverne versioni ampliate e modificate nella mia casella di posta elettronica dagli stessi utenti che lo leggono.
Realizzato da Davide Cerbo www.e-salerno.it
|
|
[Indietro]
[Su]
[Home]
[Commenti]
[V. Stampabile]
|
|
|
|
Commento di Anonimo (ip: 212.171.33.119), scritto il 12/10/2005 alle 13:23:09
|
|
Commento di Anonimo (ip: 62.11.49.11), scritto il 20/11/2005 alle 11:54:08
|
|
Commento di Anonimo (ip: 217.171.43.8), scritto il 14/12/2005 alle 13:01:08
|
|
Commento di Anonimo (ip: 87.16.119.52), scritto il 08/11/2006 alle 13:45:47
|
|
Commento di Anonimo (ip: 149.132.233.98), scritto il 19/03/2007 alle 10:54:49
|
|
Commento di Anonimo (ip: 80.104.198.129), scritto il 17/04/2007 alle 21:52:25
|
|
Commento di Anonimo (ip: 89.97.234.178), scritto il 30/08/2007 alle 17:11:10
|
|
Commento di Anonimo (ip: 85.18.136.87), scritto il 14/11/2007 alle 20:53:11
|
|
Commento di Anonimo (ip: 151.56.160.132), scritto il 04/12/2007 alle 17:44:34
|
|
Commento di Anonimo (ip: 217.22.233.162), scritto il 11/12/2007 alle 16:59:53
|
|
Commento di Anonimo (ip: 81.208.83.235), scritto il 27/12/2007 alle 17:17:25
|
|
Commento di Anonimo (ip: 81.211.218.180), scritto il 08/01/2008 alle 19:27:33
|
|
|
|