CodeGym /Corsi /SQL SELF /Errori tipici nell'uso di SELECT

Errori tipici nell'uso di SELECT

SQL SELF
Livello 3, Lezione 3
Disponibile

Come in qualsiasi altro ambito della programmazione, anche lavorando con SELECT gli errori sono inevitabili. Anche i developer SQL più esperti ogni tanto beccano dei bug nelle query. Oggi vediamo gli errori tipici nell'uso di SELECT, perché succedono e come evitarli.

SQL è un linguaggio che segue regole sintattiche molto precise. Una virgola in più o in meno, un operatore dimenticato o l’ordine sbagliato delle parole – e il database ti mostra subito la "bandiera rossa".

Parole chiave mancanti

L’errore più comune è semplicemente dimenticare una delle parole chiave obbligatorie. Per esempio, proviamo a eseguire questo comando:

SELECT name age FROM students;

Manca qualcosa, vero? Qui manca la parola chiave , tra i campi name e age. Sistemiamo l’errore:

SELECT name, age FROM students;

Il motivo di questi errori è chiaro: o stai ancora imparando a scrivere query, o vai troppo di fretta. SQL non ama la fretta!

Errori nei nomi di colonne e tabelle

I comandi SQL sono sensibili ai nomi corretti di colonne e tabelle. Proviamo questa query:

SELECT naem, agge FROM studnts;

Il database vede questa roba come nonsense: le colonne naem e agge, come anche la tabella studnts, semplicemente non esistono. Sistemiamo:

SELECT name, age FROM students;

Consiglio: Se non sei sicuro dei nomi, usa il comando \d table_name in psql oppure l’interfaccia di pgAdmin per controllare la struttura della tabella.

Virgolette dimenticate

I nomi di colonne e tabelle che contengono spazi o altri caratteri speciali devono essere racchiusi tra virgolette doppie. Esempio:

SELECT "first name", age FROM students;

Se dimentichi le virgolette, SQL non capisce cosa intendevi e ti dà errore.

Errori logici: quando tutto funziona, ma non come ti aspettavi

A volte le query vanno a buon fine, ma il risultato è "strano". Questi sono errori logici. Sono più subdoli, perché il database non ti dice che qualcosa è andato storto.

  1. Uso sbagliato degli operatori di confronto. Immagina di voler selezionare tutti gli studenti con più di 18 anni:
SELECT * FROM students WHERE age > 18;

Ora proviamo una query con un altro operatore:

SELECT * FROM students WHERE age = 18;

Questa query restituisce solo quelli che hanno esattamente 18 anni. Se ti aspettavi di includere tutti gli studenti sopra i 18, è un errore logico.

Consiglio: Controlla bene questi dettagli. Se hai dubbi, inizia con selezioni piccole (tipo con LIMIT).

Errori nel combinare le condizioni

Vediamo un esempio:

SELECT * FROM students WHERE age > 18 OR grade = 'A' AND city = 'New York';

Questa query può restituire studenti che non vivono a New York. Perché? Perché l’ordine degli operatori logici è questo: SQL prima gestisce AND, poi OR. Riscriviamo la query con le parentesi:

SELECT * FROM students WHERE (age > 18 OR grade = 'A') AND city = 'New York';

Ora è tutto giusto.

Mancanza di filtri

A volte una query tipo SELECT * FROM students; restituisce una valanga di dati, anche se cercavi qualcosa di specifico, tipo studenti di una certa città. Soluzione? Aggiungi filtri con WHERE:

SELECT * FROM students WHERE city = 'New York';

Problemi di performance

Quando le query lavorano con tanti dati, diventa fondamentale ottimizzarle. Vediamo gli errori tipici che rallentano tutto.

Le query tipo SELECT * sono comode in fase di sviluppo, ma nella vita reale fanno male alle performance. Se ti servono solo certe colonne – specificale.

-- Male:
SELECT * FROM students;

-- Bene:
SELECT name, age FROM students;

Perché è importante? SELECT * tira fuori tutte le colonne, anche se non ti servono. Questo aumenta la quantità di dati trasferiti.

Consigli pratici: come evitare errori

Le query SQL possono essere più affidabili se segui qualche dritta:

  • Controlla la sintassi prima di eseguire: usa una IDE o i suggerimenti di pgAdmin, che possono segnalare errori in anticipo.
  • Inizia con selezioni piccole. Aggiungi LIMIT 5 o LIMIT 10 per fare test.
  • Usa i commenti per capire cosa fa la query:
    -- Seleziona tutti gli studenti con più di 18 anni
    SELECT name, age FROM students WHERE age > 18;
    
  • Testa con dati diversi per verificare che la logica sia corretta.
  • Non abusare di SELECT *, soprattutto su tabelle grandi.

Trappole ai colloqui

Uno degli esercizi più gettonati nei colloqui SQL è trovare errori in una query. Per esempio:

SELECT name FROM employees WHERE salary > 50000 ORDER BY department;

Chiediti: questa query è logicamente corretta? Se usi ORDER BY, probabilmente vuoi ordinare per stipendio:

SELECT name FROM employees WHERE salary > 50000 ORDER BY salary DESC;

Lavorare con SELECT è la base di SQL, e gli errori qui sono inevitabili all’inizio. Ma col tempo scriverai query con la stessa facilità con cui mandi messaggi su WhatsApp, perché i veri programmatori si allenano non solo sui gatti, ma anche sui database. 😉

2
Compito
SQL SELF, livello 3, lezione 3
Bloccato
Correzione di un errore di sintassi
Correzione di un errore di sintassi
2
Compito
SQL SELF, livello 3, lezione 3
Bloccato
Errore logico nella query con filtro e ordinamento
Errore logico nella query con filtro e ordinamento
1
Sondaggio/quiz
Ordinamento dei dati, livello 3, lezione 3
Non disponibile
Ordinamento dei dati
Ordinamento dei dati
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION