MySQL da Riga di Comando — Tutorial 3: Inserimento Dati e Query SELECT e WHERE

Tutorial mysql da riga di comando by Antonio Parisi
In questo terzo modulo della serie dedicata a MySQL da riga di comando, facciamo un passo avanti fondamentale: dopo aver creato il database ecommerce e progettato le tabelle nel capitolo precedente, impareremo a popolarle con dei dati di prova e a interrogarle utilizzando le istruzioni SQL di base come SELECT, WHERE, ORDER BY e LIMIT, osservando la risposta restituita direttamente dal terminale.

1. Inserimento dei Dati di Test (INSERT INTO)

Dopo aver avviato MySQL tramite la Shell di XAMPP e selezionato il database di lavoro (USE ecommerce;), popoliamo la tabella clienti con dei record di prova utilizzando il dominio fittizio @esempio.com:

SQL

INSERT INTO clienti (nome, cognome, email) VALUES
('Mario', 'Rossi', 'mario.rossi@esempio.com'),
('Giuseppe', 'Verdi', 'giuseppe.verdi@esempio.com'),
('Laura', 'Bianchi', 'laura.bianchi@esempio.com'),
('Elena', 'Neri', 'elena.neri@esempio.com');

Outuput previsto

Query OK, 4 rows affected (0.01 sec)
Records: 4  Duplicates: 0  Warnings: 0
Inseriamo ora degli ordini di test all’interno della tabella ordini, facendo riferimento agli identificativi dei clienti appena creati:

SQL

INSERT INTO ordini (id_cliente, importo_totale) VALUES
(1, 149.99),
(1, 49.50),
(2, 299.00),
(3, 85.00);

Outuput previsto

Query OK, 4 rows affected (0.01 sec)
Records: 4  Duplicates: 0  Warnings: 0

2. Selezione dei Dati con SELECT

L’istruzione SELECT permette di recuperare i dati dalle tabelle. Per visualizzare tutti i record e tutte le colonne della tabella clienti:

SQL

SELECT * FROM clienti;

Outuput previsto

+------------+----------+---------+----------------------------+---------------------+
| id_cliente | nome     | cognome | email                      | data_registrazione  |
+------------+----------+---------+----------------------------+---------------------+
|          1 | Mario    | Rossi   | mario.rossi@esempio.com    | 2026-08-06 10:00:00 |
|          2 | Giuseppe | Verdi   | giuseppe.verdi@esempio.com | 2026-08-06 10:00:00 |
|          3 | Laura    | Bianchi | laura.bianchi@esempio.com  | 2026-08-06 10:00:00 |
|          4 | Elena    | Neri    | elena.neri@esempio.com     | 2026-08-06 10:00:00 |
+------------+----------+---------+----------------------------+---------------------+
4 rows in set (0.00 sec)
Per estrarre soltanto le colonne nome ed email, riducendo lo spazio occupato a schermo:

SQL

SELECT nome, email FROM clienti;

Outuput previsto

+----------+----------------------------+
| nome     | email                      |
+----------+----------------------------+
| Mario    | mario.rossi@esempio.com    |
| Giuseppe | giuseppe.verdi@esempio.com |
| Laura    | laura.bianchi@esempio.com  |
| Elena    | elena.neri@esempio.com     |
+----------+----------------------------+
4 rows in set (0.00 sec)

3. Filtrare i Risultati con la Clausola WHERE

La clausola WHERE consente di applicare filtri per estrarre unicamente i record che soddisfano determinate condizioni.
Esempio 1: Ricerca per valore esatto
Trovare gli ordini effettuati dal cliente con id_cliente = 1:

SQL

SELECT * FROM ordini WHERE id_cliente = 1;

Outuput previsto

+-----------+------------+---------------------+----------------+
| id_ordine | id_cliente | data_ordine         | importo_totale |
+-----------+------------+---------------------+----------------+
|         1 |          1 | 2026-08-06 10:05:00 |         149.99 |
|         2 |          1 | 2026-08-06 10:05:00 |          49.50 |
+-----------+------------+---------------------+----------------+
2 rows in set (0.00 sec)
Esempio 2: Confronto numerico
Trovare gli ordini con un importo totale superiore a 100 euro:

SQL

SELECT * FROM ordini WHERE importo_totale > 100.00;

Outuput previsto

+-----------+------------+---------------------+----------------+
| id_ordine | id_cliente | data_ordine         | importo_totale |
+-----------+------------+---------------------+----------------+
|         1 |          1 | 2026-08-06 10:05:00 |         149.99 |
|         3 |          2 | 2026-08-06 10:05:00 |         299.00 |
+-----------+------------+---------------------+----------------+
2 rows in set (0.00 sec)
Esempio 3: Ricerca parziale con LIKE
Cercare i clienti il cui cognome inizia con la lettera “R”:

SQL

SELECT * FROM clienti WHERE cognome LIKE 'R%';

Outuput previsto

+------------+-------+---------+-------------------------+---------------------+
| id_cliente | nome  | cognome | email                   | data_registrazione  |
+------------+-------+---------+-------------------------+---------------------+
|          1 | Mario | Rossi   | mario.rossi@esempio.com | 2026-08-06 10:00:00 |
+------------+-------+---------+-------------------------+---------------------+
1 row in set (0.00 sec)

4. Ordinare e Limitare i Risultati (ORDER BY e LIMIT)

Per organizzare la risposta del server si utilizza ORDER BY, specificando l’ordinamento decrescente (DESC) o crescente (ASC).
Ordinare gli ordini dal più caro al meno caro:

SQL

SELECT * FROM ordini ORDER BY importo_totale DESC;

Outuput previsto

+-----------+------------+---------------------+----------------+
| id_ordine | id_cliente | data_ordine         | importo_totale |
+-----------+------------+---------------------+----------------+
|         3 |          2 | 2026-08-06 10:05:00 |         299.00 |
|         1 |          1 | 2026-08-06 10:05:00 |         149.99 |
|         4 |          3 | 2026-08-06 10:05:00 |          85.00 |
|         2 |          1 | 2026-08-06 10:05:00 |          49.50 |
+-----------+------------+---------------------+----------------+
4 rows in set (0.00 sec)
Estrarre unicamente l’ordine con l’importo più alto combinando ORDER BY e LIMIT 1:

SQL

SELECT * FROM ordini ORDER BY importo_totale DESC LIMIT 1;

Outuput previsto

+-----------+------------+---------------------+----------------+
| id_ordine | id_cliente | data_ordine         | importo_totale |
+-----------+------------+---------------------+----------------+
|         3 |          2 | 2026-08-06 10:05:00 |         299.00 |
+-----------+------------+---------------------+----------------+
1 row in set (0.00 sec)

5. Suggerimento Pratico per la Riga di Comando

Se la tabella contiene molte colonne e l’output a griglia risulta disordinato o va a capo nel terminale, termina la query con \G al posto del punto e virgola ; per visualizzare i campi in verticale:

SQL

SELECT * FROM clienti WHERE id_cliente = 1 \G

Outuput previsto

*************************** 1. row ***************************
        id_cliente: 1
              nome: Mario
           cognome: Rossi
             email: mario.rossi@esempio.com
data_registrazione: 2026-08-06 10:00:00
1 row in set (0.00 sec)
Nel prossimo Tutorial 4, ci occuperemo delle operazioni di modifica e cancellazione sicura con UPDATE e DELETE.
Antonio Parisi

Antonio Parisi

Cloud Solution Architect



Torna in alto