2012-04-26 711 views
10

Tengo una breve pregunta sobre la consulta de MySQL.¿Son realmente necesarias las citas de tablas y columnas en una consulta MySQL?

¿Qué es correcto?

SELECT * FROM Persons WHERE Year='1965' 

O

SELECT * FROM `Persons` WHERE `Year` = '1965' 

¿Es esta una elección personal o se trata de algo lo que es realmente malo?

+0

Gracias por todas las respuestas y por la edición. Tan pronto como pueda, aceptaré una respuesta (¿pero qué respuesta debo aceptar?) – JochemQuery

+0

Tiendo a no utilizar palos a menos que nombre una tabla como "tabla" (que de lo contrario causaría un error). Hace la consulta más limpia. La excepción es cuando está usando nombres de tabla/columna generados dinámicamente. – HappyTimeGopher

Respuesta

6

¿Qué pasa si usted tiene una tabla llamada table, o una columna llamada where. Estas son palabras clave reservadas. Si los utiliza en sus consultas sin palos, producirían una consulta no válida (por supuesto, el uso de palabras clave reservadas es una mala práctica).

SELECT something FROM table WHERE where = 1; 

vs

SELECT something FROM `table` WHERE `where` = 1; 
+1

Todas las respuestas son bastante buenas. ¡Pero este es el mejor para mí! Gracias. – JochemQuery

7

Ambos son correctos, pero el segundo SIEMPRE será aceptado, incluso cuando utilice palabras clave o funciones como while y NOW() que normalmente se considerarían operadores.

2

Ambos métodos son correctos, la comilla simple indica arranques y finales de una cadena.

Por lo tanto, si, por ejemplo, utiliza un alias de columna con un espacio como Birth year, tendrá que utilizar las comillas simples como esta;

... WHERE `Birth year` = `1965` 

Sin embargo, no se recomienda utilizar solo más de una palabra en los alias.

Y como @Cody Caughlan dijo también cuando usas MySQL reserved words.

Cuestiones relacionadas