Usar comillas invertidas alrededor de los nombres de los campos

Resuelto nickf asked hace 16 años • 11 respuestas

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 ...
nickf avatar Nov 04 '08 17:11 nickf
Aceptado

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".

Kent Fredric avatar Nov 04 '2008 10:11 Kent Fredric

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.

Alexander Kojevnikov avatar Nov 04 '2008 10:11 Alexander Kojevnikov

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.
nickf avatar Nov 04 '2008 10:11 nickf

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)

Greg avatar Nov 04 '2008 10:11 Greg