
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
LIKECercare 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.