相关的文档10bet官方网站 下载本手册 本手册摘录

9.2.3标识符的区分大小写

在MySQL中,数据库对应于数据目录中的目录。数据库中的每个表对应于数据库目录中的至少一个文件(并且可能更多,具体而言,具体取决于存储引擎)。触发器也对应于文件。因此,底层操作系统的壳体敏感性在数据库,表和触发名称的壳体敏感性中播放了一部分。这意味着这些名称在Windows中不区分大小写,但在大多数UNIX中区分大小写。一个值得注意的例外是麦斯科座,它是基于UNIX的,但使用不区分大小写的默认文件系统类型(HFS +)。但是,MacOS还支持UFS卷,这些卷在任何UNIX上都很敏感。看第1.7.1节“MySQL扩展标准SQL”.的lower_case_table_names系统变量还会影响服务器如何处理标识符案例灵敏度,如本节稍后所述。

笔记

虽然数据库,表和触发器名称在某些平台上不区分大小写,但您不应在同一语句中使用不同的案例引用其中一个。以下陈述不起作用,因为它指的是桌子my_table并作为my_table

mysql>从my_table中选择*,其中my_table.col = 1;

分区、子分区、列、索引、存储例程、事件和资源组名在任何平台上都不区分大小写,列别名也不区分大小写。

但是,日志文件组的名称区分大小写。这与标准SQL不同。

默认情况下,表别名在UNIX上区分大小写,但Windows或MacOS上不太敏感。以下陈述不适用于UNIX,因为它指的是别名一种并作为一种

mysql>选择col_name.tbl_name作为一个。col_name.= 1或A.col_name.= 2;

但是,在Windows上允许同样的语句。为了避免这种差异造成的问题,最好采用一致的约定,例如总是使用小写名称创建和引用数据库和表。建议使用此约定,以获得最大的可移植性和易用性。

表名和数据库名在磁盘上的存储和在MySQL中使用是如何受到lower_case_table_names系统变量。lower_case_table_names可以拍摄下表中显示的值。这个变量有所不是影响触发标识符的壳体敏感性。在UNIX上,默认值lower_case_table_names是0。Windows系统默认值为1。在macOS中,默认值为2。

lower_case_table_names只能在初始化服务器时配置。改变这一点lower_case_table_names禁止服务器后的设置。

价值 意义
0. 表和数据库名称使用指定的字段存储在磁盘上创建表创建数据库声明。名称比较是区分大小写的。你应该不是如果MySQL在一个文件名不区分大小写的系统上运行(例如Windows或macOS),则将此变量设置为0。如果你强制这个变量为0——lower-case-table-names = 0在不敏感的文件系统和访问情况下myisam.使用不同字母的表名,可能导致索引损坏。
1 表名在磁盘上以小写形式存储,名称比较不区分大小写。MySQL在存储和查找时将所有表名转换为小写。此行为也适用于数据库名和表别名。
2 表和数据库名称使用指定的字段存储在磁盘上创建表创建数据库声明,但MySQL将它们转换为小写查找。名称比较不区分大小写。这是作品只有在不区分大小写的文件系统上!Innodb.表名称和视图名称以小写存储,如depard_case_table_names = 1

如果您只使用MySQL仅在一个平台上,通常必须使用alower_case_table_names设置非默认值。但是,如果希望在文件系统区分大小写不同的平台之间传输表,可能会遇到困难。例如,在Unix上,可以有两个不同的表名my_tablemy_table,但在Windows上,这两个名称被认为是相同的。为避免数据库或表名称中出现的数据传输问题,您有两个选项:

  • 使用depard_case_table_names = 1在所有系统。它的主要缺点是当你使用显示表显示数据库,您没有看到原始字段中的名称。

  • 使用dreame_case_table_names = 0.在Unix和dreame_case_table_names = 2在Windows上。这保留了数据库和表名的字段。缺点是,您必须确保您的陈述始终将数据库和表名与Windows上的正确字段指代。如果将语句传输到UNIX,则将LetterCase非常重要,如果字段不正确,它们不起作用。

    异常:如果你正在使用Innodb.表和您试图避免这些数据传输问题,您应该使用depard_case_table_names = 1在所有平台上强制将名称转换为小写。

如果根据二进制排序规则,如果其大写形式相等,则可以考虑重复对象名称。对于游标,条件,过程,函数,保存点,存储的例程参数,存储的程序本地变量和插件,这是真的。对于列,约束,数据库,分区,编写的陈述,不存在准备,表,触发器,用户和用户定义的变量。

的字符串列中的搜索可能会影响文件系统的大小写INFORMATION_SCHEMA表。有关更多信息,请参阅第10.8.7节,“在INFORMATION_SCHEMA搜索中使用排序规则”