Introduzione a MySQL



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

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

Corso sul linguaggio SQL

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

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

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

DDL, VINCOLI D INTEGRITÁ, AGGIORNAMENTI E VISTE. SQL è più di un semplice linguaggio di interrogazione

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

Laboratorio di Basi di Dati e Web

SQL SQL. Definizione dei dati. Domini. Esistono 6 domini elementari:

Lezione 8. Metadati, Viste e Trigger

MySQL Database Management System

Basi di Da( MySQL & MySQL Workbench. Anna Monreale

DBMS (Data Base Management System)

Abilità Informatiche A.A. 2010/2011 Lezione 9: Query Maschere Report. Facoltà di Lingue e Letterature Straniere

Laboratorio di Basi di Dati

2104 volume III Programmazione

Corso sul linguaggio SQL

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

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

GERARCHIE RICORSIVE - SQL SERVER 2008

Azioni. Select e join non consentono di modificare il contenuto del DB. Inserzione di nuovi dati. Azioni desiderate. Aggiornamento di dati

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

Volumi di riferimento

Basi di Dati: Corso di laboratorio

Gestione delle tabelle

Linguaggio SQL: fondamenti D B M G. Gestione delle tabelle

Esercitazione di riepilogo sulle Query MySQL Giugno 2011 Classe VB Informatica

SQL. Laboratorio di Progettazione di Basi di Dati (CdS in Informatica e TPS)

SQL (STRUCTURED QUERY LANGUAGE)

Esercitazione 1. Sistemi Informativi T. Versione elettronica: L01.2.DDLDMLbase.pdf

Definizione di domini

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

SQL. Alcune note sulla definizione dei dati

Esercitazione: Il DBMS MySQL

Esercitazione sull Algebra Relazionale. Thursday, January 12, 12

L interfaccia a riga di comando di MySql

Sistemi per la gestione di database: MySQL ( )

SQL e ACCESS. Modello relazionale PROBLEMA ENTITA STUDENTE

MySQL Command Line Client: operazioni fondamentali

DBMS. Esempi di database. DataBase. Alcuni esempi di DBMS DBMS. (DataBase Management System)

Lezione del modulo 7 SQL e database del giorno 04/05/2006 tot. ore 3. Lo Standard SQL

Uso delle basi di dati DBMS. Cos è un database. DataBase. Esempi di database

User Tools: DataBase Manager

IL LINGUAGGIO SQL IDENTIFICATORI E TIPI DI DATI COMANDI E ISTRUZIONI

SQL - Tipi di dato Il linguaggio SQL

Il linguaggio SQL. Il linguaggio SQL. Il linguaggio SQL. SQL - Tipi di dato. SQL - Tipi di dato numerici. SQL - Tipi di dato numerici

ECDL - Database. European Computer Driving Licence - Modulo 5 - Database LEZIONE 2

Basi di Dati 1 Prof. L. Tanca e F. A. Schreiber APPELLO DEL 9 SETTEMBRE 2015 Tempo: 2h30m

DUE GRUPPI DI COMANDI

INFORMATICA PER L IMPRESA (Docente Prof. Alfredo Garro)

Esercizio data base "Biblioteca"

Riferimenti semi-bibliografici:

SQL: concetti base SQL. Definizione dei dati in SQL. SQL: "storia"

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

SQL -DDL. FONDISTA(Nome, Nazione, Età) GAREGGIA(NomeFondista, NomeGara, Piazzamento) GARA(Nome, Luogo, Nazione, Lunghezza)

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

Corso di Informatica (Basi di Dati)

Dispensa di database Access

INDICI. Prevediamo di effettuare spesso interrogazioni simili alle seguenti:

Giovanna Rosone 04/03/ /03/2010 SQL, Istruzioni per la modifica dello schema

Basi di Dati Corso di Laura in Informatica Umanistica

Indice generale. Capitolo 3 Introduzione a PHP...43 Sintassi e istruzioni di base Variabili, operatori e commenti Array...

Il linguaggio SQL: DDL di base

Vincoli di Integrità Approccio dichiarativo alla loro implementazione

Istruzioni DML di SQL

Linguaggio SQL. Structured Query Language

PROGRAMMA DI CLASSE 5AI

MySQL Database Management System

Informatica per le discipline umanistiche 2 lezione 10

Riccardo Dutto, Paolo Garza Politecnico di Torino. Riccardo Dutto, Paolo Garza Politecnico di Torino

SQL Sintassi Dei Comandi

Metodi per la Gestione dei Dati (lezioni di laboratorio)

Istruzioni SQL 1. Query di selezione 2 Istruzione SELECT 2 Istruzione SELECT DISTINCT 2 ORDER BY 3 WHERE 3 La condizione LIKE 4 BETWEEN AND 5

Corso di Informatica Generale 1 IN1. Linguaggio SQL

Corso di Laboratorio di Basi di Dati

SQL (STRUCTURED QUERY LANGUAGE)

OR true null false true true true true null true null null false true null false NOT

ESEMPI DI QUERY SQL. Esempi di Query SQL Michele Batocchi AS 2012/2013 Pagina 1 di 7

Esame di Stato Istituto Tecnico Industriale Soluzione della Seconda Prova Indirizzo: INFORMATICA Tema: INFORMATICA Anno Scolastico:

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

UTENTE (Codice, Nome, Cognome, Indirizzo, Telefono) PRESTITO (Collocazione, CodUtente, DataPrestito, DataRest)

1. Schema concettuale della base di dati Lo schema concettuale (o statico) è uno dei due schemi del progetto concettuale di un sistema informativo.

Basi di dati SQL. Standardizzazione di SQL. Linguaggi di Interrogazione: SQL. Prof.Angela Bonifati

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

SQL. Linguaggio di interrogazione per basi di dati relazionali. Relazione = tabella con attributi (a 1, a 2,, a n ): Funzionalità principali di SQL:

Corso di Basi di Dati A.A. 2013/2014

Database 1 biblioteca universitaria. Testo del quesito

DATABASE.

PHP e Structured Query Language

Operazioni sui database

Basi di dati Il linguaggio SQL

Basi di dati Il linguaggio SQL

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

Esercitazione PAM. (Php Apache MySQL)

CONCETTO DI ANNIDAMENTO

Introduzione al linguaggio SQL

Basi di Dati e Sistemi Informativi. Structured Query Language

Basi di Dati. S Q L Lezione 5

********************* MODIFICA STRUTTURA DI UNA TABELLA (inserimento di un nuovo campo) ALTER TABLE Personale ADD Nascita date;

Transcript:

Introduzione a MySQL Cinzia Cappiello Alessandro Raffio Politecnico di Milano Prima di iniziare qualche dettaglio su MySQL MySQL è un sistema di gestione di basi di dati relazionali (RDBMS) composto da un insieme di relazioni MySQL è stabile e veloce MySQL comprende tutte le caratteristiche considerate più importanti dalla comunità delle basi di dati, quali: Transazioni Vincoli a livello di record Chiavi esterne Interrogazioni annidate Ricerca testuale MySQL esiste sia in forma gratuita che in forma commerciale. Ultima versione è MySQL 5.0 scaricabile all indirizzo: www.mysql.org/ 2 1

Preparazione Accesso all area condivisa Start Programs MySQL Avvio Server MySQL Start Programs MySQL Start MySQL Server Avvio Client MySQL Start Programs MySQL MySQL Client 3 Schema database d esempiod DATILIBRO (ISBN, Titolo, AnnoPubblicazione, CasaEditrice, PrimoAutore, Genere, Consigliato) Libro (Collocazione, ISBN, DataArchiviazione) Prestito (Collocazione, CodiceUtente, DataPrestito, DataRestituzione) Utente (Codice, Cognome, Nome, Indirizzo, Telefono) Commento (CodiceUtente, ISBN, commento, giudizio) 4 2

Creazione di basi di dati e tabelle Creazione del database Per creare un database si usano le istruzioni: mysql> create database nome database; Nel nostro esempio digitare il comando: mysql> create database biblioteca; Si può controllare che il comando ha funzionato digitando: mysql> show databases; nella lista delle basi di dati presenti nel sistema dovreste vedere anche la base di dati biblioteca 6 3

Selezione di una base di dati Prima di creare le tabelle, o fare qualsiasi operazione sul database è opportuno segnalare a MySQL che si intende utilizzare la base di dati creata. E necessario digitare: mysql> use nome database; Nel nostro esempio digitare il comando: mysql> use biblioteca; In questo modo la base di dati risulta selezionata e tutto quello che si fa da questo momento andrà a cambiare la base di dati selezionata 7 Creazione di una tabella Sintassi completa comando: mysql> create [temporary] table [if not exist] nome tabella [(definizioni_create)] [opzioni tabella] [comandi di selezione] Definizioni create - sintassi: nome_campo TIPO [NOT NULL NULL][DEFAULT valore_standard][auto_increment][primary key][definizione di chiave esterna (references)], Opzioni tabella - sintassi: type = tipo tabella; Per verificare la creazione di una tabella si può usare l istruzione: mysql> show tables; 8 4

Creazione di tabelle- tipi di tabelle MyISAM: tipo di tabelle standard, supportano la compressione ma non gestiscono le transazioni InnoDB: sono transaction-safe (proprietà ACIDe), supportano le transazioni e i lock di riga BDB (Berkeley DB): motore di memorizzazione che supporta transazioni e lock a livello di pagina HEAP: tabelle che vengono salvate interamente in memoria locale e mai su disco, sono molto veloci ma hanno dimensione limitata e non possono essere recuperate in caso di guasto del sistema 9 Creazione di tabelle Tipi di colonne e di dati MySQL Tipi numerici: vengono usati per salvare numeri NUMERIC o DECIMAL (DEC)= tipi esatti a virgola mobile, vengono di solito usati per le valute. Hanno lo stesso intervallo di valori dei numeri a virgola mobile INTEGER (INT) = indica l intero standard a 4 byte con un intervallo di 2 32 valori possibili FLOAT = indica un numero reale a virgola mobile a precisione semplice. Rappresenta un numero tra 1.18 x10-38 e 3.40 x10 38 DOUBLE = indica un numero reale a virgola mobile e precisione doppia. Rappresenta un numero tra 2.23 x10-308 e 1.80 x10 308 Tipi string o text: supporta diversi tipi di stringa o testo CHAR=memorizza stringhe di lunghezza fissa. Il tipo char è sempre seguito dalla specifica della lungezza della stringa. Es. char(20) VARCHAR=memorizza stringhe a lunghezza variabile TEXT o BLOB= servono per memorizzare testi più lunghi. BLOB indica un oggetto binario di grandi dimensioni. Entrambi memorizzano fino a 65535 caratteri. BLOB dovrebbe memorizzare dati binari più che testi veri e propri. ENUM=tipo che permette di enumerare una lista di valori possibili. Es: Genere enum ( m, f ) SET= simile a ENUM eccetto nel fatto che le righe possono contenere un insieme di valori della lista specificata Tipi date e time: DATE= formato AAAA-MM-GG TIME=formato HH:MM:SS DATETIME=formato AAAA-MM-GG HH:MM:SS TIMESTAMP=se non si inserisce nulla in questa colonna viene automaticamente memorizzato il momento in cui la riga viene modificata o inserita nel database YEAR= esiste in due varianti YEAR(2) o YEAR (4) 10 5

Esempio tabella DATILIBRO Nel nostro esempio, creare la tabella DATILIBRO (ISBN, Titolo, AnnoPubblicazione, CasaEditrice, PrimoAutore, Genere, Consigliato) mysql> create table DATILIBRO( ISBN varchar (20) NOT NULL, Titolo varchar (40), AnnoPubblicazione Year(2), CasaEditrice varchar (30), PrimoAutore varchar(30), Genere varchar (30), Consigliato enum ( s, n ), PRIMARY KEY (ISBN) ) type = InnoDB; 11 Esempio tabelle LIBRO e PRESTITO Libro (Collocazione, ISBN, DataArchiviazione) mysql> create table LIBRO( Collocazione varchar (20) NOT NULL, ISBN varchar (20) not null, DataArchiviazione Date, PRIMARY KEY (Collocazione) ) type = InnoDB; Utente (Codice, Cognome, Nome, Indirizzo, Telefono) mysql> create table Utente( Codice int NOT NULL auto_increment primary key, Cognome varchar (30), Nome varchar (30), Indirizzo varchar (40), Telefono varchar (15) ) type = InnoDB; 12 6

Esempio Tabelle Utente e Commento Prestito (Collocazione, CodiceUtente, DataPrestito, DataRestituzione) mysql> create table PRESTITO( Collocazione varchar (20) NOT NULL, Codiceutente int NOT NULL references utente(codice), DataPrestito Date NOT NULL, DataRestituzione Date, PRIMARY KEY (Collocazione, CodiceUtente, DataPrestito) ) type = InnoDB; Commento (CodiceUtente, ISBN, commento, giudizio) mysql> create table Commento( CodiceUtente int NOT NULL references utente(codice), ISBN varchar (20) not null, commento text, giudizio enum ( p, n ), PRIMARY KEY (CodiceUtente, isbn) ) type = InnoDB; 13 Visualizzazione schema di una tabella Il comando per visualizzare lo schema di una tabella: mysql> describe nome_tabella; es. describe datilibro; Il comando per caricare una base di dati da file di script: mysql> source nome_file; 14 7

Eliminazione di basi di dati Eliminazione intera basi di dati mysql> drop database nome_database; Eliminazione tabella- sintassi generale: mysql> drop [temporary] table [if exists] nome_tabella[, nome_tabella2, ]; 15 Modificare struttura della tabella Rinominare la tabella: mysql> ALTER TABLE nomevecchio_tabella RENAME nome_nuovo tabella; Aggiungere un nuovo campo alla tabella mysql> ALTER TABLE nome_tabella ADD nome TIPO; Eliminare un campo della tabella mysql> ALTER TABLE nome_tabella DROP nome; Modificare un attributo della tabella mysql> ALTER TABLE nome_tabella MODIFY nome_campovecchio nome_nuovocampo TIPO; Aggiungere una chiave mysql> ALTER TABLE nome_tabella ADD PRIMARY KEY (campo); 16 8

Inserimento, cancellazione e modifica dei dati Inserimento dati Per inserire righe in una tabella si usa il comando INSERT Le tabelle vengono popolate inserendo uno alla volta i record (tuple) che le compongono con le seguenti istruzioni: mysql> INSERT INTO nome_tabella VALUES ( contenuto primo campo, contenuto secondo campo, ); I valori di tipo stringa e di tipo data vanno inseriti tra apici, i valori numerici non vanno inclusi tra apici 18 9

Esempio di inserimento mysql> INSERT INTO datilibro VALUES ( 88-386-6030-1, basi di dati, 2003, Mc-Graw Hill, Atzeni, Informatica, n ), ( 88 386 0762-1, elementi di fisica, 1998, Pearson, Villa, Fisica, s ); mysql> INSERT INTO Libro VALUES ( INF3, 88-386-6030-1, 2003/11/10 ), ( FIS1, 88 386 0762-1, 1999/04/01 ); 19 Inserimento dati Per verificare che i dati siano stati inseriti usare l operazione di SELECT mysql> SELECT * FROM nometabella; Risoluzione problemi di conflitti con chiave primaria si utilizza il costrutto Replace: funziona come INSERT ma qualora si verificasse un conflitto su una chiave, la nuova riga andrebbe a sostituire quella vecchia mysql> REPLACE INTO nome_tabella VALUES ( contenuto primo campo, contenuto secondo campo, ); 20 10

Cancellazione dati Eliminazione di uno o più record da una tabella. Comando per cancellare tutte le righe di una tabella: mysql> DELETE FROM nome_tabella; Oppure mysql> TRUNCATE TABLE nome_tabella; Si possono specificare quali righe eliminare con l ausilio di una condizione WHERE. esempio mysql> DELETE FROM nome_tabella WHERE (casaeditrice= Mc-Graw Hill ); 21 Modifica dei dati Per modificare dati all interno della base di dati si può utilizzare il comando UPDATE con la seguente sintassi: mysql> UPDATE nome_tabella SET nome_col1=espressione1 [, nome_col2=espressione2, ] [WHERE condizione]; Esempio: mysql> UPDATE PRESTITO SET dataresa= 2005/11/29 WHERE collocazione= INF1 AND codiceutente=15 and dataprestito= 2005/10/15 ; 22 11

Interrogazioni in MySQL Interrogazioni semplici Interrogazioni semplici Selezionare tutti dati relativi ai clienti: mysql> SELECT * from utente; Selezionare solo alcune colonne, ad esempio titolo e autore dei libri presenti in biblioteca: mysql> SELECT titolo, autore from datilibro; Selezionare alcune righe usando la condizione WHERE. Ad esempio selezionare i titoli dei libri della Mc-Graw Hill: mysql> SELECT titolo from datilibro Where casaeditrice = mc-graw Hill ; 24 12

Interrogazioni semplici Utilizzo del costrutto COUNT. Esempio: visualizzare quanti prestiti ci sono stati nel mese di ottobre 2005 mysql> SELECT count(*) from prestito Where dataprestito >= 2005/10/01 and dataprestito <= 2005/10/31 ; Utilizzo del costrutto GROUP BY. Esempio: visualizzare quanti prestiti per libro ci sono stati mysql> SELECT count(*) as numero prestito, ISBN from prestito Group by ISBN; 25 Interrogazioni avanzate Utilizzo di join. Esempio: trovare i titoli dei libri di informatica presi a prestito nel giugno 2005 mysql> SELECT titolo from prestito join libro join datilibro Where prestito.collocazione = libro.collocazione and libro.isbn = datilibro.isbn and dataprestito >= 2005/06/01/ and dataprestito <= 2005/06/30 ; Utilizzo di query annidate. Esempio: Trovare i codici e i nomi degli utenti che non hanno mai preso in prestito libri di Informatica della Mc- Graw Hill mysql>select codice, nome, cognome from utente Where codice not in (SELECT codice utente join prestito join libro join datilibro Where utente.codice=prestito.codiceutente and prestito.collocazione = libro.collocazione and libro.isbn = datilibro.isbn and genere= informatica and casaeditrice= Mc-Graw Hill ; 26 13