Usar comillas invertidas alrededor de los nombres de los campos
Después de leer un par de respuestas y comentarios sobre algunas preguntas de SQL aquí, y también de escuchar que un amigo mío trabaja en un lugar que tiene una política que los prohíbe, me pregunto si hay algo de malo en usar comillas invertidas alrededor de los nombres de los campos en MySQL. .
Eso es:
SELECT `id`, `name`, `anotherfield` ...
-- vs --
SELECT id, name, anotherfield ...
El uso de comillas invertidas le permite utilizar caracteres alternativos. En la redacción de consultas no es un gran problema, pero si uno supone que solo puede usar comillas invertidas, supongo que le permitirá salirse con la suya con cosas ridículas como
SELECT `id`, `my name`, `another field` , `field,with,comma`
Lo que, por supuesto, genera tablas con nombres incorrectos.
Si solo estás siendo conciso, no veo ningún problema en ello, lo notarás si ejecutas tu consulta como tal.
EXPLAIN EXTENDED Select foo,bar,baz
La advertencia generada que vuelve tendrá comillas invertidas y nombres de tabla completos. Entonces, si está utilizando funciones de generación de consultas y reescritura automática de consultas, las comillas invertidas harían que cualquier análisis de su código sea menos confuso.
Sin embargo, creo que, en lugar de exigir si se pueden usar comillas invertidas o no, deberían tener un estándar para los nombres. Resuelve problemas más "reales".
El único problema con las comillas invertidas es que no son compatibles con ANSI-SQL, por ejemplo, no funcionan en SQL Server.
Si existe la posibilidad de que tenga que trasladar su SQL a otra base de datos, utilice comillas dobles.
Para mí tiene mucho sentido usarlos en todo momento cuando se trata de nombres de campos.
- En primer lugar, una vez que adquieras el hábito, no está de más simplemente presionar la tecla de acento grave.
- En segundo lugar, para mí, hace que sea más fácil ver cuáles son exactamente los campos de su consulta y cuáles son las palabras clave o los métodos.
- Por último, le permite utilizar cualquier nombre de campo que desee al diseñar su tabla. A veces tiene mucho sentido nombrar un campo como "clave", "orden" o "valores"... todos los cuales requieren comillas graves al referirse a ellos.
Las comillas invertidas no son parte del ANSI SQL estándar. Del manual de mysql :
Si el modo SQL ANSI_QUOTES está habilitado, también se permite citar identificadores entre comillas dobles.
Entonces, si usas comillas invertidas y luego decides alejarte de MySQL, tienes un problema (aunque probablemente también tengas problemas mucho mayores)