Guida ai comandi MySQL: dalle basi per principianti a intermedie, CRUD, utenti, backup e risoluzione dei problemi

目次

1. Introduzione

MySQL è un database relazionale open-source ampiamente utilizzato tra i sistemi di gestione del database (DBMS). È particolarmente popolare per le applicazioni web e i sistemi aziendali. In questo articolo, spiegheremo in dettaglio i comandi essenziali di MySQL e struttureremo il contenuto in modo che gli utenti principianti e intermedi possano imparare in modo fluido.

1.1 Cos’è MySQL?

MySQL è un software utilizzato per gestire un database relazionale (RDB). I dati sono memorizzati in tabelle e li manipoli utilizzando SQL (Structured Query Language). MySQL ha le seguenti caratteristiche:

  • Open-source e gratuito per chiunque utilizzarlo
  • Prestazioni veloci e leggere
  • Compatibile con molti linguaggi di programmazione (come PHP, Python e Java)
  • Adatto per gestire database su larga scala

1.2 Vantaggi dell’apprendimento dei comandi MySQL

Per utilizzare MySQL in modo efficiente, è importante comprendere i comandi di base. I principali vantaggi includono:

  • Gestione dati più efficiente : Padroneggiando i comandi SQL, puoi recuperare, aggiornare ed eliminare i dati rapidamente
  • Automazione del flusso di lavoro : Utilizzando script, puoi automatizzare le operazioni sul database
  • Gestione errori più fluida : Quando si verificano problemi, puoi risolverli con i comandi SQL appropriati

1.3 Cosa imparerai in questo articolo

Questo articolo spiega in dettaglio i seguenti argomenti:

  • Operazioni di base di MySQL (avvio, connessione e operazioni sul database)
  • Aggiunta, recupero, aggiornamento ed eliminazione dei dati (operazioni CRUD)
  • Gestione utenti e impostazioni dei privilegi
  • Comandi utili e risoluzione dei problemi

Successivamente, passeremo attraverso ogni sezione in ordine. Iniziamo con le operazioni di base di MySQL.

2. Operazioni di base di MySQL (amichevoli per principianti)

2.1 Avvio e connessione a MySQL

2.1.1 Avvio di MySQL

Poiché MySQL funziona come un programma server, devi avviare il server per primo. Il metodo di avvio varia a seconda del sistema operativo.

Avvio su Linux / macOS

Su Linux e macOS, puoi avviare MySQL utilizzando il comando systemctl.

sudo systemctl start mysql

Controlla se MySQL è in esecuzione

sudo systemctl status mysql

Se vedi “active (running)”, MySQL è in esecuzione normalmente.

Avvio su Windows

Su Windows, MySQL viene spesso eseguito come servizio, quindi puoi utilizzare il comando net start.

net start mysql

Oppure, se stai utilizzando XAMPP, apri il Pannello di controllo XAMPP e fai clic su “Start” per “MySQL”.

2.1.2 Connessione a MySQL

Per connetterti a MySQL, utilizza il comando mysql. Il comando di connessione di base è il seguente:

mysql -u username -p
Connessione come utente root

In modo predefinito, l’utente root è configurato come amministratore. Puoi connetterti con il seguente comando:

mysql -u root -p

Dopo aver premuto Invio, ti verrà chiesto di inserire la password. Se inserisci la password corretta, puoi accedere a MySQL.

Connessione a un host specifico

Per connetterti a un server MySQL remoto, utilizza l’opzione -h.

mysql -h hostname -u username -p

Ad esempio, per connetterti a un server MySQL su 192.168.1.100, scrivi:

mysql -h 192.168.1.100 -u root -p
Connessione specificando un numero di porta

La porta predefinita di MySQL è 3306. Se è stata modificata, puoi specificarla con l’opzione -P.

mysql -h 192.168.1.100 -P 3307 -u root -p

2.2 Comandi di base di MySQL

Una volta connesso a MySQL, prova a eseguire alcuni comandi di base.

2.2.1 Controllo della versione di MySQL

Per controllare la versione di MySQL che stai utilizzando attualmente, esegui il seguente comando:

SELECT VERSION();

2.2.2 Controllo del database corrente

Per verificare quale database è attualmente selezionato, esegui:

SELECT DATABASE();

Se non è selezionato alcun database, viene restituito NULL.

2.2.3 Elenco dei database disponibili

Per elencare i database esistenti in MySQL, utilizza:

SHOW DATABASES;

2.3 Errori comuni e soluzioni

2.3.1 Errore “Access denied”

Esempio di errore:

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
Come risolvere:
  1. Verifica che la password sia corretta
  2. Controlla e reimposta i privilegi di root
    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'NEW_PASSWORD';
    FLUSH PRIVILEGES;
    

2.3.2 Errore “Impossibile connettersi al server MySQL su ‘localhost’”

Esempio di errore:

ERROR 2002 (HY000): Can't connect to MySQL server on 'localhost' (10061)
Come risolvere:
  1. Verifica se MySQL è in esecuzione (systemctl status mysql)
  2. Riavvia MySQL
    sudo systemctl restart mysql
    

2.4 Riepilogo

In questa sezione abbiamo spiegato come avviare MySQL e connettersi ad esso.

3. Operazioni sul Database

In MySQL, crei un database per gestire i dati e poi organizzi le informazioni inserendo tabelle al suo interno. In questa sezione spiegheremo in dettaglio le operazioni di base come creare, selezionare, elencare ed eliminare i database.

3.1 Creazione di un Database

Per creare un database in MySQL, usa il comando CREATE DATABASE.

3.1.1 Crea un database di base

Se esegui il seguente comando SQL, potrai creare un nuovo database chiamato my_database.

CREATE DATABASE my_database;
Messaggio quando la creazione ha successo
Query OK, 1 row affected (0.01 sec)

3.1.2 Quando provi a creare un database che esiste già

Se il database esiste già, vedrai un errore simile al seguente:

ERROR 1007 (HY000): Can't create database 'my_database'; database exists

Per evitare questo errore, è utile aggiungere l’opzione IF NOT EXISTS.

CREATE DATABASE IF NOT EXISTS my_database;

Quando esegui questo comando, il database viene creato solo se non esiste già.

3.2 Elencare i Database

Per verificare quali database esistono sul server MySQL corrente, usa il comando SHOW DATABASES.

SHOW DATABASES;

Esempio di output:

+--------------------+
| Database          |
+--------------------+
| information_schema |
| my_database       |
| mysql             |
| performance_schema |
| sys               |
+--------------------+

Nota: i database di sistema come mysql e information_schema sono necessari per l’amministrazione di MySQL.

3.3 Selezionare un Database

In MySQL, devi selezionare il database che vuoi utilizzare. Per specificare un database, esegui il comando USE.

USE my_database;
Messaggio quando ha successo
Database changed

Per confermare quale database è attualmente selezionato, usa il comando seguente:

SELECT DATABASE();

Esempio di output:

+------------+
| DATABASE() |
+------------+
| my_database |
+------------+

3.4 Eliminare un Database

Per eliminare un database di cui non hai più bisogno, usa il comando DROP DATABASE.

DROP DATABASE my_database;

3.4.1 Note importanti prima dell’eliminazione

  • Attenzione: eliminare un database rimuove tutti i dati!
  • Per evitare errori accidentali, puoi anche aggiungere IF EXISTS.
    DROP DATABASE IF EXISTS my_database;
    

Questo comando termina senza errori anche se my_database non esiste.

3.5 Errori Comuni e Correzioni

3.5.1 Errore “Access denied for user”

Esempio di errore:

ERROR 1044 (42000): Access denied for user 'user_name'@'localhost' to database 'my_database'
Come risolvere
  • Concedi i privilegi usando il comando GRANT
    GRANT ALL PRIVILEGES ON my_database.* TO 'user_name'@'localhost';
    FLUSH PRIVILEGES;
    

3.5.2 Errore “Can’t drop database”

Esempio di errore:

ERROR 1010 (HY000): Error dropping database (can't rmdir './my_database', errno: 39)
Come risolvere
  • Riavvia MySQL
    sudo systemctl restart mysql
    
  • Elimina prima tutte le tabelle in my_database, poi esegui DROP DATABASE.

3.6 Riepilogo

In questa sezione hai imparato come creare, selezionare, elencare ed eliminare i database.

4. Operazioni sulle Tabelle

Dopo aver creato un database, è necessario creare tabelle al suo interno per organizzare i dati. Una tabella è come una griglia per memorizzare i dati, composta da colonne e righe (record).

In questa sezione, spiegheremo in dettaglio le operazioni di base come creare, verificare, elencare ed eliminare tabelle.

4.1 Creating a Table

Per creare una tabella, usa il comando CREATE TABLE. Se esegui il seguente SQL, verrà creata una tabella chiamata users.

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50) NOT NULL,
    email VARCHAR(100) UNIQUE NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

4.1.1 Explanation of each element when creating a table

  • id INT AUTO_INCREMENT PRIMARY KEY
  • La colonna id è un intero (INT), si incrementa automaticamente (AUTO_INCREMENT) ed è impostata come chiave primaria (PRIMARY KEY).
  • name VARCHAR(50) NOT NULL
  • La colonna name è una stringa (VARCHAR) fino a 50 caratteri ed è obbligatoria a causa di NOT NULL.
  • email VARCHAR(100) UNIQUE NOT NULL
  • La colonna email è una stringa fino a 100 caratteri, e il vincolo UNIQUE impedisce indirizzi email duplicati.
  • created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
  • La colonna created_at imposta automaticamente la data/ora corrente come valore predefinito.
Message when successful
Query OK, 0 rows affected (0.02 sec)

4.2 Checking Table Structure

Per verificare la struttura di una tabella creata, usa DESC o SHOW COLUMNS.

DESC users;

Or

SHOW COLUMNS FROM users;

Example output:

+------------+--------------+------+-----+-------------------+----------------+
| Field      | Type         | Null | Key | Default           | Extra          |
+------------+--------------+------+-----+-------------------+----------------+
| id         | int(11)      | NO   | PRI | NULL              | auto_increment |
| name       | varchar(50)  | NO   |     | NULL              |                |
| email      | varchar(100) | NO   | UNI | NULL              |                |
| created_at | timestamp    | YES  |     | CURRENT_TIMESTAMP |                |
+------------+--------------+------+-----+-------------------+----------------+

4.3 Listing Tables

Per elencare le tabelle presenti nel database corrente, esegui il comando SHOW TABLES.

SHOW TABLES;

Example output:

+------------------+
| Tables_in_mydb   |
+------------------+
| users            |
| products         |
| orders           |
+------------------+

4.4 Deleting a Table

Per eliminare una tabella di cui non hai più bisogno, usa il comando DROP TABLE.

DROP TABLE users;

4.4.1 Important notes when deleting a table

  • Attenzione: eliminare una tabella rimuove permanentemente i dati!
  • Per evitare errori durante l’eliminazione, aggiungi IF EXISTS.
    DROP TABLE IF EXISTS users;
    
Message when successful
Query OK, 0 rows affected (0.01 sec)

4.5 Resetting Table Data (Delete All Rows)

Se vuoi mantenere la struttura della tabella ma eliminare solo i dati al suo interno, usa TRUNCATE TABLE.

TRUNCATE TABLE users;
Difference from DROP TABLE
  • DROP TABLE elimina la tabella stessa.
  • TRUNCATE TABLE elimina solo i dati e mantiene la struttura della tabella.

4.6 Common Errors and Fixes

4.6.1 “Table already exists” error

Example error:

ERROR 1050 (42S01): Table 'users' already exists
How to fix
  • Verifica le tabelle esistenti
    SHOW TABLES;
    
  • Crea la tabella con IF NOT EXISTS
    CREATE TABLE IF NOT EXISTS users (
        id INT AUTO_INCREMENT PRIMARY KEY,
        name VARCHAR(50) NOT NULL,
        email VARCHAR(100) UNIQUE NOT NULL,
        created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
    );
    

4.6.2 “Unknown table” error

Example error:

ERROR 1051 (42S02): Unknown table 'users'
How to fix
  • Verifica se la tabella esiste usando SHOW TABLES;
  • Se non esiste, aggiungi IF EXISTS
    DROP TABLE IF EXISTS users;
    

4.7 Riepilogo

In questa sezione, abbiamo coperto le operazioni di base sulle tabelle MySQL: creazione, verifica e cancellazione delle tabelle.