Torna all'elenco degli articoli Articoli
Tempo di lettura: 9 minuti

Errori SQL da principianti che possono costarvi tempo

Per un analista di dati junior, imparare l'SQL può essere sia gratificante che impegnativo. Permette di comprendere i dati e di estrarre informazioni preziose, ma gli errori comuni di SQL spesso diventano ostacoli frustranti. In questa guida ho raccolto i più frequenti errori di SQL da principianti e come evitarli, per aiutarvi a risparmiare tempo e a migliorare le vostre competenze in modo più efficace.

All'inizio, imparare l'SQL era spesso frustrante a causa di piccoli errori che richiedevano ore di lavoro per essere risolti. Semplici sviste, come una virgola mancante o un alias fuori posto, potevano far deragliare completamente un'intera analisi e lasciarmi scoraggiato. Tuttavia, queste sfide si sono rivelate alla fine lezioni preziose, che mi hanno insegnato l'importanza della precisione e come scrivere codice SQL più pulito ed efficace. Potete leggere la mia storia in questo articolo.

Ho affrontato le stesse difficoltà che molti di voi stanno affrontando. Questa guida vi aiuterà a evitare gli errori più comuni, ma soprattutto a imparare da questi errori e ad acquisire una reale fiducia nelle vostre capacità SQL.

1. Dimenticare le virgole negli elenchi SELECT

Dimenticare di separare i nomi delle colonne con le virgole in un'istruzione SELECT è un errore frequente che porta a errori di sintassi. Questo errore si verifica perché SQL si aspetta che ogni colonna sia chiaramente definita e le virgole mancanti creano confusione nel parser.

Esempio:

SELECT first_name last_name FROM employees;

Errore: Manca la virgola tra first_name e last_name. SQL interpreterà first_name last_name come first_name AS last_name, con conseguente assegnazione involontaria dell'alias. Se si ha bisogno di avere sia first_name che last_name nei risultati, questo causerà un problema, poiché verrà recuperato solo first_name con un alias.

Soluzione: Ricontrollare sempre le dichiarazioni di SELECT per assicurarsi che tutti i nomi delle colonne siano separati da virgole. Prendete tempo quando scrivete una query e prendete in considerazione la possibilità di leggerla ad alta voce o di scomporla per vedere se ogni elemento è separato correttamente. Inoltre, si deve controllare il risultato della query per verificare che siano presenti tutte le colonne che si intendeva recuperare.

Esempio corretto:

SELECT first_name, last_name FROM employees;

Per saperne di più sulle istruzioni SELECT, leggete questo fantastico articolo di Kateryna Koidan: How Do You Write a SELECT Statement in SQL.

2. Tralasciare le virgolette

Quando si lavora con valori di testo, l'omissione delle virgolette può portare a errori di sintassi. SQL richiede che i valori di testo siano racchiusi tra apici singoli ( ' ) per differenziarli dai nomi delle colonne o da altre parole chiave. In altri linguaggi di programmazione, le stringhe sono spesso racchiuse tra doppi apici ( " ), ma in SQL i doppi apici sono utilizzati per gli identificatori (ad esempio, i nomi delle tabelle o delle colonne).

Esempio:

SELECT * FROM employees WHERE department = Sales;

Errore: Mancano le virgolette intorno a Sales. Senza virgolette, SQL interpreta Sales come un nome di colonna, il che può portare a un errore se tale colonna non esiste.

Soluzione: Utilizzare sempre le virgolette singole intorno ai valori di testo nelle query. Questo assicura che SQL tratti il valore come una stringa e non come una colonna o una parola chiave.

Esempio corretto:

SELECT * FROM employees WHERE department = 'Sales';

Un altro esempio:

SELECT * FROM employees WHERE department = "Sales";

Errore: L'uso di doppi apici invece di apici singoli fa sì che SQL interpreti "Sales" come un identificatore, il che può portare a un errore se non esiste una colonna o una tabella denominata Sales.

Soluzione: Utilizzare sempre gli apici singoli intorno ai valori di testo nelle query. Questo fa sì che SQL tratti il valore come una stringa e non come una colonna o una parola chiave.

3. Sbagliare i nomi di tabelle e colonne

Sbagliare i nomi delle tabelle o delle colonne è un errore di sintassi molto comune. SQL non perdona gli errori di battitura: se il nome della tabella o della colonna non corrisponde esattamente, si otterrà un errore o risultati errati.

Esempio:

SELECT first_nam FROM employees;

Errore: Errore di battitura first_name.

Soluzione: Controllare sempre due volte i nomi delle tabelle e delle colonne prima di eseguire le query. L'uso di un IDE o di un editor SQL che compila automaticamente i nomi può aiutare a ridurre questo tipo di errori. Si può anche consultare spesso lo schema del database per verificare i nomi corretti.

Esempio corretto:

SELECT first_name FROM employees;

4. Problemi di formattazione: Mantenere il codice pulito

Una cattiva formattazione delle query rende il codice difficile da leggere e da debuggare. Questo è particolarmente problematico quando le query diventano complesse, coinvolgendo più tabelle o condizioni. Un codice pulito è essenziale per una collaborazione e una risoluzione dei problemi efficienti.

Esempio:

SELECT first_name,last_name,department FROM employees WHERE department='Sales' AND salary>50000;

Errore: Difficile da leggere e da debuggare.

Soluzione: Formattare le query con rientri e interruzioni di riga. Questo aiuta a suddividere le diverse clausole, rendendo il codice più facile da capire a colpo d'occhio. Una formattazione corretta rende anche più facile individuare gli errori.

Esempio formattato:

SELECT first_name, last_name, department
FROM employees
WHERE department = 'Sales'
  AND salary > 50000;

Volete scrivere un buon codice SQL? Leggete 20 esempi di query SQL di base per principianti di Tihomir Babic.

5. Ordine errato delle dichiarazioni

SQL richiede un ordine specifico per le sue clausole, come ad esempio SELECT, FROM, WHERE e ORDER BY. Se l'ordine non è corretto, SQL genera un errore di sintassi o si comporta in modo imprevisto. Questo è un problema comune per i principianti, che non hanno ancora familiarità con la struttura delle istruzioni SQL.

Esempio:

FROM employees SELECT first_name, last_name;

Errore: Ordine errato di FROM e SELECT.

Soluzione: Familiarizzare con l'ordine corretto delle clausole SQL: SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY. Esercitarsi a scrivere le query in questa sequenza finché non diventa una seconda natura.

Esempio corretto:

SELECT first_name, last_name FROM employees;

Maggiori informazioni nell'articolo SQL Order of Operations di Ignacio L. Bisso.

6. Uso improprio degli alias

Gli alias sono utili per abbreviare i nomi di tabelle lunghe, ma un loro uso scorretto può portare a query confuse e illeggibili. Gli alias devono rendere le query più facili da capire, non più difficili.

Esempio:

SELECT a.first_name, a.last_name FROM employees a;

Problema: L'alias a non è descrittivo e rende la query più difficile da capire.

Soluzione: Utilizzare alias significativi che indichino chiaramente cosa rappresenta la tabella. Ad esempio, utilizzare emp per employees per mantenere la chiarezza.

Esempio corretto:

SELECT emp.first_name, emp.last_name FROM employees emp;

Altre risorse sugli alias in SQL:

7. Errori di sintassi

Gli errori di sintassi, come la dimenticanza di chiudere le parentesi o l'uso scorretto delle virgole, sono comuni tra i principianti. Questi errori possono far fallire l'esecuzione di una query o portare a risultati inaspettati.

Esempio:

SELECT COUNT(* FROM employees;

Errore: Manca la parentesi di chiusura dopo *. Le funzioni SQL come COUNT() richiedono parentesi di apertura e chiusura.

Soluzione: Utilizzare un IDE che evidenzi i problemi di sintassi durante la digitazione. In questo modo si possono individuare subito le parentesi mancanti o le virgole sbagliate. Rivedere sempre le query prima dell'esecuzione.

Esempio corretto:

SELECT COUNT(*) FROM employees;

Un altro esempio

SELECT * FROM employees WHERE department = 'Sales;

Errore: Manca la virgola singola di chiusura dopo Sales. Questo fa sì che SQL interpreti il resto della query come parte della stringa.

Soluzione: Utilizzare sempre coppie di apici singoli corrispondenti per i letterali di stringa.

Esempio corretto:

SELECT * FROM employees WHERE department = 'Sales';

Terzo esempio

SELECT name, order FROM orders;

Errore: order è una parola chiave riservata in SQL e non può essere utilizzata come nome di colonna senza un'adeguata gestione.

Soluzione: Se dovete usare una parola chiave riservata come nome di colonna, racchiudetela tra doppi apici ("order") o tra parentesi quadre ([order]), a seconda del vostro dialetto SQL. Tuttavia, è meglio evitare del tutto l'uso di parole riservate come identificatori.

Query corretta:

SELECT name, "order" FROM orders;

8. Logica delle unioni: Capire le basi

Le giunzioni errate spesso derivano da un'incomprensione del funzionamento dei diversi tipi di giunzione o da un'errata collocazione delle condizioni di filtraggio. Questo può portare a risultati errati, dati mancanti o insiemi di dati gonfiati.

Esempio:

SELECT * FROM orders JOIN customers;

Errore: Manca la condizione ON per la join. Senza una condizione di join, SQL non sa come abbinare le righe delle due tabelle.

Soluzione: Specificare sempre una condizione di unione utilizzando la clausola ON. Capire la differenza tra INNER JOIN, LEFT JOIN, RIGHT JOIN, e FULL JOIN, e usarli se necessario.

Esempio corretto:

SELECT * FROM orders
JOIN customers ON orders.customer_id = customers.customer_id;

Volete conoscere bene SQL JOIN? Consultate la mia Guida completa a SQL JOIN. Questo articolo tratta tutto ciò che c'è da sapere sull'utilizzo nella query di dati provenienti da più tabelle.

9. Gestione errata dei valori NULL

I valori NULL possono essere difficili da gestire e l'ipotesi che NULL corrisponda a zero o a una stringa vuota è un errore comune. Questo può portare ad aggregazioni errate o a conclusioni fuorvianti.

Esempio:

SELECT * FROM employees WHERE department != NULL;

Errore: NULL non può essere confrontato con gli operatori di confronto standard.

Soluzione: Utilizzare funzioni come IS NULL o IS NOT NULL per gestire correttamente i valori di NULL. Inoltre, utilizzare COALESCE() per sostituire NULL con un valore predefinito quando necessario.

Esempio corretto:

SELECT * FROM employees WHERE department IS NOT NULL;

Ulteriori informazioni sui NULL:

10. Assumere l'integrità dei dati

Presumere che i dati siano puliti senza convalidarli è rischioso. I dati possono contenere duplicati, valori NULL o formati errati, con conseguenti risultati errati delle query.

Esempio:

SELECT * FROM orders WHERE order_date > '2024-01-01';

Problema: Supponendo che tutte le date degli ordini siano nel formato corretto e che nessuna sia NULL. Se order_date è di tipo DATE, il database garantisce che i valori sono date valide, ma potrebbero esserci ancora valori NULL o casi limite inaspettati.

Soluzione: Convalidare i dati prima dell'analisi. Controllare che non ci siano valori NULL, duplicati e che il formato sia coerente. Utilizzare controlli o vincoli per garantire la qualità dei dati.

Esempio di convalida:

SELECT * FROM orders WHERE order_date IS NOT NULL AND order_date > '2024-01-01';

Evitare questi errori Per una migliore efficienza

Commettere errori è una parte naturale dell'apprendimento, ma capire ed evitare le comuni insidie dell'SQL vi aiuterà a diventare analisti di dati più efficaci. La scrittura di query leggibili, l'uso di nomi coerenti, la comprensione dei join e dei valori di NULL, la convalida dei dati e l'attenzione alla sintassi possono evitare ore di frustrazione e di rielaborazione.

Avere le risorse giuste può fare una differenza significativa nei vostri progressi. La traccia SQL dalla A alla Z su LearnSQL.it è pensata per fornire questa guida. Questa traccia comprende tutto ciò che serve, dai concetti fondamentali alle tecniche SQL avanzate, con esempi pratici ed esercizi che rendono l'apprendimento pratico e coinvolgente.

Errori di SQL da principianti

Inoltre, è possibile provarla senza alcun rischio. Basta creare un account gratuito e utilizzare la prova gratuita per verificare i primi esercizi. Scoprite come funziona la nostra piattaforma e se fa per voi, senza spendere un centesimo.

Iscrivetevi subito e iniziate a imparare SQL oggi stesso!