MySQL表名中的下划线会导致问题吗?

时间:2011-07-09 21:12:18

标签: mysql

表名中的下划线是否会影响性能或导致某些平台出现问题?

例如,user_profiles

使用userProfiles或者仅仅是个人偏好的问题会更好吗?

11 个答案:

答案 0 :(得分:44)

不。下划线在表名中是完全合法的。

MySQL文档中的这个page here告诉您允许使用哪些字符。

基本上:

  

不带引号的标识符中允许的字符:

     

ASCII:[0-9,a-z,A-Z $ _]
  扩展:U + 0080 .. U + FFFF

     

引用标识符中允许的字符:

     

ASCII:U + 0001 .. U + 007F
  扩展:U + 0080 .. U + FFFF

就我个人而言,我倾向于使用小写的a-z,偶尔的数字和下划线。 但正如@Vince所说,这只是个人偏好。

答案 1 :(得分:3)

我发现了一些MySQL漏洞的链接,这些漏洞已被标记为已关闭或无法重现有关下划线的信息。据我所知,没有问题 - 我总是使用下划线而不是骆驼箱,并且没有遇到任何问题。

答案 2 :(得分:3)

我看到的唯一问题是,当使用mysqlshow查看表的结构时,它似乎将下划线视为通配符,并且如果名称中有下划线,则仅返回匹配的表名。

如果名称中有下划线,我无法查看表的表结构。我今天早上刚刚发现并证实了这一点。

我知道MySQL版本4.0.18和4.1.22适用于较旧版本,而5.1.52适用于较新版本。也许这是在某处记录的(我还没有花时间去看),但对于其他人来说这可能是一件令人困惑的事情,所以当我在寻找有关问题的信息时遇到这个问题时,我决定提起它。 / p>

答案 3 :(得分:2)

使用下划线没有任何问题,但请记住,有时您需要逃避下划线,例如: My\_Table

答案 4 :(得分:2)

不,这非常好。事实上,它是MySQL最推荐的命名方式(基于他们为内部表命名的人!)。

请注意,在Microsoft Windows中命名默认的MySQL行为是为了小写表名。这可能会导致问题。 我不确定是什么导致这种情况。

但我个人更喜欢将我的表格命名为UserLikesPageUserPostComment,因为它反映了我的代码中的类名称和我不使用带MySQL的Windows

答案 5 :(得分:2)

你应该避免它。虽然它是MySQL文档中允许的字符,但它似乎可能会带来麻烦。例如,在MySQL 5.0& 5.1(可能是更高版本),对于涉及包含下划线的表名的查询,永远不会查询查询缓存。

答案 6 :(得分:2)

不,数据库中的下划线根本不会引起任何问题。 我的经验表明,识别数据库列中的任何单词更好。

如果我们使用' thisIsMyColumn'作为列名,它很容易编写, 但是' this_is_my_column'因为列名比前一个更易读。

答案 7 :(得分:1)

使用下划线没有问题。我认为这只是个人偏好。

答案 8 :(得分:1)

您只需在列名之前和之后添加重音符号(`)。例如:

CREATE TABLE USERS(
   `PERSON_ID` NVARCHAR(100),
   `FNAME` NVARCHAR(255), 
   `LNAME` NVARCHAR(255),
   PRIMARY KEY (`PERSON_ID`)
);

答案 9 :(得分:0)

在命名表时,我从未遇到过下划线问题。这只是个人偏好。

答案 10 :(得分:0)

许多数据库可视化工具(如SQuirreL SQL和DbVisualizer)也将下划线视为各种通配符,将表“匹配”分组到树中。例如,表“document_a”和相关表“document_a_details”,“document_a_history”。在DbVisualizer中,查看“document_a”表会显示所有三个表的列。

这通常不是问题,但可能令人困惑。例如,使用SQuirreL SQL的图形工具生成ERD将多个表中的列组合到一个表中,并为ERD中所有这些列的关系绘制连接器。这导致绘制的关系实际上不存在。

出于这个原因,我不会在表名中包含下划线。