
# 标识符说明
**M-Compatibility标识符的命名需要遵守如下规范：**
- 标识符支持默认使用反引号（\`\`）：
  - 当sql_mode设置为ANSI_QUOTES时标识符同时支持反引号（\`\`）和双引号（""）。
  
  - 特殊情况下可以使用引号规避特殊字符报错。
   

- 无引号标识符中允许的字符：
  - ASCII：字母（a\~z、A\~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不区分大小写。
   
 
