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

SQL è sensibile alle maiuscole e alle minuscole?

SQL è sensibile alle maiuscole e alle minuscole? La domanda sembra semplice e si potrebbe pensare che si tratti di un sì o di un no. Tuttavia, la risposta dipende da molteplici fattori. Vediamo le possibili risposte.

Innanzitutto, questa domanda può essere intesa in diversi modi. Quale parte di SQL si sta chiedendo? Si tratta di parole chiave (ad esempio, SELECT, WHERE, ecc.), di nomi di tabelle e colonne o di valori nelle colonne? Quale sistema di gestione dei database (DBMS) avete in mente?

Per rispondere a questa domanda nel modo più ampio possibile, esamineremo la sensibilità alle maiuscole e minuscole delle diverse parti di SQL. All'interno di ogni parte, parleremo dei diversi DBMS.

Prima di iniziare, assicuriamoci di essere in sintonia con il vocabolario. Se alcuni termini dei paragrafi precedenti vi sembrano strani e poco familiari, potete consultare l'articolo Termini SQL che i principianti dovrebbero conoscere, che vi guida attraverso il vocabolario SQL di base, come tabella, database e DBMS.

Le parole chiave SQL sono sensibili alle maiuscole e alle minuscole?

Cominciamo da qui. Le parole chiave in SQL non fanno distinzione tra maiuscole e minuscole per i DBMS più diffusi. Al computer non interessa se si scrive SELECT, select o sELeCt; quindi, in teoria, si può scrivere come si vuole.

Purtroppo, nella pratica le cose sono un po' diverse. Se state pensando di lavorare professionalmente con SQL, dovete considerare che si tratta di collaborare con altri ingegneri. Ciò significa che dovrete leggere il codice degli altri.

Per questo motivo, è necessario stabilire una convenzione che preveda di scrivere le parole chiave in tutte le lettere maiuscole, di scrivere in maiuscolo solo la prima lettera o di lasciare tutto in minuscolo. In questo modo, tutti leggeranno e capiranno più velocemente il codice. Il più delle volte le parole chiave SQL sono scritte in maiuscolo.

Questo vale anche se siete studenti che collaborano con altri studenti. Potreste avere corsi diversi con progetti diversi, e passare da un corso all'altro è meno dispendioso in termini di tempo con uno stile di codice chiaro.

Se siete ancora all'inizio del vostro percorso di programmazione, potreste voler imparare la sintassi SQL, poiché l'apprendimento della sintassi comprende anche l'apprendimento delle parole chiave.

I nomi delle tabelle e delle colonne SQL sono sensibili alle maiuscole e alle minuscole?

Il prossimo punto riguarda i nomi delle tabelle e delle colonne. Questo argomento è un po' più complicato.

Purtroppo, i diversi DBMS funzionano in modo diverso. Inoltre, il comportamento dipende dal sistema operativo (Windows, macOS o Linux). L'utente può anche influire sulla sensibilità alle maiuscole.

Non tratteremo l'argomento in dettaglio, poiché esistono molti modi per personalizzare il comportamento. Ci concentreremo sui tre database relazionali più popolari, tutti insegnati su LearnSQL.it: PostgreSQL, MySQL e MS SQL Server. Per ulteriori informazioni, consultate la documentazione del vostro DBMS.

Cominciamo con PostgreSQL. In questo database, i nomi delle tabelle sono case-insensitive. Questo comportamento non dipende dal sistema operativo. Tuttavia, è possibile modificarlo facilmente aggiungendo le doppie virgolette (") al nome della tabella. Questo costringe PostgreSQL a essere sensibile alle maiuscole e minuscole per i nomi delle tabelle. Lo stesso vale per i nomi delle colonne.

Poi c'è MySQL. Per impostazione predefinita, dipende dal sistema operativo e dalla sensibilità alle maiuscole. Ciò significa che MySQL è insensibile alle maiuscole in Windows e macOS, mentre è sensibile alle maiuscole nella maggior parte dei sistemi Linux. Tuttavia, è possibile modificare il comportamento cambiando la collation.

Ultimo ma non meno importante: MS SQL Server. Per impostazione predefinita, è insensibile alle maiuscole e minuscole e, come nel caso di MySQL, è possibile cambiare questo comportamento modificando l'impostazione di collation.

Ricordate: anche se potete usare casi diversi per il vostro codice, non significa che dobbiate farlo. Nei vostri progetti, mantenete uno stile di codice chiaro, in modo che sia più facile da leggere e da navigare. In PostgreSQL e MySQL, i nomi delle tabelle sono spesso scritti in minuscolo (o più precisamente in snake_case). In MS SQL Server, la pratica più comune è quella di usare PascalCase.

Le differenze di sensibilità alle maiuscole e minuscole possono causare problemi nell'esecuzione delle query. Per questo motivo, è necessario comprendere i messaggi di errore che si possono ottenere. Se siete alle prime armi con l'SQL, vi consigliamo di leggere l'articolo 6 Common SQL Syntax Mistakes All Learners Make (6 errori comuni di sintassi SQL che tutti gli studenti commettono), che vi aiuterà a capire quali sono gli errori più comuni che si verificano all'inizio del percorso in SQL.

I valori delle colonne in SQL sono sensibili alle maiuscole e alle minuscole?

Per ultimo, ma non meno importante, parliamo dei valori delle colonne. Anche in questo caso le differenze dipendono dal DBMS. Fortunatamente, però, questo è più semplice.

Per impostazione predefinita, PostgreSQL esegue un confronto tra stringhe sensibile alle maiuscole e minuscole. Ciò significa che WHERE column = 'abc' restituisce TRUE solo per i valori della colonna esattamente uguali a 'abc'. Lo stesso vale per l'operatore LIKE. column LIKE 'ABC' o column LIKE 'aBc' restituiranno FALSE per tale confronto. Per fare un confronto senza distinzione tra maiuscole e minuscole, usare la parola chiave ILIKE; ad esempio, column ILIKE 'aBc' e column ILIKE 'ABC' restituiscono entrambi TRUE per 'abc'.

Al contrario, MySQL e MS SQL Server hanno un comportamento insensibile alle maiuscole e alle minuscole per impostazione predefinita. Ciò significa che WHERE column = 'abc' restituisce TRUE per, ad esempio, 'abc', 'ABC', o 'aBc'. Lo stesso vale per l'operatore LIKE.

In tutti e tre i DBMS, è possibile cambiare l'impostazione di collation per modificare il comportamento predefinito.

In questa sezione sono stati menzionati i concetti di LIKE e di confronto tra stringhe. Se non conoscete SQL, questi termini potrebbero confondervi. Se non ne avete mai sentito parlare o non vi sentite sicuri nel loro utilizzo, potete consultare il corso SQL per principianti corso. Il corso vi guida attraverso le basi dell'SQL, compreso il confronto tra stringhe.

SQL è sensibile alle maiuscole e alle minuscole?

SQL è sensibile alle maiuscole e alle minuscole? Come si può vedere, dipende da cosa si intende con questa domanda. Non esiste una semplice risposta affermativa o negativa. Tuttavia, ora conoscete la risposta generale a questa domanda. Inoltre, sapete che in caso di dubbio dovete consultare la documentazione del DBMS che state utilizzando, poiché ogni database può avere comportamenti predefiniti diversi.

Se questo articolo vi ha fornito informazioni che non conoscevate, vi consigliamo di dare un'occhiata al nostro SQL dalla A alla Z bundle. Questi corsi vi guidano attraverso l'SQL e vi permettono di navigare comodamente tra molti articoli e conversazioni sull'SQL.

E ricordate: anche se alcuni concetti sono difficili da capire all'inizio, con un po' di pazienza si può imparare tutto. Buona fortuna e buon apprendimento!