表名中的下划线是否会影响性能或导致某些平台出现问题?
例如,user_profiles
使用userProfiles
或者仅仅是个人偏好的问题会更好吗?
答案 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行为是为了小写表名。这可能会导致问题。 我不确定是什么导致这种情况。
但我个人更喜欢将我的表格命名为UserLikesPage
,User
和PostComment
,因为它反映了我的代码中的类名称和我不使用带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中所有这些列的关系绘制连接器。这导致绘制的关系实际上不存在。
出于这个原因,我不会在表名中包含下划线。