182 votes

Utiliser des backticks autour des noms de champs

Après avoir lu quelques réponses et commentaires sur certaines questions SQL ici, et entendu qu'un ami travaille à un endroit où une politique les interdit, je me demande s'il y a quelque chose de mal à utiliser des backticks autour des noms de champs dans MySQL. .

C'est:

 SELECT `id`, `name`, `anotherfield` ...
-- vs --
SELECT id, name, anotherfield ...
 

157voto

Kent Fredric Points 35592

À l'aide de backticks vous permet d'utiliser des caractères de remplacement. Dans la requête à la rédaction de ses pas un problème, mais si l'on suppose que vous pouvez simplement utiliser backticks, je suppose qu'il vous permet de sortir avec des trucs comme ridicule

SELECT `id`, `my name`, `another field` , `field,with,comma`

Ce qui n'est bien sûr générer mal nommée tables.

Si vous êtes juste être concis, je ne vois pas de problème avec ça, vous aurez remarque si vous exécutez votre requête en tant que tel

EXPLAIN EXTENDED Select foo,bar,baz

L'généré avertissement qui apparaît dos à dos-tiques et les noms de table entièrement qualifiés. Donc, si vous êtes à l'aide de la génération de requêtes de fonctionnalités et automatisé de la ré-écriture des requêtes, des backticks ferait rien d'analyse de votre code moins confus.

Je pense cependant, au lieu de rendre obligatoire si vous pouvez ou non utiliser des backticks, ils devraient avoir un standard pour les noms. Il résout plus de "vrais" problèmes.

58voto

Le seul problème avec les backticks est qu'ils ne sont pas compatibles ANSI-SQL, par exemple, ils ne fonctionnent pas dans SQL Server.

Si vous deviez porter votre SQL sur une autre base de données, utilisez des guillemets doubles.

46voto

nickf Points 185423

Pour moi, il fait beaucoup de sens pour les utiliser à tout moment lorsque vous traitez avec des noms de champ.

  • Tout d'abord, une fois que vous prenez l'habitude, il ne fait pas de mal à vient de frapper le backtick clé.
  • Deuxièmement, pour moi, il est plus facile de voir exactement ce que sont les champs de votre requête, et ce sont des mots clés ou des méthodes.
  • Enfin, il vous permet d'utiliser n'importe quel champ nom que vous souhaitez lors de la conception de votre table. Parfois, il fait beaucoup de sens pour le nom d'un champ "clé", "ordre", ou de "valeurs"... qui ont tous besoin de backticks à leur sujet.

28voto

Greg Points 132247

Les backticks ne font pas partie du standard ANSI SQL. A partir du manuel mysql :

Si le mode SQL ANSI_QUOTES est activé, il est également possible de citer des identifiants entre guillemets

Donc, si vous utilisez des backticks et décidez ensuite de vous éloigner de MySQL, vous avez un problème (bien que vous ayez probablement des problèmes beaucoup plus importants)

9voto

Christian Lescuyer Points 8656

Il n'y a rien de mal si vous continuez à utiliser MYSQL, sauf peut-être le caractère visuel des requêtes. Mais ils permettent l'utilisation de mots-clés réservés ou d'espaces incorporés comme noms de tables et de colonnes. Ceci est un no-no avec la plupart des moteurs de bases de données et empêchera toute migration ultérieure.

En ce qui concerne la lecture facile, de nombreuses personnes utilisent des majuscules pour les mots-clés SQL, par exemple.

 SELECT some_fied, some_other_field FROM whatever WHERE id IS NULL;
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X