视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
MySQL的大小写敏感问题_MySQL
2020-11-09 19:28:47 责编:小采
文档


昨晚刚刚被一个课程大作业坑了,特地写一篇博客来记录一下。提问: MySQL 是大小写敏感的么(包括关键字和标识符)?刚上过数据库系统原理课的好学生们一定会记得这句话:“ SQL 是大小写不敏感的”。而有过一些实际开发经验的人可能会说:“表名是大小写敏感的,其他不是。”很遗憾,两个答案都是错的。

Short version: it isimplementation dependent.

对于 MySQL 来说,所有的关键字都遵循 SQL 标准,大小写不敏感,而表名是否敏感则依赖于一个叫做lower_case_table_names的设置项,它的默认值根据操作系统而不同,具体如下(文档):

  • Windows:该值默认为1,表名在存储、查找过程中都被转化为小写,因而是完全大小写不敏感的。这与 Windows 的文件系统有关,事实上,你无法在一个大小写无关的文件系统上强制 MySQL 大小写敏感。
  • *nix:该值默认为0,表名在存储、查找过程都严格遵照给定的大小写,即是完全敏感的。
  • Mac OSX:该值默认为2,表名在存储时保留大小写,但在比对时全部转化为小写。这和 Mac OSX 的文件系统惯例一致。
  • 所以,当我昨晚从(使用 Windows 的)队友手中接过一个数据库操作不在意大小写的代码时,虽然浑身不舒服,但回想起课上说过的“ SQL 大小写不敏感”(虽然我从没有试过非关键字究竟是不是大小写敏感的),就也没多想。可一跑起来却全是数据库错误,愣是过了好一会才终于怀疑起大小写的问题来……

    下载本文
    显示全文
    专题