Je crois savoir que la norme SQL prévoit l'insensibilité à la casse. Je ne pense pas que les bases de données suivent complètement la norme, cependant.
MySQL dispose d'un paramètre de configuration dans le cadre de son "mode strict" (un ensemble de plusieurs paramètres qui rendent MySQL plus conforme aux normes) pour les noms de table sensibles ou non à la casse. Indépendamment de ce paramètre, les noms de colonnes sont toujours insensibles à la casse, bien que je pense que cela affecte la façon dont les noms de colonnes sont affichés. Je pense que ce paramètre est valable pour toutes les bases de données de l'instance du SGBDR, mais je fais des recherches aujourd'hui pour le confirmer (et j'espère que la réponse est non).
J'aime beaucoup mieux la façon dont Oracle gère cela. En SQL classique, les identificateurs tels que les noms de tables et de colonnes sont insensibles à la casse. Toutefois, si, pour une raison quelconque, vous souhaitez vraiment obtenir une casse explicite, vous pouvez placer l'identificateur entre guillemets doubles (qui sont très différents dans Oracle SQL des guillemets simples utilisés pour contenir les données de la chaîne). Ainsi :
SELECT fieldName
FROM tableName;
interrogera nom du champ de nom de l'onglet mais
SELECT "fieldName"
FROM "tableName";
interrogera nom du champ de nom de la table .
Je suis presque sûr que vous pourriez même utiliser ce mécanisme pour insérer des espaces ou d'autres caractères non standard dans un identifiant.
Dans cette situation, si pour une raison ou une autre vous trouviez que les noms de tables et de colonnes explicites étaient souhaitables, vous pouviez le faire, mais je vous déconseille fortement de le faire.
Lorsque j'utilisais Oracle au quotidien, ma convention était la suivante : dans le code, je mettais tous les mots-clés SQL Oracle en majuscules et tous les identifiants en minuscules. Dans la documentation, je mettais tous les noms de tables et de colonnes en majuscules. C'était très pratique et lisible de pouvoir faire cela (bien que parfois pénible de taper autant de majuscules dans le code -- je suis sûr que j'aurais pu trouver une fonction d'éditeur pour m'aider, ici).
À mon avis, MySQL est particulièrement mauvais pour ce qui est des différences entre les plateformes. Nous devons être en mesure de vider des bases de données sous Windows et de les charger sous UNIX, et le faire est un désastre si l'installateur sous Windows a oublié de mettre le SGBDR en mode sensible à la casse. (Pour être juste, une partie de la raison pour laquelle c'est un désastre est que nos codeurs ont pris la mauvaise décision, il y a longtemps, de se fier à la sensibilité à la casse de MySQL sur UNIX). Les personnes qui ont écrit le programme d'installation de MySQL pour Windows l'ont rendu très pratique et conforme à Windows, et c'était formidable de pouvoir donner aux gens une case à cocher pour dire "Voulez-vous activer le mode strict et rendre MySQL plus conforme aux normes ?". Mais il est très pratique pour MySQL de s'écarter de manière aussi significative du standard, puis d'aggraver les choses en s'écartant de son propre standard de facto sur différentes plateformes. Je suis sûr que sur les différentes distributions Linux, cela peut être encore aggravé, car les empaqueteurs des différentes distributions ont probablement parfois incorporé leurs propres paramètres de configuration MySQL préférés.
Ici Il y a une autre question de l'OS qui permet de discuter si la sensibilité à la casse est souhaitable dans un SGBDR.
1 votes
Sensible à la casse dans Mysql en utilisant la requête select where
0 votes
SQL-92, niveau intermédiaire, avait des majuscules obligatoires en SQL.