文件系统中的数据库和表标识符和名称之间存在对应关系。对于基本结构,MySQL 将每个数据库表示为数据目录中的一个目录,根据存储引擎的不同,每个表可能由相应数据库目录中的一个或多个文件表示。
对于数据和索引文件,磁盘上的确切表示是特定于存储引擎的。这些文件可能存储在数据库目录中,或者信息可能存储在单独的文件中。InnoDB数据存储在 InnoDB 数据文件中。如果您使用带有 的表空间InnoDB,则使用 您创建的特定表空间文件。
除 ASCII NUL ( X'00')外,数据库或表标识符中的任何字符都是合法的。MySQL 在创建数据库目录或表文件时对相应文件系统对象中的任何有问题的字符进行编码:
-
基本拉丁字母 (
a..zA..Z)、数字 (0..9) 和下划线 (_) 按原样编码。因此,它们是否区分大小写直接取决于文件系统功能。 -
具有大写/小写映射的字母表中的所有其他国家字母的编码如下表所示。代码范围列中的值是 UCS-2 值。
代码范围 图案 数字 用过的 没用过 块 00C0…017F [@][0…4][g…z] 5*20=100 97 3 Latin-1 补充剂 + 拉丁语扩展-A 0370…03FF [@][5…9][g…z] 5*20=100 88 12 希腊语和科普特语 0400…052F [@][g…z][0…6] 20*7=140 137 3 西里尔文 + 西里尔文补充 0530…058F [@][g…z][7…8] 20*2=40 38 2 亚美尼亚语 2160…217F [@][g…z][9] 20*1=20 16 4 数字表格 0180…02AF [@][g…z][a…k] 20*11=220 203 17 拉丁语扩展-B + IPA 扩展 1E00…1EFF [@][g…z][l…r] 20*7=140 136 4 拉丁语扩展附加 1F00…1FFF [@][g…z][s…z] 20*8=160 144 16 希腊语扩展 ………… [@][a…f][g…z] 6*20=120 0 120 预订的 24B6…24E9 [@][@][a…z] 26 26 0 封闭的字母数字 FF21…FF5A [@][a…z][@] 26 26 0 半角和全角形式 序列中的字节之一对字母进行编码。例如:
LATIN CAPITAL LETTER A WITH GRAVE被编码为@0G,而LATIN SMALL LETTER A WITH GRAVE被编码为@0g。这里的第三个字节(G或g)表示字母。(在不区分大小写的文件系统上,两个字母被视为相同。)对于某些块,例如 Cyrillic,第二个字节确定字母大小写。对于其他块,例如Latin1 Supplement,第三个字节确定字母大小写。如果序列中的两个字节是字母(如希腊扩展),则最左边的字母字符代表字母。所有其他字母字节必须为小写。
-
除了下划线 (
_)之外的所有非字母字符,以及来自没有大写/小写映射的字母表的字母(例如希伯来语)都使用十六进制表示进行编码,使用小写字母表示十六进制数字a..f:0x003F -> @003f 0xFFFF -> @ffff十六进制值对应于
ucs2双字节字符集中的字符值 。
在Windows中,如一些名字nul, prn以及aux是通过附加编码@@@当服务器创建相应的文件或目录名。这发生在所有平台上,以实现平台之间相应数据库对象的可移植性。




