ALTRO ESEMPIO ANCORA Progettare il comando di creazione di una tabella di pubblicazioni scientifiche. Come chiave usare un numero intero positivo < 4 miliardi (PubMedID). Memorizzare lista degli autori, titolo, abstract, citazione bibliografica (giornale, numero, pagine) e un giudizio personale (voto da 1 a 10). create table pubblicazioni( pubmedid int unsigned primary key auto_increment, autori text, titolo varchar(255), abstract text, citazione varchar(100), giudizio tinyint unsigned ) BIOINFO3 - Lezione 4 1 COME INTERAGIRE CON IL DB E’ possibile interagire (“fornire comandi SQL”) con il server del DBMS (nel nostro caso useremo il server MySQL) in due modi diversi: 1-Da riga di comando Da una finestra a carattere (eterm, xterm…) si attiva un programma client che si connette con il server e, attraverso un interprete di righe di comando, accetta comandi SQL e restituisce i risultati prodotti Comando UNIX di esecuzione del client Nome del computer con il server MySQL Nome del database Prompt ove inserire i comandi BIOINFO3 - Lezione 4 2 Connessione mediante login e password 1) mysql -h nome_server -u utente -ppassword NB: notate che la password va scritta senza spazio dopo l`opzione -p 2) mysql -h nome_server -u utente -p A questo punto verra` richiesto di inserire la password, la quale scritta senza essere visibile. Per uscire dal prompt di MySQL, basta digitare exit BIOINFO3 - Lezione 4 3 COME INTERAGIRE CON IL DB La seconda modalità attraverso cui è possibile “parlare” con un server SQL consiste nell’inserire i comandi direttamente in un programma scritto in un linguaggio “ospite” 2-Embedding di SQL in un linguaggio di programmazione ospite Tipicamente si richiede l’esecuzione di “librerie” (programmi dedicati di servizio) del linguaggio di programmazione ospite (esistono librerie di MySQL per JAVA, C, PERL ecc…). Le librerie permettono di collegarsi con il server e di fornirgli dei comandi, ottenendo i risultati Porzione di un programma (scritto nel linguaggio PERL con chiamate alla “libreria” del PERL per MySQL BIOINFO3 - Lezione 4 4 LA CREAZIONE DEL DB E DELLE TABELLE Esistono dei comandi SQL che permettono di creare (CREATE DATABASE) o di cancellare (DROP DATABASE) un database. create database nome-database; drop nome-database; Una volta pronto il DB potete collegarvi attraverso il client ed inserire direttamente il comando di CREATE da riga di comando Comando UNIX di esecuzione del client Comando SQL di creazione della tabella BIOINFO3 - Lezione 4 ; o \g alla fine del comando per eseguirlo 5 UN MODO PIU’ SEMPLICE Esiste un modo più semplice ed utile per creare tabelle (anche più di una contemporaneamente) soprattutto in fase di “collaudo” del database. In ogni caso si può star tranquilli perché esistono comunque dei comandi che permettono di alterare successivamente la struttura del database (ALTER TABLE) •Scrivere con un editor i comandi di create per tutte le tabelle •Salvare il file con un certo nome •Attivare il client mysql dicendogli di leggere direttamente dal file salvato i comandi SQL > mysql [–h nome-server] nome-db < nome-file Le parentesi quadre indicano un parametro opzionale BIOINFO3 - Lezione 4 6 ELIMINAZIONE TABELLA Nel caso si decidesse di eliminare una tabella, ad esempio per ricrearne una nuova versione modificata si usa il comando SQL DROP (N.B. siamo all’interno del client MySQL e non in unix!) mysql> drop table nome-tabella ; N.B. ricordarsi ; o \g a fine riga Se non si specifica il nome di un server ci si connette al server MySQL attivo sullo stesso computer in cui si esegue il client BIOINFO3 - Lezione 4 7 DUMP DEL DATABASE Può essere utile salvare in un file di testo un database, ad esempio per ricrearne una copia modificata o per motivi di sicurezza. In questo caso si usa il comando UNIX MYSQLDUMP Creazione tabelle da file (test.mysql) >mysqldump nome-db [nome-tabella] Commenti Il dump crea un output temporaneo a video. Per salvarlo su un file bisogna redirigere l’output con > nome-file mysqldump test > test.mysql Il file contiene i comandi SQL necessari a ricreare il database e quindi potrà essere passato successivamente al client mysql se si dovesse voler ricreare il db BIOINFO3 - Lezione 4 Esegui! 8 ELENCO TABELLE Un comando UNIX molto utile è MYSQLSHOW, che elenca tutti i database di un server, tutte le tabelle di un database, tutti i campi di una tabella mysqlshow [–h nome-server ] [nome-db [nome-tabella]] Tutte le tabelle di un DB Tutti i campi di una tabella Tutti i DB di un server BIOINFO3 - Lezione 4 9 RIEPILOGO •Come interagire con il server MySQL •Creazione del DB e delle tabelle •Eliminazione tabelle •Dump del database •Elenco delle tabelle BIOINFO3 - Lezione 4 10