• Non ci sono risultati.

Gli strumenti che vedremo

N/A
N/A
Protected

Academic year: 2021

Condividi "Gli strumenti che vedremo"

Copied!
34
0
0

Testo completo

(1)

MySQL

Basi di Dati e Sistemi Informativi Prof. Marco Di Felice

Dott.sa Sara Zuppiroli

A.A. 2012-2013

(2)

Gli strumenti che vedremo

(3)

Come imposteremo le lezioni

Per ogni strumento:

Breve introduzione

Installazione sul proprio pc del tool Creazione ed accesso a un DB

Comandi SQL da terminale e da interfaccia grafica Esempio di implementazione di un piccolo DB

Funzionalità avanzate

Confronto tra i due strumenti

(4)

Introduzione a MySql

MySQL è un Database system relazionale open source Il codice venne sviluppato dal 1979 da TcX ataconsult, e dal 1996 abbiamo una versione che supporta SQL.

Ad oggi MySQL supporta le piattaforme Linux, UNIX, OS X e Windows.

Supporta la gestione di tabelle, foreign keys, joins, views, triggers, and stored procedures.

Include i seguenti tipi di dato: INTEGER, NUMERIC, BOOLEAN, CHAR, VARCHAR, DATE, INTERVAL, e TIMESTAMP, inoltre salva immagini, suoni e video.

Ha interfacce per i seguenti linguaggi PHP, .Net, Perl, ...

(5)

Licenza

La licenza di MySQL AB è di tipo GPL (General Public License) È una licenza che impone delle condizioni a chi

ridistribuisce il software, se queste non sono rispettate la licenza risulta essere nulla.

Nel caso di MySQL AB le condizioni sono:

I Se si sta producendo Software con licenza GPL è possibile usare liberamente MySQL con licenza GPL

I Se si sta producendo Software con licenza OEM, ISV e/o VAR allora MySQL offre una licenza commerciale OEM (Original Equipment Manufacturer)

http://www.mysql.com/about/legal/licensing/oem/

(6)

Convenzioni

Useremo le stesse convenzioni applicate dal manuale MySQL, quindi:

parentesi quadre ([ ]) per indicare codice opzionale pipe (|) per indicare opzioni alternative racchiuse fra parentesi

graffe ( { }) quando è obbligatorio indicarne almeno una puntini · · · per indicare codice omesso o codice ripetibile

(7)

Installazione

Ci colleghiamo alla pagina

http://www.mysql.com/downloads/

Selezionare MySQL Community Server Eseguire il download del programma

(8)

Connessione da shell

Aprire una shell

Accedere alla Directory dove è stato installato MySql, ad esempio in usr local bin mysql

Connettersi come root con questo comando:

./mysql − u root al server

(9)

I primi passi come Admin

Alcuni comandi utili per amministrare il server di MySQL Per invocare la guida ai primi comandi: help; o ?;

Cambiare la password di un utente: SET PASSWORD FOR

<nomeutente>@localhost =

PASSWORD(’nuovaPassword’);

Creare un nuovo utente CREATE USER nomeutente@localhost;

Creare un nuovo utente con Pasword CREATE USER <

nomeutente > @localhost IDENTIFIED BY 0 < password0; Eliminare un utente DROP USER

<nomeutente>@localhost;

(10)

I primi passi come Admin

Per accedere a un Database salvato: use nomedb;

I Per visualizzare le tabelle appartenenti al database in uso:

show tables;

I Per visualizzare la struttura di una tabella:

DESCRIBE nometabella;

Impostare una Password per un

utenteSET PASSWORD FOR nomeutente@localhost = PASSWORD 0password0;

Mostrare i database: show databases;

Per visualizzare la versione di MySQL in uso: select version();

(11)

Esercizi

Impostare la password di root

Creare un utente con user mariorossi e password prova Accedere a mysql col nuovo utente

(12)

I privilegi

MySQL fornisce quattro livelli di privilegi: Global, Database, Table, Column.

Per assegnare (cancellare) un privilegio ad un utente si hanno due possibilità:

I si usa il comando GRANT

(REVOKE):GRANT | REVOKE SELECT ON

nomedatabase.nometabella TO nomeutente@localhost

[IDENTIFIED BY < password > ]WITH GRANT OPTION;

I si aggiornano le tabelle mysql.user, mysql.db,

mysql.tables_priv , mysql.column_priv dove sono gestiti utenti e privilegi attraverso i comandi SQL di INSERT, UPDATE, DELETE

(13)

Gestione dei database

La creazione/cancellazione di un database:

CREATE | DROP DATABASE [IF NOT EXISTS]

([IF EXIST ]) nome_db

IF NOT EXISTS si evita la segnalazione di errore nel caso esista il database con lo stesso nome

Bisogna avere il privilegio CREATE/DROP DATABASE

In MySQL un database è una sotto directory nella directory dei dati. Quindi per creare un nuovo database basta

inserire una directory nella cartella dati.

(14)

Creare una tabella 1

CREATE [TEMPORARY ] TABLE [IF NOT EXISTS]

nome_tabella | nome_db.nome_tabella [(definizione, · · · )] [select];

Se si indica nome_tabella allora creo una tabella nel Database in Uso, altrimenti indico il nome del db.

I parametri opzionali

I TEMPORARY la tabella creata sia valida solo per la presente connessione, se esiste una tabella omonima rimane nascosta

I IF NOT EXISTS per evitare il messaggio di errore

I SELECT i dati estratti dalla select vengono inseriti nella tabella creata.

(15)

Creare una tabella 2

con [definizione] si definiscono le colonne della tabella:

I nome_colonna tipo [NOT NULL | NULL] [DEFAULT valore]

[AUTO_INCREMENT ] [UNIQUE [KEY ] | [PRIMARY ] KEY ] [COMMENT 0commento0] [reference_definition]

I I parametri opzionali:

F [NOTNULL | NULL] indica se il campo in colonna non deve essere NULL, oppure può essere NULL

F DEFAULT indica il valore di default, deve essere una costante oppure CURRENT_TIMESTAMP

F SELECT i dati estratti dalla select vengono inseriti nella tabella creata.

F AUTO_INCREMENT gestisce il valore di tipo intero come un contatore automatico

F UNIQUE indice che non ha valori duplicati

(16)

Creare una tabella 3

per aggiungere un vincolo a una tabella esterna si usa il comando:

FOREIGN KEY (nome_colonna_int) REFERENCES nome_tabella_ext [(colonna_ext)]

[ON DELETE | ON UPDATE

RESTRICT | CASCADE | SET NULL | NO ACTION];

Il comando

CREATE TABLE nuova_tabella LIKE tabella_originale;

crea una tabella vuota con la stessa struttura della tabella originale

(17)

Modificare una tabella

Per modificare una tabella già creata si usa il comando:

ALTER [IGNORE ] TABLE nome_tabella

alter _specification [, alter _specification], · · · i possibili valori di alter_specification sono:

ADD [COLUMN] definizione_colonna [FIRST | AFTER nome_colonna]

| ADD [COLUMN] (definizione_colonna, ...)

| ADD [CONSTRAINT [simbolo]]

PRIMARYKEY [tipo_indice](colonna_indice, ...)

|ADD[CONSTRAINT [simbolo]]

UNIQUE [INDEX ][tipo_indice][tipo_indice](colonna_indice, ...) alter table IMPIEGO add constraint fk_impiego_persona

(18)

Insert in una tabella

Per inserire valori in una tabella si usa:

INSERT INTO nome_tabella (colonna_1, · · · , colonna_n) VALUES (colonna_1, · · · , colonna_n);

Se ci sono campi definiti come contatori, o NULL, ecc..., possono non essere indicati nell’insert

INSERT multiplo:

INSERT INTOnome_tabella (colonna_1, · · · , colonna_n) [VALUES (colonna_1, · · · , colonna_n), · · · ,

VALUES (colonna_1, · · · , colonna_n)];

(19)

Esempio di Insert singolo e multiplo

INSERT INTO u t e n t i ( UserName , Password , T i p o U t e n t e ) VALUES( ’ mario ’ , ’ prova ’ , ’ x ’ ) ;

INSERT INTO u t e n t i ( UserName , Password , T i p o U t e n t e ) VALUES( ’ b i a n c h i , ’ prova ’ , ’ x ’ ) ,

VALUES( ’ r o s s i ’ , ’ prova ’ , ’ x ’ ) , VALUES( ’ v e r d i ’ , ’ prova ’ , ’ x ’ ) ;

(20)

Modifica dei valori in tabella

Per modificare un campo si usa il comando UPDATE nomeTabella

SET [nomeCampo = 0nuovoValore0, ] WHERE id = n;

Per modificare tutte le righe di una tabella non si mette la clausola WHERE

Per modificare un campo numerico si possono usare le operazioni per salvare il successore

UPDATE nomeTabella SET nomeCampo = nomeCampo + 1;

(21)

Cancellazione di un record

il comando per cancellare un campo:

DELETE nomeCampo FROM nomeTabella WHERE nomeCampo = 0valore0 LIMIT n;

LIMIT n: indica il numero n massimo di istanze da cancellare

Per cancellare tutti i campi di una tabella: DELETE * FROM nome_tabella;

Per cancellare tutti i campi di una tabella e far ripartire i

campi contatori da 1 si usa il comando: TRUNCATE TABLE nome_tabella;

(22)

Creazione di una vista

Per creare o una vista si usa il comando:

CREATE [| REPLACE ]

VIEW nome [(lista_colonne) AS istruzione_select [WITH [CASCADED | LOCAL]]

(23)

Le clausole della vista

REPLACE consente di sostituire una vista con lo stesso nome eventualmente già esistente.

La lista delle colonne, opzionale, sono i nomi delle colonne dalle quali è composta la vista. Si può omettere tale lista e adottare i nomi delle colonne restituiti dalla SELECT.

SELECT è l’istruzione che definisce i dati contenuti nella vista. I limiti della select sono:

I non si possono utilizzare variabili,

I non si possono contenere sub query nella FROM

I non si possono fare riferimenti a tabelle temporanee

non esistono viste temporanee

(24)

Le caratteristiche della vista

viste aggiornabili: sono le viste in cui è possibile modificare i dati della tabella sottostante passando dalla vista. Una

vista, per essere aggiornabile, deve esistere una relazione uno a uno fra le righe della vista e quelle della tabella

sottostante.

viste non aggiornabili: non è possibile effettuare modifiche alle tabelle direttamente dalla vista

(25)

Esercizio

Uno studio medico vuole di realizzare un archivio che permetta di gestire i dati utilizzati dai medici che ne fanno parte. I medici ad oggi sono cinque e ognuno di loro deve avere accesso al DB dal proprio computer con una propria password. Il medico deve poter inserire, gestire e cancellare i propri pazienti. Ogni

paziente avrà una scheda anagrafica che avrà almeno i

seguenti dati: nome, cognome, data di nascita, luogo di nascita, codice fiscale e numero di identificazione della tessera sanitaria.

Il paziente avrà una scheda principale in cui verranno indicate le sue patologie croniche, la sua percentuale di invalidità,

eventuale, e i medicinali prescritti permanentemente, come l’insulina ad un diabetico per esempio.

(26)

Esercizio

I medici sono i soli utenti che hanno i permessi di modificare,

inserire o cancellare una ricetta. Le farmacie registrate possono accedere ai dati relative alle ricette ancora da gestire e quando arriva il paziente viene consegnato loro il medicinale.

(27)

Esercizio

Disegnare il diagramma E/R

Inseriamo le tabelle relativi ad anagrafica, malattia, medicina

Creiamo la vista che permetta di estrarre per ogni utente e il numero totale di esami e medicinali prescritti, il totale di esami e medicinali evasi, il totale di medicinali ed esami in sospeso.

Si è reso necessario il controllo sulla tabella ricette e

singola prescrizione per verificare quali utenti accedono a queste tabelle in inserimento, modifica e cancellazione.

(28)

Esempio di Create Table

CREATE TABLE U t e n t e (

I d INTEGER AUTO_INCREMENT PRIMARY KEY, UserName VARCHAR( 2 5 ) UNIQUE,

Password VARCHAR( 2 5 ) , T i p o U t e n t e VARCHAR( 2 5 )

) ;

(29)

Esempio di Create Table

CREATE TABLE Farmacie

( I d INT PRIMARY KEY AUTO_INCREMENT, UserName VARCHAR( 2 5 ) ,

NomeFarmacia VARCHAR( 2 5 ) , FOREIGN KEY( UserName )

REFERENCES U t e n t i ( UserName ) ON DELETE CASCADE ) ;

(30)

Esempi di Select

Estrarre tutti i dottori presenti in anagrafica

Trovare le ricette che sono state prescritte da un dottore in un certo giorno per un certo paziente

Calcolare quante ricette non sono state evase da nessuna farmacia raggruppate per medico

(31)

Esercizio

Dati il modello logico, e i vincoli rappresentati nelle tabelle di seguito, scrivere il codice SQL per creare le tabelle.

(32)

Esercizio

(33)

Tool Grafici

MysqlWorkbench MyAdmin

(34)

Bibliografia

http://dev.mysql.com/doc/refman/

http://www.tecn.it/guida-mysql/

Riferimenti

Documenti correlati

Le pose preferite selezionate in questa schermata verranno poi visualizzate nella sezione Posing Room (pag. 11) e nella sezione Augmented Reality (pag.20).. Questa sezione è molto

Attraverso i tasti su e giù per selezionare l'icona &#34;immagine&#34;, premere il pulsante di conferma per confermare, quindi premere a destra sulla cartella, premere il pulsante

Il “Programma cotone pronto da indossare”, usato a carico pieno e parziale è il programma di asciugatura standard al quale si riferiscono le informazioni nell’etichetta e

Microtech non è in alcun modo responsabile per qualsiasi danno, perdita di programmi, dati o altre informazioni archiviate su qualsiasi supporto o parte del prodotto per il

• Attenzione: non usare alcol, solvent (acquaragia, acetone etc.) e prodotti per la pulizia dei metalli: in caso di contatto accidentale con la superficie di tali

Dalla pagina di gestione dei documenti il paziente può caricare documenti di diversi formati, tra cui pdf, word, immagini e video prima o dopo la sessione di televisita e

The transceiver used for the input of the HLA305 must be capable of a power output of 10-12 W to obtain the maximum output from this linear amplifier.. 16.3 Connection to DC

Cliccando sul link ricevuto nella mail o pec si viene rediretti alla pagina di accesso alla votazione elettronica SkyVote..