2010-08-09 13 views
7

En MySQL, ¿es necesario rodear las tablas con el tickmark? A menudo he visto fragmentos de código que usan las marcas, pero no he encontrado un caso donde no rodear un nombre de tabla con las marcas hace algo diferente que con.MySQL - ¿Necesidad del nombre de la tabla circundante con `(tickmarks)?


Parece que el marco con el que trabajo automáticamente analiza nombres de palabras reservadas con marcas.

+2

una pregunta tan trivial no debe responderse antes de aceptar algunas anteriores. –

+0

Intente aportar respuestas a algunas de mis preguntas anteriores. – ina

+1

@Col. Metralla - Siempre es mejor evitar controversias. Nadie puede obligar a otros a hacer algo, a menos que el proveedor tenga su propio consentimiento/impulso. ** Trate de ser diplomático, pero puedo entender que no siempre es posible seguirlo. ** –

Respuesta

8

Las marcas están allí para distinguir los nombres de tabla (o columna!) De las palabras reservadas de SQL. Por ejemplo, sin las marcas, una tabla o columna llamada update podría entrar en conflicto con el comando SQL update.

Por supuesto, es mejor no nombrar tablas y columnas con palabras reservadas, pero si transfiere una aplicación a un nuevo motor de base de datos (o posiblemente incluso una nueva versión de MySQL), podría tener una conjunto de palabras reservadas, por lo que puede haber roto su aplicación de todos modos. Los tickmarks son su seguro contra este tipo de oops.

+4

Los backticks son específicos de MySQL, sin embargo, otros motores de DB utilizan diferentes citas para identificadores, como SQL Server's [TableName] o ANSI SQL's "TableName" (comillas dobles). – cHao

+0

Hmm. Por lo tanto, una característica que podría ser una ayuda útil para la portabilidad es, en cambio, específica de la implementación. –

+1

@Brian: Heh, sí, ahora que cHao dijo eso, he mirado alrededor un poco más cerca. MySQL no es el único DBS que admite backticks, pero es el principal. Cada DBS parece preferir hacerlo de otra manera. Todos parecen aceptar identificadores simples de comillas dobles, pero algunos necesitan una opción particular o modo explícitamente activado para poder hacerlo. –

2

Solo es necesario si el nombre de su tabla está compuesto por caracteres que no son de "palabra" (es decir, cualquier cosa además de letras, números y guiones bajos), o pasa a ser lo mismo que una palabra clave en MySQL. Nunca es "malo" citar el nombre, pero es malo no hacerlo cuando es necesario, por lo que muchos programas que generan consultas MySQL serán conservadores y citarán el nombre; es más fácil de esa manera.

+1

Me encantaría saber por qué todos han sido vindicados sin ningún comentario, ni siquiera un "nyah!" : P – cHao

+0

ask @ col-shrapnel ... el tipo me acosa, baja votos mis publicaciones y las respuestas de otros, y se queja de que debería aumentar mi aceptación. La ironía es que nunca contestó ninguna de mis preguntas. Y su porcentaje de aceptación es solo del 50% – ina

+0

Parece que todos los que participaron en esta pregunta se volvieron rechazados una vez ... ¡lo cual yo diría que es un poco duro! – Dexter

2

Una vez trabajé en un trabajo donde tenían una base de datos de "ubicaciones". Lo llamaron estados. y tenía todo en tablas cada tabla fue nombrada por código de estado. entonces Missouri era MO, y Arkansas era AR.

Varios códigos de estado también son palabras de reserva OR (Oregon), IN (Indiana) y ON (Ontario) ... No sé exactamente un estado.

Aunque creo que hay mejores formas de organizar sus datos de base de datos, hay casos en que las personas quieren nombrar las cosas como una palabra reservada. Este es un ejemplo donde las `` marcas mantienen el código funcionando.

Cuestiones relacionadas