web-dev-qa-db-fra.com

Y a-t-il une bonne raison d'utiliser des majuscules pour les mots clés SQL?

La valeur par défaut semble être en majuscules, mais y a-t-il vraiment une raison d'utiliser des majuscules pour les mots clés? J'ai commencé à utiliser les majuscules parce que j'essayais simplement de faire correspondre ce que SQL Server me donne chaque fois que j'essayais de créer quelque chose, comme une nouvelle procédure stockée. Mais ensuite, je me sentais mal pour mon bébé (5e) doigt, qui doit toujours maintenir le Shift bouton, j'ai donc cessé d'utiliser les majuscules. Une raison pour laquelle je devrais revenir en majuscule?

Edit : Merci pour les réponses les gars. Je ne programmais pas encore à l'époque où COBOL était roi, donc je n'étais pas au courant de cela. Je m'en tiendrai aux minuscules à partir de maintenant.

120
Hertanto Lie

C'est juste une question de style, probablement à l'époque où les éditeurs ne faisaient pas de coloration de code.

J'avais l'habitude de préférer tous les majuscules, mais je penche maintenant vers tous les minuscules.

97
Mitch Wheat

PERSONNELLEMENT, JE N'AIME PAS MON SQL JELLING AT ME. IL ME RAPPELLE DE BASE OR COBOL.

Je préfère donc mon T-SQL en minuscules avec les noms d'objets de base de données MixedCase.

Il est beaucoup plus facile à lire et les littéraux et les commentaires ressortent.

138
Gordon Bell

SQL IS ANCIEN. MAJUSCULE IS CRIANT. IL A l'air étrange et semble laid).

Bien que cela puisse être vrai, aucun de ceux-ci ne traite des raisons particulières au langage SQL pour lesquelles les mots clés en majuscules sont une bonne convention.

Contrairement à de nombreux langages plus récents, SQL a un grand nombre de mots clés et repose sur la capacité du lecteur à distinguer les mots clés des identificateurs dans l'ordre pour analyser mentalement la syntaxe.

La réponse directe à votre question est donc plutôt une réponse à "pourquoi le lecteur de code SQL profite-t-il des mots clés en majuscules, alors que ce n'est pas le cas aussi vrai pour la plupart des langues modernes? ":

  • S'appuyer sur le maintien de mots clés dans sa tête est raisonnable pour de nombreux langages modernes, mais déraisonnable pour SQL ; il contient trop de mots clés et trop de variantes.

  • Compter sur indices de ponctuation est raisonnable pour la plupart des langages modernes, mais déraisonnable pour SQL ; il en a trop peu, en fonction de l'ordre précis des mots-clés pour indiquer la syntaxe.

  • Compter sur surligneurs automatiques pour distinguer les mots clés est raisonnable pour les langages modernes dans les cas habituels, mais ignore la réalité de ce que les surligneurs peuvent réaliser pour SQL . La plupart ne couvrent pas tous les mots-clés de toutes les variantes de SQL, et peu importe, SQL est lu fréquemment et régulièrement dans des contextes où un surligneur n'aidera pas.

Ce sont quelques-unes des raisons, spécifiques à SQL, que le lecteur de code SQL est mieux servi par normalisation en majuscules pour les mots clés, et en utilisant uniquement des majuscules non majuscules (c.-à-d. Minuscules ou mixtes) pour identifiants.

La mise en évidence peut parfois aider. Mais seulement si le surligneur sait que vous avez SQL; et nous avons très souvent SQL dans un contexte où l'éditeur/formateur ne peut raisonnablement pas savoir qu'il s'agit de SQL. Les exemples incluent les requêtes en ligne, la documentation du programmeur et les chaînes de texte dans le code d'une autre langue. La même chose n'est pas vraie partout aussi souvent que pour des langages comme Python ou C++; oui, leur code apparaît parfois à ces endroits, mais ce n'est pas systématiquement le cas avec le code SQL.

En outre, le lecteur utilise généralement un surligneur qui ne connaît qu'un sous-ensemble des mots clés utilisés par votre implémentation SQL spécifique. De nombreux mots clés moins courants ne seront pas mis en évidence, sauf par un qui connaît intimement votre variante SQL. Ainsi, le lecteur, même s'il utilise un surligneur, a toujours besoin d'un moyen plus direct de distinguer les mots clés dans toute instruction SQL moyennement complexe.

Ainsi, le lecteur aura fréquemment - et l'écrivain ne peut pas savoir à l'avance quand cela sera - besoin de l'aide du contenu de l'instruction SQL lui-même, pour savoir ce que l'écrivain entend comme mot-clé et ce qui est destiné comme identifiant. Ainsi, le contenu SQL lui-même doit distinguer les mots clés pour le lecteur, et l'utilisation de mots clés en majuscules est la manière conventionnelle et utile de le faire cette.

72
bignose

Les exemples de Gordon Bell ne sont pas exactement corrects; généralement, seuls les mots clés sont mis en évidence, pas la requête entière. Son deuxième exemple ressemblerait à:

SELECT name, id, xtype, uid, info, status, 
base_schema_ver, replinfo, parent_obj, crdate, 
ftcatid, schema_ver, stats_schema_ver, type, 
userstat, sysstat, indexdel, refdate, version, 
deltrig, instrig, updtrig, seltrig, category, cache
FROM sysobjects
WHERE category = 0
AND xtype IN ('U', 'P', 'FN', 'IF', 'TF')
ORDER BY 1

Je trouve cela beaucoup plus facile à lire, car les mots clés se démarquent davantage. Même avec la coloration syntaxique, je trouve que l'exemple non capitalisé est beaucoup plus difficile à lire.

Dans mon entreprise, nous allons un peu plus loin avec notre formatage SQL.

SELECT      name, id, xtype, uid, info, status, 
            base_schema_ver, replinfo, parent_obj, crdate, 
            ftcatid, schema_ver, stats_schema_ver, type, 
            userstat, sysstat, indexdel, refdate, version, 
            deltrig, instrig, updtrig, seltrig, category, cache
FROM sysobjects
LEFT JOIN systhingies ON
    sysobjects.col1=systhingies.col2
WHERE category = 0
    AND xtype IN ('U', 'P', 'FN', 'IF', 'TF')
ORDER BY 1
32
davidtbernal

IL Y A EU UN TEMPS LORSQUE LA PLUPART DES PERSONNES DID N'ONT PAS LA POSSIBILITE DE CODER QUELQUE CHOSE AU-DELA DES LETTRES MAJUSCULES PARCE QUE LE CODAGE PERTINENT (ASCII) N'A PAS ENCORE INVENTE. SEULEMENT SIX BITS ÉTAIENT DISPONIBLES . TANT QUE SQL IS DES LETTRES DE CAS PLUS RÉCENTES ET PLUS FAIBLES N'ÉTAIENT PAS ENCORE PRATIQUES DANS LA PROGRAMMATION).

NOTEZ QUE CERTAINES PERSONNES RÉCLAMENT QUE LA BASE DE DONNÉES OBTIENDRA UN SENS D'URGENCE ET EXÉCUTERA PLUS RAPIDEMENT VOS QUESTIONS.

30
Lukas Eder

Moins de 10% des lettres du texte que nous lisons sont en majuscules. Par conséquent, nos cerveaux sont plus enclins à reconnaître les lettres minuscules que les majuscules. Des études ont montré qu'il faut plus de temps pour lire le texte en majuscules. Voici un exemple:

http://www.guardian.co.uk/media/mind-your-language/2010/oct/04/new-york-street-signs-capitals

L'exemple ci-dessus, je pense, souligne que même lorsque vous ne parlez que d'un ou deux mots, cela fait une différence.

21
AaronLS

C'est parce que SQL est un langage tellement ancien ( 1974 ) que lorsqu'il a été conçu, la plupart des claviers n'avaient pas de lettres minuscules! La documentation linguistique reflétait simplement la technologie de l'époque.

Il n'y a aucune bonne raison d'utiliser des majuscules. Je déteste personnellement utiliser des majuscules pour les mots clés SQL. Il est plus difficile à lire et est ridicule de nos jours et inutile; le langage SQL est défini pour être insensible à la casse.

16
Bohemian

Les majuscules peuvent améliorer la visibilité des mots clés, mais vous pouvez compenser avec la mise en évidence et l'indentation du code.
Nous utilisons des minuscules car l'éditeur de requêtes et d'autres outils font des merveilles dans l'édition de code t-sql, et nous ne voyons pas la nécessité de torturer l'auriculaire.

8
Ovidiu Pacurar

Monkey see, monkey do for me. Correspondance de modèle - si je le fais comme je l'ai vu, la structure des clauses s'aligne mentalement plus facilement.

8
dkretz

Les majuscules sont moins lisibles. Le contour de tous les mots a la forme de boîtes; il n'y a ni descendants ni ascendants. FTW en minuscules!

7
Lance Fisher

Je le trouve plus lisible. Idem pour avoir une nouvelle ligne pour le début de chaque clause et mettre en retrait entre les clauses.

5
Mark Bostleman

L'une des raisons pour continuer à utiliser la capitalisation est que lorsque vous (ou quelqu'un d'autre) visualisez du code dans quelque chose comme le bloc-notes, cela facilite la lecture. c'est-à-dire que vous pouvez facilement faire la différence entre les "mots clés" et les noms de table, SP, udf, etc.

2
CPU_BUSY

Essayez un produit de formatage (j'utilise SQL Prompt/SQL Refactor de Red Gate). Vous pouvez définir comment vous souhaitez que la capitalisation fonctionne, et votre code sera toujours mis en forme de manière cohérente. Reposez votre petit doigt et laissez l'ordinateur faire le travail pour vous.

2
gfrizzle

Autre que la conformité pour des raisons de conformité, non. Bien que ce soit un sujet très subjectif, je préfère utiliser la casse mixte pour tous les SQL. Le SQL est beaucoup plus facile à lire, et rien n'est perdu dans les IDE modernes où les mots-clés sont tous codés par couleur de toute façon.

1
Charles Bretana

L'intellisense/autocompletion dans Microsoft SQL Server Management Studio autorise les majuscules ou les minuscules pour les mots réservés, mais les appels de fonctions majuscules comme MAX (), SUM ().

Néanmoins, l'analyseur permet toujours de traiter les versions minuscules de max () et sum ().

Cela implique une ambivalence quant à la nature de l'exécution et n'est donc qu'une question de préférence personnelle.

1
Bill

Je n'aime pas tout ce qui est écrit en majuscules (et je déteste taper encore plus de majuscules), mais je n'ai pas réussi à me convaincre d'aller contre la communauté. Comme d'habitude, Vim et ses packages associés sont la solution à tant de problèmes:

http://www.vim.org/scripts/script.php?script_id=305

Tapez simplement comme d'habitude et il mettra automatiquement les mots-clés en majuscule. Je n'ai pas utilisé toutes les incantations SQL obscures mais cela ne m'a pas encore échoué.

0
Ferdinand van Wyk