Lavorare con MySQL Parte Prima.



Documenti analoghi
Costruzione di Sit Web con PHP e MySQL. Lezione 7 - Esercitazione - Introduzione a MySQL: le tabelle, i tpi di dato, le query

Data Base. Master "Bio Info" Reti e Basi di Dati Lezione 6

19. LA PROGRAMMAZIONE LATO SERVER

MySQL Command Line Client: operazioni fondamentali

I comandi del linguaggio DDL (Data Definition Language): CREATE E ALTER

Appunti di MySql. Evoluzione di un tutorial di base di mysql, scritto da Etel Sverdlov.

Introduzione. Alberto Fortunato Pag. 1 di 137

GERARCHIE RICORSIVE - SQL SERVER 2008

Amministrare MySQL con PhpMyAdmin

Basi di dati. Il Linguaggio SQL. K. Donno - Il Linguaggio SQL

Il software ideale per la gestione delle prenotazioni GUIDA UTENTE

developed by Emanuele De Carlo

LA GESTIONE DELLE VISITE CLIENTI VIA WEB

MySQL Database Management System

Le query. Lezione 6 a cura di Maria Novella Mosciatti

. A primi passi con microsoft a.ccepss SommarIo: i S 1. aprire e chiudere microsoft access Start (o avvio) l i b tutti i pro- grammi

Access. P a r t e p r i m a

Concetti fondamentali dei database database Cos'è un database Principali database

Access. Microsoft Access. Aprire Access. Aprire Access. Aprire un database. Creare un nuovo database

Database 3 affitto veicoli. Testo del quesito

Manuale d uso Software di parcellazione per commercialisti Ver [05/01/2015]

Unità 2.1 Comandi sui database

Il sofware è inoltre completato da una funzione di calendario che consente di impostare in modo semplice ed intuitivo i vari appuntamenti.

Insegnamento di Informatica CdS Scienze Giuridiche A.A. 2006/7. Il trattamento dei dati

Laboratorio di Basi di Dati e Web

Laboratorio Progettazione Web PHP e MySQL - Lezione 9. Andrea Marchetti IIT-CNR andrea.marchetti@iit.cnr.ita 2011/2012

GateManager. 1 Indice. tecnico@gate-manager.it

Guida all'uso Di mylittleadmin

MODULO 5 ACCESS Basi di dati. Lezione 4

Al giorno d oggi, i sistemi per la gestione di database

Laboratorio Progettazione Web PHP e MySQL - Lezione 9. Andrea Marchetti IIT-CNR andrea.marchetti@iit.cnr.ita 2012/2013

Esercitazione query in SQL L esercitazione viene effettuata sul database viaggi e vacanze che prevede il seguente modello E/R:

Il web server Apache Lezione n. 3. Introduzione

User Tools: DataBase Manager

Creazione manuale delle tabelle (mediante scrittura del codice SQL corrispondente)

Le Basi di Dati. Le Basi di Dati

Lavorare con MySQL Parte Seconda.

Database Manager Guida utente DMAN-IT-01/09/10

Il linguaggio SQL. è di fatto lo standard tra i linguaggi per la gestione di data base relazionali.

Esercizio sui data base "Gestione conti correnti"

Laboratorio Progettazione Web PHP e MySQL. Andrea Marchetti IIT-CNR 2013/2014

Manuale utente Volta Control

Cos è ACCESS? E un programma di gestione di database (DBMS) Access offre: un ambiente user frendly da usare (ambiente grafico)

Esercizio data base "Biblioteca"

MODULO 5 Appunti ACCESS - Basi di dati

IL DAT A B A S E DI ALGE B R A N D O

GUIDA UTENTE BILLIARDS COUNTER (Vers )

PROCEDURA INVENTARIO DI MAGAZZINO di FINE ESERCIZIO (dalla versione 3.2.0)

Eleonline gestione dello spoglio elettorale

DBMS (Data Base Management System)

Università degli Studi di Verona. Laboratorio di Basi di Dati

File, Modifica, Visualizza, Strumenti, Messaggio

BLOCK CALL Manuale utente Block Call Manuale Utente

11/02/2015 MANUALE DI INSTALLAZIONE DELL APPLICAZIONE DESKTOP TELEMATICO VERSIONE 1.0

INSERIMENTO DATI BASILARI

Corso sul linguaggio SQL

Configuration Managment Configurare EC2 su AWS. Tutorial. Configuration Managment. Configurare il servizio EC2 su AWS. Pagina 1

Linea guida di inserimento dati Antiriciclaggio-XP DM-143

Premessa Se e stata installata la versione 1.0 del programma procedere alla rimozione dei seguenti elementi.

STAMPA UNIONE DI WORD

Metodi per la Gestione dei Dati (lezioni di laboratorio)

5.3 TABELLE RECORD Inserire, eliminare record in una tabella Aggiungere record Eliminare record

GUIDA AL PRONTUARIO MOBILE

MANUALE PARCELLA FACILE PLUS INDICE

Software di interfacciamento sistemi gestionali Manuale di installazione, configurazione ed utilizzo

FISH Sardegna ONLUS. Manuale Utente.

2104 volume III Programmazione

Sistemi per la gestione di database: MySQL ( )

Guida Pro di Verifier

Guida all uso di Java Diagrammi ER

Corso Sistemi Informativi Avanzati. Programma 30 set Installazione Macchina Virtuale. Introduzione alla BI nelle Aziende.

INSTALLAZIONE JOOMLA

ISTRUZIONI INSTALLAZIONE PMANGO

Creazione Account PEC puntozeri su Outlook Express

Che cos'è un modulo? pulsanti di opzione caselle di controllo caselle di riepilogo

Lezione 8. Metadati, Viste e Trigger

IRSplit. Istruzioni d uso 07/10-01 PC

FPf per Windows 3.1. Guida all uso

MySQL Server e Netbeans

Basi di Da( MySQL & MySQL Workbench. Anna Monreale

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti

Manuale servizio ScambioDati

EasyPrint v4.15. Gadget e calendari. Manuale Utente

Guida alla procedura di inserimento materiale didattico sui minisiti degli insegnamenti

PORTALE CLIENTI Manuale utente

Definizione di domini

Direzione Centrale per le Politiche dell Immigrazione e dell Asilo

Preparazione. Introduzione a MySQL: costruzione di una base di dati e gestione degli accessi. Accesso all area condivisa. Avvio Server MySQL

Strumenti Software per Esercitazioni (ambiente Windows) Basi di Dati L LS Ing. Gestionale

APRIRE UN PROGRAMMA DI FOGLIO ELETTRONICO

Appunti sulle basi di dati. Cos è una base base di dati? Introduzione. D. Gubiani. 19 Luglio 2005

Configurazione avanzata di XAMPP

Relazioni tra tabelle

Veneto Lavoro via Ca' Marcello 67/b, Venezia-Mestre tel.: 041/ fax: 041/

3. Installare Wamp Server

Il database management system Access

Dispensa di database Access

SOMMARIO... 3 INTRODUZIONE...

GUIDA UTENTE MONEY TRANSFER MANAGER

Transcript:

Lavorare con MySQL Parte Prima. Data la particolarità dell argomento, ho deciso di dividerlo in due lezioni. Nella prima, si parlerà diffusamente di MySQL, cos è un DBMS, cos è l SQL, i campi supportati da MySQL etc. Nella seconda si vedrà in particolare come lavorare con l accoppiata imbattibile PHP/MySQL, ai fini di programmare applicazioni professionali e scalabili. Cos è MySQL? MySQL è un database relazionale multithread open source, sviluppato nel 1996 da una società di consulenza svedese, la TcX, che aveva bisogno di un database veloce e che richiedeva poche risorse, pur dovendo gestire notevoli quantità di dati. A quel tempo non esisteva niente sul mercato che soddisfaceva queste esigenze, quindi la TcX ha pensato bene di sviluppare da zero questo sistema (anzi, basandosi su un atrlo DBMS noto come msql). La diffusione di MySQL (oltre l utilizzo in università) è dovuta principalmente alla sua natura open source e gratuita, oltre alle sue doti di velocità e flessibilità. L avvento di Linux e, ultimamente, l enorme sviluppo di PHP hanno consentito a MySQL di essere uno dei DBMS non commerciali più utilizzati al mondo. Ok, ma cos è un database? Ed un database relazionale? Un database è un insieme di file strutturati (a differenza dei file non strutturati, che sono una semplice sequenza di caratteri), contenente quindi tabelle e indici per ottimizzare l accesso ad esse. Una tabella è un insieme di informazioni omogenee, suddivise in campi (le colonne della tabella), ognuno rappresentante un attributo di un oggetto. Il contenuto di questo campo è il valore dell attributo. Ogni riga della tabella identifica il singolo record. Per chi non ha mai affrontato queste problematiche, probabilmente ci sta capendo poco Con un disegnino (Fig. 1) tutto sarà più chiaro (lo slogan un immagine vale più di mille parole non lo hanno inventato i webdesigner!) :

Installiamo MySQL. Fig. 1 DBMS, Tabelle, Record e Campi. Nella figura precedente, è visualizzato un database composto da quattro tabelle : TblProdotti, TblOrdini, TblGruppi e TblCLienti. In dettaglio, si può osservare la struttura della tabella TblClienti, composta da tre campi (o colonne) : id (tipicamente esiste sempre un campo id, che deve identificare univocamente il singolo record, nel senso che non devono esistere record nella stessa tabella che abbiano lo stesso valore nel campo chiave), cog che contiene il cognome di un cliente ed infine un campo email. Il singolo record corrisponde ad una riga ed identifica un oggetto descritto da tutti i valori contenuti nei campi (nel nostro caso l oggetto è il cliente, descritto dai valori id, cognome ed indirizzo e-mail). MySQL è un DBMS, cioè un DataBase Managment System, capace quindi di accedere alle tabelle, effettuare ricerche, aggiungere e cancellare dati, controllare gli accessi in ambiente multiutente, evitare scritture contemporanee etc. Una gran faticaccia! Eppure MySQL ci riesce meglio di tanti suoi colleghi che godono di licenza commerciale. Grazie alla distribuzione Win32, stabile quanto quella Linux, la sua diffusione ed il suo utilizzo da parte degli sviluppatori è aumentata notevolmente. Nei paragrafi che seguono illustreremo come installare e configurare MySQL per i nostri script di esempio e faremo una panoramica delle operazioni principali che si possono effettuare tramite il linguaggio SQL. Installiamo MySQL. Installare MySQL in ambiente Windows è praticamente un gioco da ragazzi. Basta scaricare dal sito www.mysql.com i binari Win32 della versione corrente di MySQL. Una volta installato MySQL, è possibile avviare il server direttamente con il tool WinMySQLAdmin, in cui è possibile editare direttamente anche il file my.ini. Tipicamente, non bisogna far alcuna operazione particolare, basta avviare il server e creare un database di lavoro direttamente tramite il tool grafico cliccando sulla scehda database. Cliccando col tasto destro nella finestrella di sinistra, appare un menu contestuale a comparsa in cui bisogna scegliere la voce Create Database.

Questo programmino però non permette la creazione di Tabelle o altro come succede in programmi di database non Enterprise come Access. Esiste però un programma davvero ben fatto ed utilissimo che consiglio di scaricare immediatamente e che si chiama MySQL-Front scaricabile gratuitamente da www.mysqlfront.de. Altro software principe per l interfacciamento amichevole con il modulo di amministrazione MySQL è sviluppato proprio in PHP : PHPMyAdmin. Tutti i servizi di hosting che supportano sia PHP che MySQL hanno una versione installata del programma, con cui gli utenti (e cioè i programmatori PHP/MySQL) possono creare tabelle, cancellarle, aggiungere records, creare indici etc. etc. Consiglio però di effettuare le prime operazioni tramite la shell di MySQL : aprite una finestra windows, dopo aver avviato il server MySQL, ed andate nella directory bin di MySQL. Avviate il programma mysql. Questo programma è il client che si collega direttamente al server mysql in esecuzione. Se avete impostato una password con MySQL o volete collegarvi come un utente non root (bisogna prima creare gli utenti lo vedremo più avanti), bisogna digitare il comando seguente: C:\mysql\bin>mysql u utente -p Dopo aver premuto invio e immesso la password, appare il prompt dei comandi mysql : Qui possiamo immettere tutti i comandi SQL. SQL (Structured Query Language) è uno standard di linguaggio utilizzato da quasi tutti i software DBMS in circolazione (compreso Access). Come tutti gli standard, esso non viene rispettato fino i fondo ed ogni DBMS utilizza un proprio dialetto SQL. Per creare le proprie tabelle, consiglio di scrivere un file di testo con estensione.sql, contenente i comandi SQL per la creazione delle tabelle e la popolazione della stessa. Per eseguire tale file SQL procedete nel seguente modo (più avanti vedremo un esempio di tale file, dopo aver spiegato i principali comandi SQL) : Al prompt di mysql digitate i seguenti comandi \u database \. script.sql La prima istruzione seleziona un database creato precedentemente; la seconda serve per eseguire il file script.sql, che deve essere salvato nella directory bin di MySQL. Istruzioni SQL Oltre all istruzione create database per creare un database, esistono numerose funzioni per la definizione della struttura dei nostri database. Dopo aver progettato le tabelle del database (su carta) bisogna realizzarle effettivamente. Di seguito mostreremo la serie di istruzioni che servono per definire una tabella con tutti i suoi campi. CREATE TABLE TblClienti ( Id INT(4) NOT NULL PRIMARY KEY, Cognome VARCHAR(50), Nome VARCHAR(50), Email VARCHAR(50) DEFAULT mail@mail.it,

Istruzioni SQL ); Note TEXT Queste istruzioni possono essere scritte direttamente da shell mysql oppure immesse in un file sql da eseguire successivamente.consiglio fortemente la seconda soluzione. Dopo l istruzione create table, si prosegue con la lista dei campi, definendo il loro tipo (INT, CHAR, VARCHAR,BLOB, TEXT etc.), la loro dimensione massima ed aggiungendo alcune opzioni. Ad esempio, NOT NULL indica che il campo non può essere vuoto; PRIMARY KEY assegna il ruolo di chiave primaria a quel campo, e quindi non ci possono essere duplicazioni in quella colonna e le ricerche effettuate tramite tale campo sono velocizzate dalla creazione di indici; DEFAULT valore assegna un valore di default nel caso il campo non risulta riempito (serve ad esempio quando l applicazione non prevede la gestione di valori NULL e tuttavia si vuole lasciar libero l utente di non riempire il campo apposito). Per modificare e aggiungere una colonna si procede nel seguente modo: ALTER TABLE TblClienti CHANGE Cognome Cognome VARCHAR(45); ALTER TABLE TblClienti ADD Telefono VARCHAR(40); Se si vuole eliminare un campo basta sostiruire nell istruzione precedente ADD con DROP. Per inserire dei valori di prova nella tabella : INSERT INTO TblClienti VALUES(1, Rossi, Mario, mrossi@tin.it, Cliente di Test 1 ); Etc. etc. A questo punto, possiamo visualizzare il contenuto completo del nostro file sql da eseguire via shell mysql : DROP TABLE IF EXISTS TblClienti; ##l'istruzione precedente serve per ##eliminare la tabella se creata ##precedentemente, così da evitare ##un errore di duplicazione tabella CREATE TABLE TblClienti ( Id INT(4) NOT NULL PRIMARY KEY, Cognome VARCHAR(50), Nome VARCHAR(50), Email VARCHAR(50) DEFAULT 'mail@mail.it', Note TEXT ); ##inserimento records di prova INSERT INTO TblClienti VALUES(1,"Rossi","Mario","mrossi@tin.it","Cliente 1"); INSERT INTO TblClienti VALUES(2,"Bianchi","Ugo","bianchi@tin.it","Cliente 2"); INSERT INTO TblClienti VALUES(3,"Verdi","Fabio","fverd@tin.it","Cliente 3"); INSERT INTO TblClienti VALUES(4,"Neri","Max","max@tin.it","Cliente 4"); INSERT INTO TblClienti VALUES(5,"Gialli","Joy","joy@tin.it","Cliente 5");

Eseguendo tale file tramite l istruzione \. file.sql (dopo aver selezionato il database tramite l istruzione \u database), si ottiene la seguente risposta da parte di mysql : D:\mysql\bin>mysql Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 12 to server version: 3.23.26-beta Type 'help;' or '\h' for help. Type '\c' to clear the buffer \u corso Database changed \. test_corso.sql Query OK, 0 rows affected (0.05 sec) Query OK, 0 rows affected (0.17 sec) Query OK, 1 row affected (0.16 sec) Query OK, 1 row affected (0.00 sec) Query OK, 1 row affected (0.05 sec) Query OK, 1 row affected (0.00 sec) Query OK, 1 row affected (0.00 sec) Interrogazioni al database Le istruzioni per effettuare un interrogazione ad un database sono le più importanti ed in realtà si riducono ad una singola istruzione : SELECT. Tale istruzione restituisce i dati contenuti nel database in base ai criteri di ricerca specificati. MySQL esegue tale istruzione più velocemente di qualsiasi altro DBMS. SELECT campo1,campo2 FROM NomeTabella WHERE condizioni Questo è il formato base di una query (interrogazione) ad un database, specificando delle condizioni. SELECT * FROM TblClienti WHERE id>3; Questa istruzione preleva tutti i record (di ognuno preleva tutti i campi) dalla tabella TblCLienti che hanno un numero di id superiore a 3. SELECT Nome,Cognome FROM TblClienti WHERE id=3; Seleziona il record che ha id pari a 3. Di tale record, preleva soltanto i campi Nome e Cognome. Ecco i dati restituiti da MySQL, così come appaiono a video :

Gestione Utenti in MySQL SELECT Nome,Cognome FROM TblClienti WHERE id=3; +-------+---------+ Nome Cognome +-------+---------+ Fabio Verdi +-------+---------+ 1 row in set (0.16 sec) E possibile specificare numerosi criteri di selezione nella clausola WHERE. Per una completa trattazione si rimanda ad un manuale specifico di MySQL. In ogni caso, durante le successive lezioni saanno mostrate numerose query effettuate tramite PHP, in cui è possibile apprendere più in dettaglio tutte le potenzialità di questo DBMS e di SQL. La clausola WHERE è utile anche per modificare i record che corrispondono ad una determinate chiave di ricerca, tramite l istruzione UPDATE : UPDATE NomeTabella SET colonna1=valore1,colonna2=valore2 WHERE condizioni; Ad esempio: UPDATE TblClienti SET email= not valid WHERE id<=2; I record con id minore o uguale a 2 non avranno più un indirizzo email valido (è scaduto il contratto ad esempio). update TblClienti SET email="non valido" WHERE id<=2; Query OK, 2 rows affected (0.11 sec) Rows riconosciute: 2 Cambiate: 2 Warnings: 0 Nota utile Personalmente, per memorizzare i valori di TIMESTAMP in una tabella MySQL non utilizzo il campo apposito di MySQL o le funzioni supportate per questo tipo di dato, ma più semplicemente predispongo un campo di tipo TIN(11) che conterrà il TIMESTAMP generato da PHP, per evitare problemi per le versioni Win32 di MySQL e per una gestione omogenea delle date. Gestione Utenti in MySQL Per la gestione degli utenti e dei permessi, MySQL utilizza delle tabelle (che non devono assolutamente essere modificate!) contenute nel database mysql e che sono user, db, columns_priv e tables_priv. Supponiamo di essere un fornitore di hosting e di dover aggiungere un database ed un utente, che potrà collegarsi al suo db tramite PHPMyAdmin. Prima di tutto, aggiungiamo un nuovo db nella tabella db del database mysql (per selezionare il database mysql scrivere prima \u mysql) : INSERT INTO db (Host,db) VALUES( localhost, nuovodb );

Notare che bisogna esplicitare i campi che vogliamo riempire (in questo caso soltanto Host e db) se non vogliamo riempire tutti i campi. Infatti, gli altri campi, e le altre tabelle che si occupano della gestione degli utenti, verranno riempiti tramite il comando GRANT. Per aggiungere un utente e specificare i permessi che si vogliono accordare ad esso, basta eseguire la seguente istruzione dalla shell mysql : GRANT ALL ON nuovodb.* TO nuovoutente@localhost IDENTIFIED by pippo Con tale istruzione, si dice a MySQL di aggiungere un utente chiamato nuovoutente, identificato dalla password pippo, e di accordargli tutti i privilegi (ALL) al suo database creato precedentemente e cioè nuovodb. Si comunica anche che l utente può collegarsi al database soltanto da localhost. Questo non significa che un utente può collegarsi al server MySQL soltanto se sta fisicamente davanti al monitor del Server situato in Svizzera, con il fiato sul collo del sysadmin. In pratica, l accesso a MySQL avviene tramite le applicazioni in esecuzione sul server, come appunto l interprete PHP. Non è possibile collegarsi direttamente al server MySQL ma bisogna passare per un applicazione che gira sulla stessa macchina su cui gira MySQL. Questo è il massimo della sicurezza. Se non si desidera assegnare tutti i privilegi all utente, invece di ALL si può scrivere SELECT o DELETE oppure INSERT e così via (si rimanda al manuale ufficiale di mysql). Inoltre, se i privilegi vogliono essere assegnati per una particolare tabella, bisogna scrivere nomedb.nometabella anziché nomedb.*. Ancora, se si vuole che l utente possa connettersi al suo db da qualsiasi host o da un host particolare, basta scrivere nuovoutente@* (tutti gli host) o nuovoutente@sub.dominio.it.?2002 By Domenico Nappo, Domenico Surace e Manuali.net L autore declina ogni responsabilità per eventuali (quanto improbabili) danni recati al sistema per l uso degli script di esempio riportati in questa guida.