SlideShare uma empresa Scribd logo
1 de 12
Baixar para ler offline
Corso di Basi di Dati e Laboratorio




                           MySQL
              Alfio Ferrara - Stefano Montanelli




 A.A. 2005/2006             Basi di Dati e Laboratorio   1




Introduzione

• MySQL
   – http://www.mysql.com
   – DBMS relazionale Open Source (licenza GPL)
   – Applicazione Client – Server
   – La distribuzione consiste in un server e una
     applicazione client da riga di comando (mysql)
   – Possibilità di usare una GUI per
     l’amministrazione del server (phpMyAdmin)




 A.A. 2005/2006             Basi di Dati e Laboratorio   2




Caratteristiche principali

• MySQL:
   – Scritto in C e C++
   – Portabilità
         • Windows [9.x, Me, NT, 2K, XP], Linux, FreeBSD
           [2.x, 3.x, 4.x], Mac OS X, SunOS 4.0, Solaris 2.5…
   – APIs
         • C, C++, Eiffel, java, Perl, PHP, Python…
   – Supporto al multi-threading
         • Possibilità di usare CPU multiple se disponibili



 A.A. 2005/2006             Basi di Dati e Laboratorio   3




                                                                1
Caratteristiche principali

• MySQL:
   – Connettività
         • TCP/IP socket, UNIX socket, Named Pipes
         • ODBC driver, JDBC driver
   – Supporto alle transazioni mediante la modalità
     InnoDB
   – Scalabilità e limiti
         • Gestisce basi di dati con grandi quantitativi di dati.
              – Suporta fino a 60.000 tabelle e 5.000.000.000 di record
              – Supporta fino a 64 indici in una singola tabella



 A.A. 2005/2006             Basi di Dati e Laboratorio           4




MySQL e SQL
• Aderenza a SQL99
   – Istruzioni CREATE TABLE, ALTER TABLE
   – Operatori SELECT, WHERE, GROUP BY, ORDER
     BY
   – Funzioni COUNT(), COUNT(DISTINCT...), AVG(),
     STD(), SUM(), MAX(), MIN()
   – LEFT/RIGHT OUTER JOIN
   – Alias su tabelle e colonne
   – Istruzioni di INSERT, DELETE, UPDATE
   – Sotto-selezioni (dalla versione 4.1)
   – Viste (dalla versione 5.0)
   – Trigger e stored procedures (dalla versione 5.0)
   – UNION (dalla versione 5.0)


 A.A. 2005/2006             Basi di Dati e Laboratorio           5




MySQL e SQL
• Estensioni allo standard SQL99
   – Istruzione REPLACE
         • Sintetizza le istruzioni DELETE + INSERT
   – Supporto dei tipi di dato MEDIUMINT, SET, ENUM,
     TEXT
   – Supporto ai vincoli di attributo AUTO_INCREMENT,
     BINARY, NULL, UNSIGNED, ZEROFILL
   – Supporto a funzioni regolari e funzioni proprietarie
     nell’istruzione SELECT
         • TRIM, LAST_INSERT_ID, CONCAT, CAST, MOD
   – Supporto agli operatori || e && per sostituire gli
     operatori logici OR e AND

 A.A. 2005/2006             Basi di Dati e Laboratorio           6




                                                                          2
MySQL e SQL

• Differenze con lo standard SQL99
   – Implementazione del tipo di dati VARCHAR
   – Assenza del costrutto INTERSECT
   – Assenza del costrutto EXCEPT
   – Utilizzo del comando REVOKE
         • I privilegi su una tabella non sono automaticamente
           revocati con la sua eliminazioni ma è necessario
           utilizzare un’istruzione REVOKE esplicita
   – Implementazione dei vincoli di integrità
         • Richiede l’utilizzo di modalità InnoDB (motore
           transazionale conforme alle proprietà ACID)


 A.A. 2005/2006             Basi di Dati e Laboratorio                    7




Architettura di MySQL
• MySQL è basato su un’architettura multi-livello composta
  da un insieme di sotto-sistemi primari e di componenti
  di supporto
• I diversi componenti interagiscono per garantire
   –    Lettura di query
   –    Analisi di query
   –    Esecuzione di query
   –    Memorizzazione/restituzione dei risultati delle query
• Sistemi primari                           • Componenti di supporto
    –   Query Engine                              – Process manager
    –   Storage Manager                           – Function libraries
    –   Buffer Manager
    –   Transaction Manager
    –   Recovery Manager

 A.A. 2005/2006             Basi di Dati e Laboratorio                    8




Architettura di MySQL


       Recovery manager                    Query engine


                   Buffer manager                    Transaction manager


                            Storage manager

 Sotto-sistemi primari

         Process manager                             Function libraries

Componenti di supporto

 A.A. 2005/2006             Basi di Dati e Laboratorio                    9




                                                                              3
Architettura di MySQL
• Query engine. È composto da tre componenti
   – Syntax Parser
         • È responsabile della decomposizione dei comandi SQL in
           ingresso in una forma comprensibile ai moduli deputati
           all’esecuzione
         • Verifica la correttezza sintattica dei comandi SQL
         • Verifica i permessi di accesso agli oggetti richiesti
   – Query Optimizer
         • Verifica le possibili ottimizzazioni: Individua gli indici da
           utilizzare per reperire i dati richiesti nel modo più efficiente
           possibile
         • Predispone il piano di esecuzione della query da sottoporre a
           execution component
   – Execution Component
         • È responsabile dell’esecuzione del comando SQL ricevuto

 A.A. 2005/2006             Basi di Dati e Laboratorio            10




Architettura di MySQL

• Storage manager
   – Ha il compito di interfacciare il sistema
     operativo per soddisfare le richieste di
     scrittura di dati su disco in modo efficiente
• Buffer manager
   – Ha il compito di gestire le problematiche
     relative alla memoria nelle interazioni fra query
     engine e storage manager
   – Utilizza politiche di query caching efficiente
     che garantiscono ottimi tempi di risposta

 A.A. 2005/2006             Basi di Dati e Laboratorio            11




Architettura di MySQL
• Transaction manager
   – Ha il compito di gestire le questioni legate alla
     concorrenza durante l’accesso ai dati
   – Utilizza il componente Lock manager che gestisce il
     blocco dei vari oggetti per garantire l’accesso
     simultaneo a utenti multipli in modo consistente
• Recovery manager
   – Ha il compito di mantenere una copia dei dati a tutela
     di possibili perdite in caso di eventi imprevisti
   – Mantiene il log degli eventi significativi all’interno del
     DBMS


 A.A. 2005/2006             Basi di Dati e Laboratorio            12




                                                                              4
Architettura di MySQL
• Process manager
      – Gestisce le connessioni con i client mediante i moduli
        interni di network connection management
      – Sincronizza i task e i processi in competizione
        mediante i moduli interni di
            • multi-threading
            • thread locking
            • performing thread-safe operations
• Function libraries
      – Contiene procedure di interesse generale utilizzate da
        tutti gli altri sotto-sistemi
            •   Manipolazione di stringhe
            •   Operazioni di ordinamento
            •   Gestione della memoria di sistema (dipendente da SO)
            •   I/O su file (dipendente da SO)

    A.A. 2005/2006             Basi di Dati e Laboratorio         13




Installazione

• Possibilità offerte per l’installazione:
      – Compilazione dei sorgenti
            • Prevalentemente per Linux/MacOSX
            • In Windows tramite VC++ 6.0
      – Utilizzo di una distribuzione binaria
            • Disponibile sia per Linux/MacOSX sia per Windows
• Installare la versione stabile più recente
      – Ad oggi la versione 5.0.15




    A.A. 2005/2006             Basi di Dati e Laboratorio         14




Installazione – Linux
•    groupadd mysql
•    useradd -g mysql mysql
•    gunzip < mysql-VERSION.tar.gz | tar -xvf –
•    cd mysql-VERSION
•    ./configure --prefix=/usr/local/mysql
•    make
•    make install
•    scripts/mysql_install_db
•    chown -R root /usr/local/mysql
•    chown -R mysql /usr/local/mysql/var
•    chgrp -R mysql /usr/local/mysql
•    cp support-files/my-medium.cnf /etc/my.cnf
•    /usr/local/mysql/bin/mysqld_safe --user=mysql &


    A.A. 2005/2006             Basi di Dati e Laboratorio         15




                                                                       5
Installazione – Windows

•       Se si utilizza una versione 2K/XP è
        necessario avere i permessi di
        amministratore
•       Scompattare il file della distribuzione in
        una cartella temporanea
•       Eseguire il file setup.exe e seguire la
        procedura di installazione
      – Se si utilizza una versione 2K/XP,
        selezionare il server mysqld-nt
      – Installare con supporto alle connessioni
        remote (porta predefinita di ascolto: 3306)

    A.A. 2005/2006           Basi di Dati e Laboratorio       16




MySQL
•       Inizialmente su MySQL sono presenti due
        database di sistema
      –     Il database MySQL che contiene tutte le impostazioni
            del DBMS
      –     Il database information_schema che contiene il
            dizionario dei dati
•       Prima connessione al DBMS
      –     MySQL accetta di default connessione da parte di
            qualsiasi utente
      –     L’utente root è creato automaticamente e ha
            privilegi di amministrazione sul DBMS
      –      mysql –u root –p
            • L’opzione –p viene specificata se root ha una password

    A.A. 2005/2006           Basi di Dati e Laboratorio       17




Connessione al server

• Aprire una shell di comando
• Connessione: invocare il client MySQL
  dalla cartella contenente i file binari del
  DBMS
      – shell> mysql -h nomehost -u nomeuser -p

• Disconnesione: utilizzare il comando quit
      – mysql> quit




    A.A. 2005/2006           Basi di Dati e Laboratorio       18




                                                                       6
Gestione database

• MySQL è case insensitive
• Tutti i comandi necessitano di semicolon
  (;) finale
• Visualizzazione dei database presenti sul
  server (vincolato dai privilegi dell’utente)
    – mysql> show databases;

• Creazione database
    – mysql> create database nomedatabase;

• Connessione ad un database
    – mysql> connect nomedb
    – mysql> use nomedb


  A.A. 2005/2006     Basi di Dati e Laboratorio     19




Livelli dei privilegi

• Privilegi globali (*.*)
    – Si applicano a tutti i database presenti sul
      server. Sono memorizzati nella tabella
      mysql.user
• Privilegi database (dbname.*)
    – Si applicano a tutte le tabelle presenti in
      dbname. Sono memorizzati nelle tabelle
      mysql.host, mysql.db




  A.A. 2005/2006     Basi di Dati e Laboratorio     20




Livelli dei privilegi

• Privilegi tabella (dbname.tblname)
    – Si applicano a tutte le colonne presenti in
      tblname. Sono memorizzati nella tabella
      mysql.tables_priv
• Privilegi colonna (colname)
    – Si applicano al campo colname specificato.
      Sono memorizzati nella tabella
      mysql.columns_priv




  A.A. 2005/2006     Basi di Dati e Laboratorio     21




                                                         7
Lista dei privilegi
• ALL [PRIVILEGES]                        •    LOCK TABLES
      – Escluso WITH GRANT                •    PROCESS
        OPTION
                                          •    RELOAD (server)
•    ALTER
                                          •    SELECT
•    CREATE
                                          •    SHOW DATABASES
•    DELETE
                                          •    SHUTDOWN (server)
•    DROP
                                          •    SUPER (kill)
•    EXECUTE
                                          •    UPDATE
•    INDEX
                                          •    GRANT OPTION
•    INSERT
                                          •    …

    A.A. 2005/2006         Basi di Dati e Laboratorio      22




Gestione privilegi
GRANT priv_type [(column_list)] […]
ON {tblname | * | *.* | dbname.*}
TO username
   [IDENTIFIED BY [PASSWORD] 'password'] […]
[WITH GRANT OPTION]


REVOKE priv_type [(column_list)] […]
ON {tblname | * | *.* | dbname.*}
FROM username […]


Esempio:
mysql> grant all on provadb.* to
       provausr@localhost identified by ‘provapsw'


    A.A. 2005/2006         Basi di Dati e Laboratorio      23




Gestione privilegi

• Considerazioni
      – E’ consentito l’uso di wildcards
            • % è un carattere speciale che sostituisce
              qualunque stringa
      – Gli utenti sono caratterizzati dall’host da cui si
        connettono al server
            • nomeuser@nomehost
      – E’ possibile modificare la password di un
        utente
            • mysql> SET PASSWORD FOR
                nomeuser@nomehost = PASSWORD('newpassword');

    A.A. 2005/2006         Basi di Dati e Laboratorio      24




                                                                   8
Gestione e creazione tabelle

• Visualizzazione delle tabelle contenute in
  un database
   – mysql> show tables;

• Creazione di tabelle
   – CREATE TABLE tblname [(vincoli di creazione,…)];

• Visualizzazione della struttura di una
  tabella
   – DESCRIBE tblname;
   – SHOW CREATE TABLE tblname;




 A.A. 2005/2006     Basi di Dati e Laboratorio       25




Vincoli di creazione tabelle

• Vincoli di creazione
   – colname dominio [NOT NULL | NULL]
      [DEFAULT valoredefault] [AUTO_INCREMENT]
      [PRIMARY KEY] [vincoli di integrità]
      or PRIMARY KEY (colname,…)
      or INDEX [indexname] (colname,…)
      or UNIQUE [INDEX] [indexname] (colname,…)
      or FOREIGN KEY [indexname] (colname,…)
            [vincoli di integrità]




 A.A. 2005/2006     Basi di Dati e Laboratorio       26




Tipi supportati
• SMALLINT[(length)]               • DECIMAL(length,
  [UNSIGNED] [ZEROFILL]              decimals) [UNSIGNED]
• INT[(length)]                      [ZEROFILL]
  [UNSIGNED] [ZEROFILL]
                                   • CHAR(length) [BINARY]
• INTEGER[(length)]
  [UNSIGNED] [ZEROFILL]            • VARCHAR(length)
• REAL[(length,decimals)]            [BINARY]
  [UNSIGNED] [ZEROFILL]            • DATETIME
• DOUBLE[(length,                  • BLOB
  decimals)] [UNSIGNED]            • TEXT
  [ZEROFILL]
                                   • ENUM(value1,value2,…)
• FLOAT[(length,decimals)]
                                   • SET(value1,value2,...)
  [UNSIGNED] [ZEROFILL]

 A.A. 2005/2006     Basi di Dati e Laboratorio       27




                                                              9
Vincoli di integrità

• Vincoli di integrità
    – REFERENCES tblname [(colname,…)]
      [ON DELETE opzioni]
      [ON UPDATE opzioni]

• Opzioni sui vincoli
    – RESTRICT | CASCADE | SET NULL |
      NO ACTION | SET DEFAULT




I vincoli di integrità in MySQL sono
supportati solo in modalità INNODB

  A.A. 2005/2006    Basi di Dati e Laboratorio   28




Esempi di CREATE TABLE
• Esempi
    – create table utente(login varchar(10),
      psw varchar(10), nome varchar(20),
      cognome varchar(20), email varchar(60),
      admin enum('n','y'), PRIMARY KEY (login));
    – create table genere(id int(4) auto_increment
      PRIMARY KEY, genere varchar(60),
      sottogenere varchar(60));
    – create table brano(id int(4) auto_increment
      PRIMARY KEY, titolo varchar(60), data date,
      rating enum('1','2','3','4','5'), genere
      int(4));
    – create table album(album int(4) not null
      references brano(id), brano int(4) not null
      references brano(id), primary key(album,brano));

  A.A. 2005/2006    Basi di Dati e Laboratorio   29




ALTER, INSERT

• Modifica alla struttura di tabelle
    – ALTER [IGNORE] TABLE tblname specifiche
         [specifiche,…]

• Inserimento di istanze in tabella
    – INSERT [IGNORE] [INTO] tblname [(colname,…)]
      VALUES ((expression | DEFAULT),…),(…)
      [ON DUPLICATE KEY UPDATE colname = expression,…]




  A.A. 2005/2006    Basi di Dati e Laboratorio   30




                                                         10
Specifiche di ALTER

• Specifiche di ALTER
         ADD [COLUMN] vincoli_creazione
             [FIRST | AFTER] colname]
         or ADD INDEX [indexname] (colname,…)
         or ADD PRIMARY KEY (colname,…)
         or ADD UNIQUE [indexname] (colname,…)
         or ADD FOREIGN KEY [indexname] (colname,…)
             [vincoli di integrità]
         or ALTER [COLUMN] colname
             {SET DEFAULT value | DROP DEFAULT}
         or CHANGE [COLUMN] old_colname
             vincoli di creazione [FIRST|AFTER colname]
         or MODIFY [COLUMN] vincoli di creazione
             [FIRST | AFTER colname]
         or DROP [COLUMN] colname
         or DROP PRIMARY KEY
         or DROP INDEX indexname

 A.A. 2005/2006       Basi di Dati e Laboratorio   31




DELETE, UPDATE

• Cancellazione di istanze
   – DELETE FROM tblname [WHERE condizione]
     [ORDER BY …] [LIMIT rows]

• Aggiornamento di istanze
   – UPDATE [IGNORE] tblname
      SET colname1=expr1 [colname2=expr2, …]
      [WHERE condizione] [ORDER BY …] [LIMIT rows]




 A.A. 2005/2006       Basi di Dati e Laboratorio   32




INDEX e DROP

• Creazione di indici
   – CREATE [UNIQUE] INDEX indexname ON tblname
     (colname[(length)],…)

• Drop database
   – DROP DATABASE dbname

• Drop table
   – DROP TABLE tblname [tblname,…]
       [RESTRICT | CASCADE]

• Drop index
   – DROP INDEX indexname ON tblname

 A.A. 2005/2006       Basi di Dati e Laboratorio   33




                                                          11
ESEMPI
• INSERT INTO utente VALUES ('utentenew',
  'utentenew', 'nome utente', 'cognome utente',
  'utente@dominio.it', 'n');
• INSERT genere (genere) VALUES ('jazz'), ('blues');
• ALTER TABLE file ADD numerodownload int(4) AFTER
  proprietario;
• ALTER TABLE brano ADD FOREIGN KEY (genere)
  REFERENCES genere(id);
• UPDATE genere SET genere = 'rock',
  sottogenere = 'metal' WHERE (genere = 'jazz');
• DELETE FROM genere WHERE genere = 'blues';
• CREATE INDEX idx_cognome ON utente(cognome);
• DROP INDEX idx_cognome ON utente;



 A.A. 2005/2006          Basi di Dati e Laboratorio      34




Backup

• È possibile eseguire delle copie di backup
  dei database presenti su un server MySQL
   – mysqldump [options] [dbname] > outputfile.sql
   – Opzioni utili
         • --all-databases
           esegue il backup di tutti i database presenti sul
           server MySQL
         • -u nomeuser
           l’utente con cui eseguire l’accesso al server
           MySQL (implica l’uso dell’opzione –p se nomeuser
           ha impostato una password d’accesso)


 A.A. 2005/2006          Basi di Dati e Laboratorio      35




Ripristino

• È possibile ripristinare un database a
  partire da un file precedentemente salvato
   – mysql [options] [dbname] < inpufile.sql
   – dbname non è necessario in caso di database
     multipli nel file di input
   – Opzioni utili
         • -u nomeuser
           l’utente con cui eseguire l’accesso al server
           MySQL (implica l’uso dell’opzione –p se nomeuser
           ha impostato una password d’accesso)


 A.A. 2005/2006          Basi di Dati e Laboratorio      36




                                                               12

Mais conteúdo relacionado

Mais procurados

Mais procurados (8)

Componenti dello stack LAMP - PHP, il linguaggio, l'installazione - MySQL, in...
Componenti dello stack LAMP - PHP, il linguaggio, l'installazione - MySQL, in...Componenti dello stack LAMP - PHP, il linguaggio, l'installazione - MySQL, in...
Componenti dello stack LAMP - PHP, il linguaggio, l'installazione - MySQL, in...
 
SQL Server Modern Query Processing
SQL Server Modern Query ProcessingSQL Server Modern Query Processing
SQL Server Modern Query Processing
 
Introduzione a Drupal e componenti del core - SIDCamp 2015
Introduzione a Drupal e componenti del core - SIDCamp 2015Introduzione a Drupal e componenti del core - SIDCamp 2015
Introduzione a Drupal e componenti del core - SIDCamp 2015
 
Installing Apache tomcat with Netbeans
Installing Apache tomcat with NetbeansInstalling Apache tomcat with Netbeans
Installing Apache tomcat with Netbeans
 
Mettere in sicurezza ambienti sql server
Mettere in sicurezza ambienti sql serverMettere in sicurezza ambienti sql server
Mettere in sicurezza ambienti sql server
 
Best Practices on SQL Server
Best Practices on SQL ServerBest Practices on SQL Server
Best Practices on SQL Server
 
SQL Server Workload Profiling
SQL Server Workload ProfilingSQL Server Workload Profiling
SQL Server Workload Profiling
 
MySQL 5
MySQL 5MySQL 5
MySQL 5
 

Destaque

Esercitazioni 01 Algebra Relazionale
Esercitazioni 01  Algebra RelazionaleEsercitazioni 01  Algebra Relazionale
Esercitazioni 01 Algebra Relazionale
guestbe916c
 
Corso Di Basi Di Dati 01 Algebra Relazionale Ottimizzazioni
Corso Di  Basi Di  Dati 01  Algebra Relazionale   OttimizzazioniCorso Di  Basi Di  Dati 01  Algebra Relazionale   Ottimizzazioni
Corso Di Basi Di Dati 01 Algebra Relazionale Ottimizzazioni
guestbe916c
 
04 Progettazione Logica
04  Progettazione Logica04  Progettazione Logica
04 Progettazione Logica
guestbe916c
 
Corso Di Basi Di Dati 02 S Q L Query
Corso Di  Basi Di  Dati 02  S Q L   QueryCorso Di  Basi Di  Dati 02  S Q L   Query
Corso Di Basi Di Dati 02 S Q L Query
guestbe916c
 
Laboratorio Di Basi Di Dati 05 Architettura Del Web
Laboratorio Di  Basi Di  Dati 05  Architettura Del  WebLaboratorio Di  Basi Di  Dati 05  Architettura Del  Web
Laboratorio Di Basi Di Dati 05 Architettura Del Web
guestbe916c
 

Destaque (6)

Esercitazioni 01 Algebra Relazionale
Esercitazioni 01  Algebra RelazionaleEsercitazioni 01  Algebra Relazionale
Esercitazioni 01 Algebra Relazionale
 
Algebra
AlgebraAlgebra
Algebra
 
Corso Di Basi Di Dati 01 Algebra Relazionale Ottimizzazioni
Corso Di  Basi Di  Dati 01  Algebra Relazionale   OttimizzazioniCorso Di  Basi Di  Dati 01  Algebra Relazionale   Ottimizzazioni
Corso Di Basi Di Dati 01 Algebra Relazionale Ottimizzazioni
 
04 Progettazione Logica
04  Progettazione Logica04  Progettazione Logica
04 Progettazione Logica
 
Corso Di Basi Di Dati 02 S Q L Query
Corso Di  Basi Di  Dati 02  S Q L   QueryCorso Di  Basi Di  Dati 02  S Q L   Query
Corso Di Basi Di Dati 02 S Q L Query
 
Laboratorio Di Basi Di Dati 05 Architettura Del Web
Laboratorio Di  Basi Di  Dati 05  Architettura Del  WebLaboratorio Di  Basi Di  Dati 05  Architettura Del  Web
Laboratorio Di Basi Di Dati 05 Architettura Del Web
 

Semelhante a Laboratorio Di Basi Di Dati 02 Il D B M S My S Q L

Laboratorio Di Basi Di Dati 06 Programmazione Web Lato Client
Laboratorio Di  Basi Di  Dati 06  Programmazione  Web Lato ClientLaboratorio Di  Basi Di  Dati 06  Programmazione  Web Lato Client
Laboratorio Di Basi Di Dati 06 Programmazione Web Lato Client
guestbe916c
 
OCP-Architettura e caratteristiche della PaaS
OCP-Architettura e caratteristiche della PaaSOCP-Architettura e caratteristiche della PaaS
OCP-Architettura e caratteristiche della PaaS
opencityplatform
 
Laboratorio Di Basi Di Dati 07 Programmazione Web Lato Server
Laboratorio Di  Basi Di  Dati 07  Programmazione  Web Lato ServerLaboratorio Di  Basi Di  Dati 07  Programmazione  Web Lato Server
Laboratorio Di Basi Di Dati 07 Programmazione Web Lato Server
guestbe916c
 

Semelhante a Laboratorio Di Basi Di Dati 02 Il D B M S My S Q L (20)

Azure PaaS databases
Azure PaaS databasesAzure PaaS databases
Azure PaaS databases
 
Laboratorio Di Basi Di Dati 06 Programmazione Web Lato Client
Laboratorio Di  Basi Di  Dati 06  Programmazione  Web Lato ClientLaboratorio Di  Basi Di  Dati 06  Programmazione  Web Lato Client
Laboratorio Di Basi Di Dati 06 Programmazione Web Lato Client
 
IaaS and PaaS relational databases in the cloud
IaaS and PaaS relational databases in the cloudIaaS and PaaS relational databases in the cloud
IaaS and PaaS relational databases in the cloud
 
MySQL Day Roma 2022 - MySQL: dall'alta disponibilità al disaster recovery in ...
MySQL Day Roma 2022 - MySQL: dall'alta disponibilità al disaster recovery in ...MySQL Day Roma 2022 - MySQL: dall'alta disponibilità al disaster recovery in ...
MySQL Day Roma 2022 - MySQL: dall'alta disponibilità al disaster recovery in ...
 
MySQL Tech Tour 2015 - Progettare, installare e configurare MySQL Cluster
MySQL Tech Tour 2015 - Progettare, installare e configurare MySQL ClusterMySQL Tech Tour 2015 - Progettare, installare e configurare MySQL Cluster
MySQL Tech Tour 2015 - Progettare, installare e configurare MySQL Cluster
 
OCP Paas_ultima
OCP Paas_ultimaOCP Paas_ultima
OCP Paas_ultima
 
MySQL Tech Tour 2015 - Soluzioni di alta disponibilità con MySQL
MySQL Tech Tour 2015 - Soluzioni di alta disponibilità con MySQLMySQL Tech Tour 2015 - Soluzioni di alta disponibilità con MySQL
MySQL Tech Tour 2015 - Soluzioni di alta disponibilità con MySQL
 
SQL Server Failover Cluster Instances con Amazon FSx in AWS
SQL Server Failover Cluster Instances con Amazon FSx in AWSSQL Server Failover Cluster Instances con Amazon FSx in AWS
SQL Server Failover Cluster Instances con Amazon FSx in AWS
 
SQL Server Failover Cluster Instances con Azure Managed Disks
SQL Server Failover Cluster Instances con Azure Managed DisksSQL Server Failover Cluster Instances con Azure Managed Disks
SQL Server Failover Cluster Instances con Azure Managed Disks
 
Database Data Aggregator
Database Data AggregatorDatabase Data Aggregator
Database Data Aggregator
 
OCP-Architettura e caratteristiche della PaaS
OCP-Architettura e caratteristiche della PaaSOCP-Architettura e caratteristiche della PaaS
OCP-Architettura e caratteristiche della PaaS
 
Azure sql database
Azure sql databaseAzure sql database
Azure sql database
 
SQL Server Modern Query Processing
SQL Server Modern Query ProcessingSQL Server Modern Query Processing
SQL Server Modern Query Processing
 
Azure PaaS databases
Azure PaaS databasesAzure PaaS databases
Azure PaaS databases
 
MySQL Tech Tour 2016 - Database-as-a-Service con MySQL e Oracle Openstack
MySQL Tech Tour 2016 - Database-as-a-Service con MySQL e Oracle OpenstackMySQL Tech Tour 2016 - Database-as-a-Service con MySQL e Oracle Openstack
MySQL Tech Tour 2016 - Database-as-a-Service con MySQL e Oracle Openstack
 
SQL Server Benchmarking, Baselining and Workload Analysis
SQL Server Benchmarking, Baselining and Workload AnalysisSQL Server Benchmarking, Baselining and Workload Analysis
SQL Server Benchmarking, Baselining and Workload Analysis
 
Laboratorio Di Basi Di Dati 07 Programmazione Web Lato Server
Laboratorio Di  Basi Di  Dati 07  Programmazione  Web Lato ServerLaboratorio Di  Basi Di  Dati 07  Programmazione  Web Lato Server
Laboratorio Di Basi Di Dati 07 Programmazione Web Lato Server
 
Come utilizzare AWS DMS per migrare SQL Server ad Amazon Aurora
Come utilizzare AWS DMS per migrare SQL Server ad Amazon AuroraCome utilizzare AWS DMS per migrare SQL Server ad Amazon Aurora
Come utilizzare AWS DMS per migrare SQL Server ad Amazon Aurora
 
Alfresco Day Roma 2015: Big Repository
Alfresco Day Roma 2015: Big RepositoryAlfresco Day Roma 2015: Big Repository
Alfresco Day Roma 2015: Big Repository
 
Metadata Driven Pipeline with Microsoft Fabric
Metadata Driven Pipeline  with Microsoft FabricMetadata Driven Pipeline  with Microsoft Fabric
Metadata Driven Pipeline with Microsoft Fabric
 

Mais de guestbe916c

Laboratorio Di Basi Di Dati 12 P H P Gestione Di File X M L
Laboratorio Di  Basi Di  Dati 12  P H P   Gestione Di File  X M LLaboratorio Di  Basi Di  Dati 12  P H P   Gestione Di File  X M L
Laboratorio Di Basi Di Dati 12 P H P Gestione Di File X M L
guestbe916c
 
Corso Di Basi Di Dati 09 Modelli Controllo
Corso Di  Basi Di  Dati 09  Modelli ControlloCorso Di  Basi Di  Dati 09  Modelli Controllo
Corso Di Basi Di Dati 09 Modelli Controllo
guestbe916c
 
Esercitazioni 02 S Q L
Esercitazioni 02  S Q LEsercitazioni 02  S Q L
Esercitazioni 02 S Q L
guestbe916c
 
Corso Di Basi Di Dati 10 Transazioni
Corso Di  Basi Di  Dati 10  TransazioniCorso Di  Basi Di  Dati 10  Transazioni
Corso Di Basi Di Dati 10 Transazioni
guestbe916c
 
Laboratorio Di Basi Di Dati 04 P L S Q L E P Lpg S Q L
Laboratorio Di  Basi Di  Dati 04  P L  S Q L E  P Lpg S Q LLaboratorio Di  Basi Di  Dati 04  P L  S Q L E  P Lpg S Q L
Laboratorio Di Basi Di Dati 04 P L S Q L E P Lpg S Q L
guestbe916c
 
Corso Di Basi Di Dati 06 Esercizi Di Progettazione Concettuale
Corso Di  Basi Di  Dati 06  Esercizi Di Progettazione ConcettualeCorso Di  Basi Di  Dati 06  Esercizi Di Progettazione Concettuale
Corso Di Basi Di Dati 06 Esercizi Di Progettazione Concettuale
guestbe916c
 
Corso Di Basi Di Dati 03 Progettazione Concettuale
Corso Di  Basi Di  Dati 03  Progettazione ConcettualeCorso Di  Basi Di  Dati 03  Progettazione Concettuale
Corso Di Basi Di Dati 03 Progettazione Concettuale
guestbe916c
 
Corso Di Basi Di Dati 05 Normalizzazione
Corso Di  Basi Di  Dati 05  NormalizzazioneCorso Di  Basi Di  Dati 05  Normalizzazione
Corso Di Basi Di Dati 05 Normalizzazione
guestbe916c
 
Corso Di Basi Di Dati 04 Progettazione Logica
Corso Di  Basi Di  Dati 04  Progettazione LogicaCorso Di  Basi Di  Dati 04  Progettazione Logica
Corso Di Basi Di Dati 04 Progettazione Logica
guestbe916c
 
Corso Di Basi Di Dati 02 S Q L D M L
Corso Di  Basi Di  Dati 02  S Q L  D M LCorso Di  Basi Di  Dati 02  S Q L  D M L
Corso Di Basi Di Dati 02 S Q L D M L
guestbe916c
 
Esercitazioni 03 Algebra + S Q L
Esercitazioni 03  Algebra +  S Q LEsercitazioni 03  Algebra +  S Q L
Esercitazioni 03 Algebra + S Q L
guestbe916c
 
Esercitazioni 04 Progettazione Concettuale E Logica
Esercitazioni 04  Progettazione Concettuale E LogicaEsercitazioni 04  Progettazione Concettuale E Logica
Esercitazioni 04 Progettazione Concettuale E Logica
guestbe916c
 
Corso Di Basi Di Dati 08 Protezione Dei Dati
Corso Di  Basi Di  Dati 08  Protezione Dei DatiCorso Di  Basi Di  Dati 08  Protezione Dei Dati
Corso Di Basi Di Dati 08 Protezione Dei Dati
guestbe916c
 
06 Normalizzazione
06  Normalizzazione06  Normalizzazione
06 Normalizzazione
guestbe916c
 
04 B Progettazione Logica E S
04 B  Progettazione Logica  E S04 B  Progettazione Logica  E S
04 B Progettazione Logica E S
guestbe916c
 

Mais de guestbe916c (16)

Laboratorio Di Basi Di Dati 12 P H P Gestione Di File X M L
Laboratorio Di  Basi Di  Dati 12  P H P   Gestione Di File  X M LLaboratorio Di  Basi Di  Dati 12  P H P   Gestione Di File  X M L
Laboratorio Di Basi Di Dati 12 P H P Gestione Di File X M L
 
Corso Di Basi Di Dati 09 Modelli Controllo
Corso Di  Basi Di  Dati 09  Modelli ControlloCorso Di  Basi Di  Dati 09  Modelli Controllo
Corso Di Basi Di Dati 09 Modelli Controllo
 
Esercitazioni 02 S Q L
Esercitazioni 02  S Q LEsercitazioni 02  S Q L
Esercitazioni 02 S Q L
 
Corso Di Basi Di Dati 10 Transazioni
Corso Di  Basi Di  Dati 10  TransazioniCorso Di  Basi Di  Dati 10  Transazioni
Corso Di Basi Di Dati 10 Transazioni
 
Laboratorio Di Basi Di Dati 04 P L S Q L E P Lpg S Q L
Laboratorio Di  Basi Di  Dati 04  P L  S Q L E  P Lpg S Q LLaboratorio Di  Basi Di  Dati 04  P L  S Q L E  P Lpg S Q L
Laboratorio Di Basi Di Dati 04 P L S Q L E P Lpg S Q L
 
Corso Di Basi Di Dati 06 Esercizi Di Progettazione Concettuale
Corso Di  Basi Di  Dati 06  Esercizi Di Progettazione ConcettualeCorso Di  Basi Di  Dati 06  Esercizi Di Progettazione Concettuale
Corso Di Basi Di Dati 06 Esercizi Di Progettazione Concettuale
 
Corso Di Basi Di Dati 03 Progettazione Concettuale
Corso Di  Basi Di  Dati 03  Progettazione ConcettualeCorso Di  Basi Di  Dati 03  Progettazione Concettuale
Corso Di Basi Di Dati 03 Progettazione Concettuale
 
Corso Di Basi Di Dati 05 Normalizzazione
Corso Di  Basi Di  Dati 05  NormalizzazioneCorso Di  Basi Di  Dati 05  Normalizzazione
Corso Di Basi Di Dati 05 Normalizzazione
 
Corso Di Basi Di Dati 04 Progettazione Logica
Corso Di  Basi Di  Dati 04  Progettazione LogicaCorso Di  Basi Di  Dati 04  Progettazione Logica
Corso Di Basi Di Dati 04 Progettazione Logica
 
Corso Di Basi Di Dati 02 S Q L D M L
Corso Di  Basi Di  Dati 02  S Q L  D M LCorso Di  Basi Di  Dati 02  S Q L  D M L
Corso Di Basi Di Dati 02 S Q L D M L
 
Esercitazioni 03 Algebra + S Q L
Esercitazioni 03  Algebra +  S Q LEsercitazioni 03  Algebra +  S Q L
Esercitazioni 03 Algebra + S Q L
 
S Q L
S Q LS Q L
S Q L
 
Esercitazioni 04 Progettazione Concettuale E Logica
Esercitazioni 04  Progettazione Concettuale E LogicaEsercitazioni 04  Progettazione Concettuale E Logica
Esercitazioni 04 Progettazione Concettuale E Logica
 
Corso Di Basi Di Dati 08 Protezione Dei Dati
Corso Di  Basi Di  Dati 08  Protezione Dei DatiCorso Di  Basi Di  Dati 08  Protezione Dei Dati
Corso Di Basi Di Dati 08 Protezione Dei Dati
 
06 Normalizzazione
06  Normalizzazione06  Normalizzazione
06 Normalizzazione
 
04 B Progettazione Logica E S
04 B  Progettazione Logica  E S04 B  Progettazione Logica  E S
04 B Progettazione Logica E S
 

Laboratorio Di Basi Di Dati 02 Il D B M S My S Q L

  • 1. Corso di Basi di Dati e Laboratorio MySQL Alfio Ferrara - Stefano Montanelli A.A. 2005/2006 Basi di Dati e Laboratorio 1 Introduzione • MySQL – http://www.mysql.com – DBMS relazionale Open Source (licenza GPL) – Applicazione Client – Server – La distribuzione consiste in un server e una applicazione client da riga di comando (mysql) – Possibilità di usare una GUI per l’amministrazione del server (phpMyAdmin) A.A. 2005/2006 Basi di Dati e Laboratorio 2 Caratteristiche principali • MySQL: – Scritto in C e C++ – Portabilità • Windows [9.x, Me, NT, 2K, XP], Linux, FreeBSD [2.x, 3.x, 4.x], Mac OS X, SunOS 4.0, Solaris 2.5… – APIs • C, C++, Eiffel, java, Perl, PHP, Python… – Supporto al multi-threading • Possibilità di usare CPU multiple se disponibili A.A. 2005/2006 Basi di Dati e Laboratorio 3 1
  • 2. Caratteristiche principali • MySQL: – Connettività • TCP/IP socket, UNIX socket, Named Pipes • ODBC driver, JDBC driver – Supporto alle transazioni mediante la modalità InnoDB – Scalabilità e limiti • Gestisce basi di dati con grandi quantitativi di dati. – Suporta fino a 60.000 tabelle e 5.000.000.000 di record – Supporta fino a 64 indici in una singola tabella A.A. 2005/2006 Basi di Dati e Laboratorio 4 MySQL e SQL • Aderenza a SQL99 – Istruzioni CREATE TABLE, ALTER TABLE – Operatori SELECT, WHERE, GROUP BY, ORDER BY – Funzioni COUNT(), COUNT(DISTINCT...), AVG(), STD(), SUM(), MAX(), MIN() – LEFT/RIGHT OUTER JOIN – Alias su tabelle e colonne – Istruzioni di INSERT, DELETE, UPDATE – Sotto-selezioni (dalla versione 4.1) – Viste (dalla versione 5.0) – Trigger e stored procedures (dalla versione 5.0) – UNION (dalla versione 5.0) A.A. 2005/2006 Basi di Dati e Laboratorio 5 MySQL e SQL • Estensioni allo standard SQL99 – Istruzione REPLACE • Sintetizza le istruzioni DELETE + INSERT – Supporto dei tipi di dato MEDIUMINT, SET, ENUM, TEXT – Supporto ai vincoli di attributo AUTO_INCREMENT, BINARY, NULL, UNSIGNED, ZEROFILL – Supporto a funzioni regolari e funzioni proprietarie nell’istruzione SELECT • TRIM, LAST_INSERT_ID, CONCAT, CAST, MOD – Supporto agli operatori || e && per sostituire gli operatori logici OR e AND A.A. 2005/2006 Basi di Dati e Laboratorio 6 2
  • 3. MySQL e SQL • Differenze con lo standard SQL99 – Implementazione del tipo di dati VARCHAR – Assenza del costrutto INTERSECT – Assenza del costrutto EXCEPT – Utilizzo del comando REVOKE • I privilegi su una tabella non sono automaticamente revocati con la sua eliminazioni ma è necessario utilizzare un’istruzione REVOKE esplicita – Implementazione dei vincoli di integrità • Richiede l’utilizzo di modalità InnoDB (motore transazionale conforme alle proprietà ACID) A.A. 2005/2006 Basi di Dati e Laboratorio 7 Architettura di MySQL • MySQL è basato su un’architettura multi-livello composta da un insieme di sotto-sistemi primari e di componenti di supporto • I diversi componenti interagiscono per garantire – Lettura di query – Analisi di query – Esecuzione di query – Memorizzazione/restituzione dei risultati delle query • Sistemi primari • Componenti di supporto – Query Engine – Process manager – Storage Manager – Function libraries – Buffer Manager – Transaction Manager – Recovery Manager A.A. 2005/2006 Basi di Dati e Laboratorio 8 Architettura di MySQL Recovery manager Query engine Buffer manager Transaction manager Storage manager Sotto-sistemi primari Process manager Function libraries Componenti di supporto A.A. 2005/2006 Basi di Dati e Laboratorio 9 3
  • 4. Architettura di MySQL • Query engine. È composto da tre componenti – Syntax Parser • È responsabile della decomposizione dei comandi SQL in ingresso in una forma comprensibile ai moduli deputati all’esecuzione • Verifica la correttezza sintattica dei comandi SQL • Verifica i permessi di accesso agli oggetti richiesti – Query Optimizer • Verifica le possibili ottimizzazioni: Individua gli indici da utilizzare per reperire i dati richiesti nel modo più efficiente possibile • Predispone il piano di esecuzione della query da sottoporre a execution component – Execution Component • È responsabile dell’esecuzione del comando SQL ricevuto A.A. 2005/2006 Basi di Dati e Laboratorio 10 Architettura di MySQL • Storage manager – Ha il compito di interfacciare il sistema operativo per soddisfare le richieste di scrittura di dati su disco in modo efficiente • Buffer manager – Ha il compito di gestire le problematiche relative alla memoria nelle interazioni fra query engine e storage manager – Utilizza politiche di query caching efficiente che garantiscono ottimi tempi di risposta A.A. 2005/2006 Basi di Dati e Laboratorio 11 Architettura di MySQL • Transaction manager – Ha il compito di gestire le questioni legate alla concorrenza durante l’accesso ai dati – Utilizza il componente Lock manager che gestisce il blocco dei vari oggetti per garantire l’accesso simultaneo a utenti multipli in modo consistente • Recovery manager – Ha il compito di mantenere una copia dei dati a tutela di possibili perdite in caso di eventi imprevisti – Mantiene il log degli eventi significativi all’interno del DBMS A.A. 2005/2006 Basi di Dati e Laboratorio 12 4
  • 5. Architettura di MySQL • Process manager – Gestisce le connessioni con i client mediante i moduli interni di network connection management – Sincronizza i task e i processi in competizione mediante i moduli interni di • multi-threading • thread locking • performing thread-safe operations • Function libraries – Contiene procedure di interesse generale utilizzate da tutti gli altri sotto-sistemi • Manipolazione di stringhe • Operazioni di ordinamento • Gestione della memoria di sistema (dipendente da SO) • I/O su file (dipendente da SO) A.A. 2005/2006 Basi di Dati e Laboratorio 13 Installazione • Possibilità offerte per l’installazione: – Compilazione dei sorgenti • Prevalentemente per Linux/MacOSX • In Windows tramite VC++ 6.0 – Utilizzo di una distribuzione binaria • Disponibile sia per Linux/MacOSX sia per Windows • Installare la versione stabile più recente – Ad oggi la versione 5.0.15 A.A. 2005/2006 Basi di Dati e Laboratorio 14 Installazione – Linux • groupadd mysql • useradd -g mysql mysql • gunzip < mysql-VERSION.tar.gz | tar -xvf – • cd mysql-VERSION • ./configure --prefix=/usr/local/mysql • make • make install • scripts/mysql_install_db • chown -R root /usr/local/mysql • chown -R mysql /usr/local/mysql/var • chgrp -R mysql /usr/local/mysql • cp support-files/my-medium.cnf /etc/my.cnf • /usr/local/mysql/bin/mysqld_safe --user=mysql & A.A. 2005/2006 Basi di Dati e Laboratorio 15 5
  • 6. Installazione – Windows • Se si utilizza una versione 2K/XP è necessario avere i permessi di amministratore • Scompattare il file della distribuzione in una cartella temporanea • Eseguire il file setup.exe e seguire la procedura di installazione – Se si utilizza una versione 2K/XP, selezionare il server mysqld-nt – Installare con supporto alle connessioni remote (porta predefinita di ascolto: 3306) A.A. 2005/2006 Basi di Dati e Laboratorio 16 MySQL • Inizialmente su MySQL sono presenti due database di sistema – Il database MySQL che contiene tutte le impostazioni del DBMS – Il database information_schema che contiene il dizionario dei dati • Prima connessione al DBMS – MySQL accetta di default connessione da parte di qualsiasi utente – L’utente root è creato automaticamente e ha privilegi di amministrazione sul DBMS – mysql –u root –p • L’opzione –p viene specificata se root ha una password A.A. 2005/2006 Basi di Dati e Laboratorio 17 Connessione al server • Aprire una shell di comando • Connessione: invocare il client MySQL dalla cartella contenente i file binari del DBMS – shell> mysql -h nomehost -u nomeuser -p • Disconnesione: utilizzare il comando quit – mysql> quit A.A. 2005/2006 Basi di Dati e Laboratorio 18 6
  • 7. Gestione database • MySQL è case insensitive • Tutti i comandi necessitano di semicolon (;) finale • Visualizzazione dei database presenti sul server (vincolato dai privilegi dell’utente) – mysql> show databases; • Creazione database – mysql> create database nomedatabase; • Connessione ad un database – mysql> connect nomedb – mysql> use nomedb A.A. 2005/2006 Basi di Dati e Laboratorio 19 Livelli dei privilegi • Privilegi globali (*.*) – Si applicano a tutti i database presenti sul server. Sono memorizzati nella tabella mysql.user • Privilegi database (dbname.*) – Si applicano a tutte le tabelle presenti in dbname. Sono memorizzati nelle tabelle mysql.host, mysql.db A.A. 2005/2006 Basi di Dati e Laboratorio 20 Livelli dei privilegi • Privilegi tabella (dbname.tblname) – Si applicano a tutte le colonne presenti in tblname. Sono memorizzati nella tabella mysql.tables_priv • Privilegi colonna (colname) – Si applicano al campo colname specificato. Sono memorizzati nella tabella mysql.columns_priv A.A. 2005/2006 Basi di Dati e Laboratorio 21 7
  • 8. Lista dei privilegi • ALL [PRIVILEGES] • LOCK TABLES – Escluso WITH GRANT • PROCESS OPTION • RELOAD (server) • ALTER • SELECT • CREATE • SHOW DATABASES • DELETE • SHUTDOWN (server) • DROP • SUPER (kill) • EXECUTE • UPDATE • INDEX • GRANT OPTION • INSERT • … A.A. 2005/2006 Basi di Dati e Laboratorio 22 Gestione privilegi GRANT priv_type [(column_list)] […] ON {tblname | * | *.* | dbname.*} TO username [IDENTIFIED BY [PASSWORD] 'password'] […] [WITH GRANT OPTION] REVOKE priv_type [(column_list)] […] ON {tblname | * | *.* | dbname.*} FROM username […] Esempio: mysql> grant all on provadb.* to provausr@localhost identified by ‘provapsw' A.A. 2005/2006 Basi di Dati e Laboratorio 23 Gestione privilegi • Considerazioni – E’ consentito l’uso di wildcards • % è un carattere speciale che sostituisce qualunque stringa – Gli utenti sono caratterizzati dall’host da cui si connettono al server • nomeuser@nomehost – E’ possibile modificare la password di un utente • mysql> SET PASSWORD FOR nomeuser@nomehost = PASSWORD('newpassword'); A.A. 2005/2006 Basi di Dati e Laboratorio 24 8
  • 9. Gestione e creazione tabelle • Visualizzazione delle tabelle contenute in un database – mysql> show tables; • Creazione di tabelle – CREATE TABLE tblname [(vincoli di creazione,…)]; • Visualizzazione della struttura di una tabella – DESCRIBE tblname; – SHOW CREATE TABLE tblname; A.A. 2005/2006 Basi di Dati e Laboratorio 25 Vincoli di creazione tabelle • Vincoli di creazione – colname dominio [NOT NULL | NULL] [DEFAULT valoredefault] [AUTO_INCREMENT] [PRIMARY KEY] [vincoli di integrità] or PRIMARY KEY (colname,…) or INDEX [indexname] (colname,…) or UNIQUE [INDEX] [indexname] (colname,…) or FOREIGN KEY [indexname] (colname,…) [vincoli di integrità] A.A. 2005/2006 Basi di Dati e Laboratorio 26 Tipi supportati • SMALLINT[(length)] • DECIMAL(length, [UNSIGNED] [ZEROFILL] decimals) [UNSIGNED] • INT[(length)] [ZEROFILL] [UNSIGNED] [ZEROFILL] • CHAR(length) [BINARY] • INTEGER[(length)] [UNSIGNED] [ZEROFILL] • VARCHAR(length) • REAL[(length,decimals)] [BINARY] [UNSIGNED] [ZEROFILL] • DATETIME • DOUBLE[(length, • BLOB decimals)] [UNSIGNED] • TEXT [ZEROFILL] • ENUM(value1,value2,…) • FLOAT[(length,decimals)] • SET(value1,value2,...) [UNSIGNED] [ZEROFILL] A.A. 2005/2006 Basi di Dati e Laboratorio 27 9
  • 10. Vincoli di integrità • Vincoli di integrità – REFERENCES tblname [(colname,…)] [ON DELETE opzioni] [ON UPDATE opzioni] • Opzioni sui vincoli – RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT I vincoli di integrità in MySQL sono supportati solo in modalità INNODB A.A. 2005/2006 Basi di Dati e Laboratorio 28 Esempi di CREATE TABLE • Esempi – create table utente(login varchar(10), psw varchar(10), nome varchar(20), cognome varchar(20), email varchar(60), admin enum('n','y'), PRIMARY KEY (login)); – create table genere(id int(4) auto_increment PRIMARY KEY, genere varchar(60), sottogenere varchar(60)); – create table brano(id int(4) auto_increment PRIMARY KEY, titolo varchar(60), data date, rating enum('1','2','3','4','5'), genere int(4)); – create table album(album int(4) not null references brano(id), brano int(4) not null references brano(id), primary key(album,brano)); A.A. 2005/2006 Basi di Dati e Laboratorio 29 ALTER, INSERT • Modifica alla struttura di tabelle – ALTER [IGNORE] TABLE tblname specifiche [specifiche,…] • Inserimento di istanze in tabella – INSERT [IGNORE] [INTO] tblname [(colname,…)] VALUES ((expression | DEFAULT),…),(…) [ON DUPLICATE KEY UPDATE colname = expression,…] A.A. 2005/2006 Basi di Dati e Laboratorio 30 10
  • 11. Specifiche di ALTER • Specifiche di ALTER ADD [COLUMN] vincoli_creazione [FIRST | AFTER] colname] or ADD INDEX [indexname] (colname,…) or ADD PRIMARY KEY (colname,…) or ADD UNIQUE [indexname] (colname,…) or ADD FOREIGN KEY [indexname] (colname,…) [vincoli di integrità] or ALTER [COLUMN] colname {SET DEFAULT value | DROP DEFAULT} or CHANGE [COLUMN] old_colname vincoli di creazione [FIRST|AFTER colname] or MODIFY [COLUMN] vincoli di creazione [FIRST | AFTER colname] or DROP [COLUMN] colname or DROP PRIMARY KEY or DROP INDEX indexname A.A. 2005/2006 Basi di Dati e Laboratorio 31 DELETE, UPDATE • Cancellazione di istanze – DELETE FROM tblname [WHERE condizione] [ORDER BY …] [LIMIT rows] • Aggiornamento di istanze – UPDATE [IGNORE] tblname SET colname1=expr1 [colname2=expr2, …] [WHERE condizione] [ORDER BY …] [LIMIT rows] A.A. 2005/2006 Basi di Dati e Laboratorio 32 INDEX e DROP • Creazione di indici – CREATE [UNIQUE] INDEX indexname ON tblname (colname[(length)],…) • Drop database – DROP DATABASE dbname • Drop table – DROP TABLE tblname [tblname,…] [RESTRICT | CASCADE] • Drop index – DROP INDEX indexname ON tblname A.A. 2005/2006 Basi di Dati e Laboratorio 33 11
  • 12. ESEMPI • INSERT INTO utente VALUES ('utentenew', 'utentenew', 'nome utente', 'cognome utente', 'utente@dominio.it', 'n'); • INSERT genere (genere) VALUES ('jazz'), ('blues'); • ALTER TABLE file ADD numerodownload int(4) AFTER proprietario; • ALTER TABLE brano ADD FOREIGN KEY (genere) REFERENCES genere(id); • UPDATE genere SET genere = 'rock', sottogenere = 'metal' WHERE (genere = 'jazz'); • DELETE FROM genere WHERE genere = 'blues'; • CREATE INDEX idx_cognome ON utente(cognome); • DROP INDEX idx_cognome ON utente; A.A. 2005/2006 Basi di Dati e Laboratorio 34 Backup • È possibile eseguire delle copie di backup dei database presenti su un server MySQL – mysqldump [options] [dbname] > outputfile.sql – Opzioni utili • --all-databases esegue il backup di tutti i database presenti sul server MySQL • -u nomeuser l’utente con cui eseguire l’accesso al server MySQL (implica l’uso dell’opzione –p se nomeuser ha impostato una password d’accesso) A.A. 2005/2006 Basi di Dati e Laboratorio 35 Ripristino • È possibile ripristinare un database a partire da un file precedentemente salvato – mysql [options] [dbname] < inpufile.sql – dbname non è necessario in caso di database multipli nel file di input – Opzioni utili • -u nomeuser l’utente con cui eseguire l’accesso al server MySQL (implica l’uso dell’opzione –p se nomeuser ha impostato una password d’accesso) A.A. 2005/2006 Basi di Dati e Laboratorio 36 12