1 of 38

B - Database e linguaggio SQL

ES01 - Ambiente di sviluppo e utilizzo di MySQL

FB - 11.2024 - v1.1

1

“La teoria è quando si sa tutto e niente funziona. La pratica è quando tutto funziona e nessuno sa il perché. Noi abbiamo messo insieme la teoria e la pratica: non c'è niente che funzioni… e nessuno sa il perché!”

“La teoria è quando si sa tutto e niente funziona. La pratica è quando tutto funziona e nessuno sa il perché. Noi abbiamo messo insieme la teoria e la pratica: non c'è niente che funzioni… e nessuno sa il perché!”

2 of 38

Ambiente di sviluppo e utilizzo di MySQL

Creazione di un server MySQL e utilizzo tramite linea di comando o interfaccia grafica.

2

© FB - 09.2023

3 of 38

Indice

3

© FB - 09.2023

4 of 38

Obiettivi didattici

4

5 of 38

Obiettivi didattici

  • Saper connettersi ad un database MySQL ed eseguire semplici query DDL DML

5

© FB - 11.2023

6 of 38

Introduzione teorica

6

7 of 38

Introduzione ai database

7

8 of 38

Introduzione ai database

8

© FB - 11.2024

9 of 38

MySQL

9

© FB - 11.2023

10 of 38

Introduzione a MySQL

MySQL è un sistema di gestione di database relazionale (RDBMS) open source che si basa sul linguaggio SQL (Structured Query Language). È uno dei database più popolari al mondo ed è ampiamente utilizzato per la gestione e l'organizzazione di dati in vari tipi di applicazioni, inclusi siti web dinamici e applicazioni basate su server.

Il software è sviluppato, distribuito e supportato da Oracle Corporation. MySQL offre un'architettura client-server, dove le richieste dei clienti vengono inviate al server MySQL che elabora le query SQL e restituisce i risultati al client. Il suo design modulare e flessibile consente una facile integrazione con diverse tecnologie e linguaggi di programmazione.

MySQL è noto per la sua affidabilità, scalabilità e facilità d'uso. È utilizzato in una vasta gamma di contesti, dallo sviluppo di piccoli progetti a sistemi aziendali complessi. Le caratteristiche principali includono la gestione transazionale dei dati, la possibilità di implementare stored procedures e trigger, e un'elevata velocità di esecuzione delle query. Essendo open source, è disponibile gratuitamente e ha una comunità attiva di sviluppatori che contribuiscono al suo miglioramento continuo.

10

© FB - 11.2023

11 of 38

Installazione di MySQL

11

© FB - 11.2023

12 of 38

MySQL su Windows

XAMPP è un pacchetto software gratuito e open source che facilita l'installazione e la configurazione di un ambiente di sviluppo locale per la programmazione web. Il nome "XAMPP" è un acronimo che rappresenta i componenti principali del pacchetto:

X: Cross-platform (disponibile su diverse piattaforme)

A: Apache (un server web)

M: MySQL (un sistema di gestione di database)

P: PHP (un linguaggio di scripting server-side)

P: Perl (un linguaggio di programmazione)

XAMPP è disponibile per diverse piattaforme, inclusi sistemi operativi come Windows, Linux e macOS. Ti permette di creare un ambiente di sviluppo locale sul tuo computer per testare siti web e applicazioni prima di pubblicarli su un server web in un ambiente di produzione.

Scarica XAMPP: Vai al sito ufficiale di XAMPP (https://www.apachefriends.org/index.html) e scarica la versione più recente per Windows.

Esegui il programma di installazione: Dopo aver scaricato il file di installazione, eseguilo. Segui le istruzioni guidate durante l'installazione.

Seleziona i componenti da installare: Durante l'installazione, potrai selezionare i componenti che desideri installare. Di solito, Apache, MySQL, PHP e phpMyAdmin sono selezionati di default. Puoi anche aggiungere altri componenti come Perl.

Configura il server: Al termine dell'installazione, potrai avviare il pannello di controllo di XAMPP, dove potrai avviare o arrestare i servizi come Apache e MySQL. Configura i dettagli del server, se necessario.

Testa l'installazione: Apri il tuo browser e vai all'indirizzo http://localhost/. Se tutto è stato installato correttamente, vedrai la pagina di benvenuto di XAMPP.

Accedi a phpMyAdmin: Puoi accedere a phpMyAdmin, un'interfaccia web per gestire i database MySQL, visitando http://localhost/phpmyadmin/.

Ora hai un ambiente di sviluppo locale funzionante con Apache, MySQL, PHP e altri componenti. Puoi iniziare a sviluppare e testare le tue applicazioni web senza dover utilizzare un server web remoto. Ricorda che XAMPP è pensato principalmente per l'ambiente di sviluppo e non per un ambiente di produzione.

12

© FB - 11.2023

13 of 38

Installazione di MySQL su un sistema Linux

L'installazione di MySQL su un sistema Linux può variare leggermente in base alla distribuzione specifica che stai utilizzando. Tuttavia, i passaggi di base sono generalmente simili. Di seguito, un esempio generico di come installare MySQL su una distribuzione basata su Debian (come Ubuntu).

#Aggiornamento del sistema�sudo apt update -y && sudo apt upgrade

#Installazione di MySQL Server�sudo apt install mysql-server

#Accesso al MySQl�mysql -u root

L'utilizzo di ambienti di sviluppo basati su cloud come GitHub Codespaces o Gitpod sono un'alternativa moderna e flessibile all'installazione di server locali come XAMPP. Questi ambienti consentono di sviluppare, testare e eseguire applicazioni direttamente nel cloud, eliminando la necessità di configurare un ambiente di sviluppo locale.

Per creare una copia del repository https://github.com/filippo-bilardo/LAMP sul tuo account GitHub, puoi seguire questi passaggi:

  • Accedi al tuo account GitHub su https://github.com/
  • Vai al repository https://github.com/filippo-bilardo/LAMP nel tuo browser.
  • Esegui la Fork del Repository: In alto a destra della pagina del repository, clicca sul pulsante "Fork" per creare una copia del repository nel tuo account GitHub.
  • Adesso puoi avviare Gitpod o creare un Codespace del repository

13

© FB - 11.2023

14 of 38

Interfacce a riga di comando (CLI) e interfacce grafiche

14

© FB - 11.2023

15 of 38

Interfaccia a riga di comando (CLI) e interfacce grafiche

L'interfaccia di MySQL può essere gestita sia attraverso la riga di comando (CLI) che tramite interfacce grafiche. Entrambe offrono un modo per interagire con il sistema di gestione del database MySQL, ma si differenziano nel loro approccio e nell'esperienza utente. Ecco una panoramica di entrambe:

Interfaccia della Riga di Comando (CLI):

Digitando mysql -u username -p abbiamo accesso alla CLI che permette una interazione diretta con il server MySQL attraverso comandi SQL utilizzabili per eseguire query, modificare il database, visualizzare le tabelle, ecc.

Interfaccia Grafica:

MySQL Workbench: Un'applicazione ufficiale di MySQL che fornisce un'interfaccia grafica per la gestione di database MySQL.

phpMyAdmin: Un'applicazione web basata su PHP che consente di gestire database MySQL tramite un'interfaccia grafica.

https://heidisql.com/

Le interfacce grafiche sono spesso preferite per principianti e per compiti di amministrazione del database. Gli sviluppatori possono apprezzare l'efficienza della riga di comando per eseguire rapidamente query e compiti specifici.

15

© FB - 11.2023

16 of 38

Utilizzo di MySql da console

Per utilizzare MySQL da console, è utile conoscere alcuni concetti e comandi fondamentali. Ecco alcune informazioni importanti:

Accesso al Server MySQL

Usare il comando: mysql -u tuo_utente -p

Sostituisci "tuo_utente" con il tuo nome utente MySQL. Dopo aver eseguito questo comando, verrà richiesta la password.

Comandi di Base

SHOW DATABASES; -- Mostra un elenco di tutti i database disponibili.

USE nome_del_database; -- Seleziona un database specifico.

SHOW TABLES; -- Mostra le tabelle nel database corrente.

DESCRIBE nome_della_tabella;

DESC nome_della_tabella; -- Mostra la struttura di una tabella.

16

© FB - 11.2023

17 of 38

Utilizzo di MySql da console

Creazione di Database e Tabelle:

CREATE DATABASE nome_del_database;: Crea un nuovo database.

CREATE TABLE nome_della_tabella (...);: Crea una nuova tabella.

Manipolazione dei Dati:

INSERT INTO nome_della_tabella (colonna1, colonna2, ...) VALUES (valore1, valore2, ...);: Inserisce dati in una tabella.

SELECT * FROM nome_della_tabella;: Esegue una query per selezionare tutti i dati dalla tabella.

UPDATE nome_della_tabella SET colonna = nuovo_valore WHERE condizione;: Aggiorna dati in una tabella.

DELETE FROM nome_della_tabella WHERE condizione;: Elimina dati da una tabella.

17

© FB - 11.2023

18 of 38

Utilizzo di MySql da console

Gestione degli Utenti e dei Privilegi:

CREATE USER 'nuovo_utente'@'localhost' IDENTIFIED BY 'password';: Crea un nuovo utente.

GRANT privilegio ON database.tabella TO 'utente'@'indirizzo_ip' IDENTIFIED BY 'password';: Concede privilegi a un utente.

REVOKE privilegio ON database.tabella FROM 'utente'@'indirizzo_ip';: Revoca privilegi da un utente.

Backup e Ripristino:

mysqldump -u tuo_utente -p nome_del_database > backup.sql: Esegue un backup del database.

mysql -u tuo_utente -p nome_del_database < backup.sql: Ripristina il database da un file di backup.

Uscita dalla Console MySQL:

EXIT; o \q: Per uscire dalla console MySQL.

Questi sono solo alcuni dei comandi fondamentali. Per approfondire ulteriormente, puoi fare riferimento alla documentazione ufficiale di MySQL, che fornisce informazioni dettagliate su ogni comando e concetto.

18

© FB - 11.2023

19 of 38

Backup e ripristino

19

© FB - 11.2023

20 of 38

Backup e ripristino

I backup dei database sono essenziali per proteggere i dati da perdite accidentali o danni. Incidenti come cancellazioni errate, errori umani o guasti hardware possono causare la perdita irreversibile di dati. Un backup adeguato consente di recuperare i dati in caso di tali incidenti e aiuta a minimizzare il downtime dell'applicazione o del servizio che dipende dal database.

Per le aziende ci sono requisiti normativi che richiedono la conservazione sicura dei dati per un determinato periodo. I backup consentono di rispettare queste normative e di dimostrare la conformità in caso di audit.

Esistono diversi sistemi e approcci per effettuare il backup dei database, ciascuno con le proprie caratteristiche e vantaggi. Molti sistemi di gestione di database (DBMS) offrono strumenti integrati per eseguire il backup e il ripristino dei database. Ad esempio, in MySQL, si utilizza il comando mysqldump

mysqldump è uno strumento di linea di comando fornito con il sistema di gestione di database relazionale MySQL. Il suo scopo principale è consentire il backup di database MySQL, inclusi dati e strutture. Ecco alcuni esempi di come utilizzare mysqldump:

mysqldump -u username -p nome_database > percorso/backup.sql�mysqldump -u username -p nome_database nome_tabella> percorso/backup.sql

mysqldump -u username -p --all-databases > percorso/backup.sql

mysql -u username -p nome_database < percorso/backup.sql

Se il database è su un server remoto, puoi utilizzare ssh per effettuare il backup.

ssh user@remote-server "mysqldump -u username -p nome_database" > percorso/backup.sql [ref]

20

© FB - 11.2023

21 of 38

Backup e ripristino - con phpMyAdmin

21

© FB - 11.2023

22 of 38

Esercitazione

22

23 of 38

Esercizio a (opzionale)�Ambiente di sviluppo e utilizzo di MySQL

23

© FB - 11.2023

24 of 38

Ambiente di sviluppo e utilizzo di MySQL

Clonare sul proprio account di github questo repository https://github.com/filippo-bilardo/LAMP

Avviare GitPod e collegarsi a mysql digitando il comando: mysql -u root

© FB - 11.2023

25 of 38

Ambiente di sviluppo e utilizzo di MySQL

Per uscire dalla console digitare il comando quit:

E’ possibile eseguire un comando dalla console mysql

oppure digitando il comando: mysql -u tuo_utente -p -e "SHOW DATABASES;"

© FB - 11.2023

26 of 38

Esercizio b�Creazione DB biblioteca

Potete usare indifferentemente Xampp o Gitpod

26

© FB - 11.2023

27 of 38

Creazione DB biblioteca

-- Creare un nuovo database

CREATE DATABASE IF NOT EXISTS biblioteca;

USE biblioteca;

-- Creare la tabella degli autori

CREATE TABLE IF NOT EXISTS autori (

id_autore INT AUTO_INCREMENT PRIMARY KEY,

nome_autore VARCHAR(50) NOT NULL,

nazionalita VARCHAR(50),

data_nascita DATE,

data_morte DATE

);

-- Inserire alcuni dati nella tabella degli autori

INSERT INTO autori (nome_autore, nazionalita, data_nascita, data_morte)

VALUES

('Jane Austen', 'Inglese', '1775-12-16', '1817-07-18'),

('George Orwell', 'Inglese', '1903-06-25', '1950-01-21'),

('Harper Lee', 'Americana', '1926-04-28', '2016-02-19');

-- Verifico il corretto inserimento dei dati

SELECT * FROM autori;

© FB - 11.2023

28 of 38

Creazione DB biblioteca

-- Creare la tabella delle categorie

CREATE TABLE IF NOT EXISTS categorie (

id_categoria INT AUTO_INCREMENT PRIMARY KEY,

nome_categoria VARCHAR(50) NOT NULL

);

-- Inserire alcuni dati nella tabella delle categorie

INSERT INTO categorie (nome_categoria)

VALUES

('Romanzo'),

('Saggio'),

('Fantascienza'),

('Mistero');

-- Verifico il corretto inserimento dei dati

SELECT * FROM categorie ;

© FB - 11.2023

29 of 38

Creazione DB biblioteca

-- Creare la tabella dei libri

CREATE TABLE IF NOT EXISTS libri (

id_libro INT AUTO_INCREMENT PRIMARY KEY,

titolo VARCHAR(100) NOT NULL,

id_autore INT,

id_categoria INT,

anno_pubblicazione INT,

FOREIGN KEY (id_autore) REFERENCES autori(id_autore),

FOREIGN KEY (id_categoria) REFERENCES categorie(id_categoria)

);

-- Inserire alcuni dati nella tabella dei libri

INSERT INTO libri (titolo, id_autore, id_categoria, anno_pubblicazione)

VALUES

('Orgoglio e pregiudizio', 1, 1, 1813),

('1984', 2, 3, 1949),

('Il buio oltre la siepe', 3, 1, 1960),

('Guerra e pace', 1, 1, 1869);

�-- Verifico il corretto inserimento dei dati

SELECT * FROM libri;

SHOW TABLES;

© FB - 11.2023

30 of 38

Esercizio c�Backup e ripristino

30

© FB - 11.2023

31 of 38

Backup e ripristino

Eseguire il backup del db biblioteca: �cd mysql�mysqldump -u root biblioteca > biblioteca_v10_231123.sql

Eliminare e ricreare il db biblioteca: �mysql -u root�DROP DATABASE biblioteca;�CREATE DATABASE biblioteca;�exit;

Ripristinare il db: �mysql -u root biblioteca < biblioteca_v10_231123.sql

Verifica: �mysql -u root

SHOW DATABASES;

USE biblioteca;

SHOW TABLES;

SELECT * FROM libri;

31

© FB - 11.2023

32 of 38

Esercizio e�Perfezionamento del db Biblioteca

32

© FB - 11.2024

33 of 38

Biblioteca v2.0

Disegnare lo schema ER utilizzando il software online https://erdplus.com/ del DB biblioteca di partenza e del nuovo DB perfezionato.

Scrivere le query DDL necessarie per modificare il primo db

Scrivere le query DML necessarie per verificare la corretta implementazione del DB

33

© FB - 10.2024

34 of 38

Valutazione

34

35 of 38

Consegna del lavoro

Si ricorda l’importanza di svolgere e consegnare i progetti assegnati.

35

© FB - 11.2023

36 of 38

Grazie per l’attenzione

36

37 of 38

Link/Riferimenti

37

© FB - 11.2023

38 of 38

Revisioni

v1.0 23/11/23 - versione iniziale�v1.1 10/11/24 - �

38