使用中文字符命名MySQL表

5

使用中文字符作为MySQL表名需要注意哪些预防措施?

先行致谢,

约翰


2
我可以问一下为什么要这样做吗?表名只供程序员使用。 - Pavel Radzivilovsky
1
据我所知,MySQL服务器5.0+应该能够处理这个问题(“允许的Unicode字符是基本多文种平面(BMP)中的字符。”--http://dev.mysql.com/doc/refman/5.0/en/identifiers.html)。不过客户端支持就不太确定了——我相信至少有一个假定ASCII标识符。 - Piskvor left the building
4
我认为一个中国程序员可能希望这样做。是的,编程通常是用一种伪英语完成的,但这不应该是必须的。 - dnagirl
SELECT * FROM 音信 WHERE 称号 = '鸭' .. 怎么样 >_____< - Lukman
3个回答

2

SQL支持定界符标识符,允许表格或列名包含 SQL 关键字、空格、标点符号、其他特殊字符或国际字符。

在 MySQL 中,使用反引号(或设置 ANSI_QUOTES SQL 模式来使用标准双引号)。

例子:

mysql> create table `桌子` (id serial);
mysql> show create table `桌子`\G
--------------
show create table `桌子`
--------------

*************************** 1. row ***************************
       Table: 桌子
Create Table: CREATE TABLE `桌子` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  UNIQUE KEY `id` (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
1 row in set (0.00 sec)

1

您只需要确保在任何地方使用反引号正确转义表名即可。除此之外,使用任何字符应该是相当安全的。

附注:每当非中文写作人员需要修改您的代码时,他们会因此而讨厌您。


2
我是一个不会说中文的白人美国人,但我想象不出为什么我会有问题。这不像是我第一次看到一个神秘和难以发音的表名。除非它是用中文写的,那我实际上可以通过谷歌搜索来解决它,所以这将是大多数我曾经参与的项目中的显着改进。 - Ken
2
问题是你无法打字,而需要一直复制和粘贴名称。 - Michal Čihař

1

虽然你可能可以在MySQL中安全地执行,但现实是,当使用第三方工具时,你可能会发现很难找到支持带有Unicode字符的表名的支持。这可能包括备份解决方案、开发语言和API等。虽然尝试成为全球化思考者很好,但在这种情况下,我可能会坚持使用“标准”表名。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接