Après avoir lu quelques réponses et des commentaires sur certaines questions SQL ici, et également appris qu'un de mes amis travaille dans un endroit qui a une politique qui les interdit, je me demande s'il n'y a rien de mal à utiliser des backticks autour des noms de champs dans MySQL .
C'est:
SELECT `id`, `name`, `anotherfield` ...
-- vs --
SELECT id, name, anotherfield ...
Utiliser des backticks vous permet d'utiliser des caractères alternatifs. En écriture de requête, ce n’est pas un problème, mais si l’on suppose que vous pouvez simplement utiliser des backticks, je suppose que cela vous permet de vous en sortir avec des choses ridicules comme
SELECT `id`, `my name`, `another field` , `field,with,comma`
Ce qui bien sûr génère des tables mal nommées.
Si vous êtes juste concis, je ne vois pas de problème avec cela, vous remarquerez que si vous exécutez votre requête en tant que telle
EXPLAIN EXTENDED Select foo,bar,baz
Les avertissements générés qui reviendront auront des noms de table qualifiés complets et . Par conséquent, si vous utilisez des fonctionnalités de génération de requête et une réécriture automatique des requêtes, les backticks rendraient tout ce qui serait plus difficile à analyser votre code.
Je pense cependant que, au lieu d’indiquer si vous pouvez ou non utiliser des backticks, ils devraient avoir une norme pour les noms. Cela résout plus de «vrais» problèmes.
Le seul problème des backticks est qu’ils ne sont pas compatibles ANSI-SQL, par exemple. ils ne fonctionnent pas dans SQL Server.
S'il y a une chance que vous deviez porter votre code SQL vers une autre base de données, utilisez des guillemets doubles.
Pour moi, il est très logique de les utiliser à tout moment pour traiter les noms de champs.
Les backticks ne font pas partie de la norme ANSI SQL. De le manuel mysql :
Si le mode SQL ANSI_QUOTES est activé, il est également possible de citer identifiants entre guillemets
Donc, si vous utilisez des backticks et que vous décidez ensuite de vous éloigner de MySQL, vous rencontrez un problème (bien que vous ayez probablement aussi de plus gros problèmes).
Il n’ya rien de mal à continuer d’utiliser MYSQL, à part 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 en tant que noms de tables et de colonnes. Ceci est un non-non avec la plupart des moteurs de base de données et empêchera toute migration à une date ultérieure.
Pour faciliter la lecture, beaucoup de gens utilisent des majuscules pour les mots-clés SQL, par exemple.
SELECT some_fied, some_other_field FROM whatever WHERE id IS NULL;
Si vous me le demandez, il faut toujours utiliser des piqûres. Mais il y a certaines raisons pour lesquelles une équipe peut préférer ne pas les utiliser.
Avantages:
Désavantages:
Il est beaucoup plus facile de rechercher dans votre base de code quelque chose d’arrière-plan. Supposons que vous ayez une table nommée event
. grep -r "event" *
peut renvoyer des centaines de résultats. grep -r "\`event\`" *
retournera tout ce qui fait probablement référence à votre base de données.
Pour autant que je sache, le but ultime de l'utilisation de backticks est de vous permettre d'utiliser des noms qui coïncident avec des mots clés réservés. Donc, si le nom n'entre pas en conflit avec un mot clé réservé, je ne vois aucune raison d'utiliser des backticks. Mais ce n'est pas une raison pour les interdire non plus.
Simple chose à propos de backtick `` est utilisé pour dénoter un identifiant comme nom_bdd, nom_table, etc., et guillemet simple '' , guillemet double "" pour les littéraux de chaîne, alors que "" sert à imprimer tel quel et '' affiche la variable value hold ou, dans un autre cas, imprime le texte qu'il a.
i.e 1.-> use `model`;
here `model` is database name not conflict with reserve keyword 'model'
2- $age = 27;
insert into `tbl_people`(`name`,`age`,`address`) values ('Ashoka','$age',"Delhi");
here i used both quote for all type of requirement. If anything not clear let me know..
La principale utilisation des backticks (`) dans SQL est de les utiliser dans les cas où vous allez les rappeler dans les clauses à venir. En tout temps, il est recommandé d'utiliser des guillemets doubles ("").
Par exemple
SELECT CONCAT(Name, ' in ', city, ', ', statecode) AS `Publisher and Location`,
COUNT(ISBN) AS "# Books",
MAX(LENGTH(title)) AS "Longest Title",
MIN(LENGTH(title)) AS "Shortest Title"
FROM Publisher JOIN Book
ON Publisher.PublisherID = Book.PublisherID WHERE INSTR(name, 'read')>0
GROUP BY `Publisher and Location`
HAVING COUNT(ISBN) > 1;
Dans l’instruction ci-dessus, voyez-vous comment Publisher and Location
est utilisé à nouveau dans la clause GROUP BY
.
À la place d'utiliser
GROUPE PAR Nom, ville, code de la route
Je viens d'utiliser
GROUP BY
Publisher and Location
Ce n'est que lorsque de telles situations se produisent qu'il est utile d'utiliser des backtick. Dans tous les autres cas, il est recommandé d'utiliser des guillemets doubles.
si vous utilisez des noms de champs comme valeurs par défaut mysql ou mssql, par exemple "status", vous devez utiliser des backticks ("select status
from table_name" ou "select id of table_name où status
= 1") . erreurs ou ne fonctionne pas la requête.