mysql列的命名规则是什么?



在MySQL表中,可以使用

来命名列吗?
  • 大写字母
  • UTF8字符

我还应该遵守哪些规则?

(MySQL5)

Yes, Yes, and Yes.

我喜欢在字段名之间加下划线,不要大写,但我不想引起一场口水仗。

不要在列名中使用特殊字符的另一个很好的理由是,您或其他人最终将不得不在您的应用程序中反复键入特殊字符。我会坚持使用标准的英文字母。

好列名:

account_id
user_id
first_name

错误的列名:

Ȩ̬̩̾͛ͪ̈́̀́͘ ̶̧̨̱̹̭̯ͧ̾ͬC̷̙̲̝͖ͭ̏ͥͮ͟Oͮ͏̮̪̝͍M̲̖͊̒ͪͩͬ̚̚͜Ȇ̴̟̟͙̞ͩ͌͝
uraniumType☢☢☢☢

权威来源:http://dev.mysql.com/doc/refman/5.0/en/identifiers.html

我知道…

  • 可以使用大写字母
  • 可以有空格,但是:

    "数据库、表和列名不能以空格字符结尾。"

不是100%确定UTF-8字符,但上面的网站确实说了

标识符使用Unicode (UTF-8)存储。这适用于存储在.frm文件中的表定义中的标识符,以及存储在mysql数据库的授权表中的标识符。授权表中标识符字符串列的大小以字符为单位测量。您可以使用多字节字符,而不会减少存储在这些列中的值所允许的字符数量,这在MySQL 4.1之前是不成立的。如前所述,允许的Unicode字符是基本多语言平面(Basic Multilingual Plane, BMP)中的字符。不允许使用补充字符。

来自mysql 8.0参考手册https://dev.mysql.com/doc/refman/8.0/en/identifiers.html:

"标识符在内部被转换为Unicode。它们可以包含以下字符:

未加引号的标识符中允许的字符:

ASCII: [0-9,a-z, a-z $_](基本拉丁字母,数字0-9,美元,下划线)

扩展:U+0080 ..U +飞行符

带引号的标识符中允许的字符包括完整的Unicode基本多语言平面(BMP),除了U+0000:

ASCII: U+0001 ..U + 007 f

扩展:U+0080 ..U +飞行符

ASCII NUL (U+0000)和补充字符(U+10000及以上)不允许在带引号或不带引号的标识符中使用。

标识符可以以数字开头,但除非加上引号,否则不能完全由数字组成。

数据库、表和列名不能以空格字符结尾。"

从允许字符列表中剔除的规则:(1) ASCII码:[0-9,a-z, a-z $_](基本拉丁字母,数字0-9,美元,下划线)(2)除U+0000外的全Unicode基本多语言平面(BMP)(3)标识符可以以数字开头,但除非加上引号,否则不能完全由数字组成。(4)数据库名、表名、列名不能以空格结尾

解释:Re: ASCII:参见维基百科文章中关于ASCII的ASCII字符图(https://en.wikipedia.org/wiki/ASCII#/media/File:USASCII_code_chart.png)显示,在0000(空字符)和007F(删除字符)之间是整个ASCII图,这意味着所有15个颜色x 7行都可以合法地用于列名,这显然与只允许标点符号是"$"one_answers"_"的规则相矛盾。例如,"#"位于_4 (x轴)2 (y轴),标识符为"0023"/"35"。但是"#"似乎被ascii规则排除在外(它是标点符号,不是美元或下划线),所以不清楚ascii列是否可以包含"#"。(顺便说一句,许多ASCII图表的标签不同,你找不到任何" _ _ _ _"数字索引的相关性,所以如果你找不到任何接近'0000'格式的东西,请寻找表索引的变化。)

Re: UNICODE BMP:由U+_ _ _ _索引,因此规则更容易实现。例如,"#"在完整的BMP中显示为U+0023,所以使用它应该是可以的(顺便说一句,U+000是"null"字符)。

因此,根据数据库中的排序规则,列名所允许的特殊字符似乎也有所不同;UTF排序法为列名中使用的特殊字符提供了更多的选择,这是在数据库中首选UTF排序法的另一个原因,除了它能够包含更多的国际字符之外,这在构建具有国际会员资格的网站时更有价值。

相关内容

  • 没有找到相关文章

最新更新