更新时间:2025-09-12 GMT+08:00
分享

标识符说明

M-Compatibility标识符的命名需要遵守如下规范:

  • 标识符支持默认使用反引号(``):
    • 当sql_mode设置为ANSI_QUOTES时标识符同时支持反引号(``)和双引号("")。
    • 特殊情况下可以使用引号规避特殊字符报错。
  • 无引号标识符中允许的字符:
    • ASCII:字母(a-zA-Z)、数字(0-9)、下划线(_)、美元符号($)、井号(#)。
    • 扩展:U+0080~U+00FF。
    • 只允许字母、数字、下划线以及U+0080~U+00FF扩展字符作为开头。
  • 有引号标识符中允许的字符:
    • ASCII:U+0001~U+007F。
    • 扩展:U+0080~U+FFFF。
  • 标识符不支持使用U+0000或U+10000以上编码的字符。
  • 标识符支持以数字开头,但不能全部由数字组成,除非在引号标识符中。

M-Compatibility标识符的大小写敏感情况如下:

  • 在GUC参数lower_case_table_names为0时,完全区分大小写的标识符有库、Schema、表、视图,在创建和使用的过程中,严格区分大小写。
  • 在GUC参数lower_case_table_names为1时,库、Schema、表(包括auto_increment自增列生成的序列名)、视图,在创建和使用的时候不区分大小写,且在反引号或双引号包裹以上对象时也不区分大小写。
  • 列名存储区分大小写,比较时候不区分大小写。列名存储在内部按照真实的大小写存储,而正常使用则不区分大小写。
  • 其余标识符:
    • 在内部是全小写的,如果标识符使用双引号(需要设置SQL_MODE为ANSI_QUOTES)或反引号,则区分大小写。
    • 如果指定Schema或者Table修饰时,在GUC参数lower_case_table_names为0时,Schema和Table是区分大小写的;在GUC参数lower_case_table_names为1时,Schema和Table不区分大小写。

相关文档