`

基础知识收录(三)MYSQL大小写敏感

阅读更多
  今天游戏开发的时候,就判断玩家是否重名,发现了以前一直都没注意到的mysql大小写敏感
的问题
  例子如下:
  role_base表 `role_id`int(11), `role_name`varchar(32) 字符集:utf-8 校检规则utf8_general_ci
  select * from role_base where role_name='BBc'
  select * from role_base where role_name='bbc'
  以上两条select语句结果都是一样

知识要点
  字符集和校检规则
  在windows下用SQLyog,navicat等数据库管理工具,在创建表的时候,都会选项要求选择字符集和校检规则

  字符集是一套符号和编码。有utf8 latin等


  校检规则(下图中的核对)是在对应的字符集内比较字符的一套规则。_ci(大小写不敏感)
_cs(大小写敏感)_bin(二元)

 
  一般情况下,sql的大小写敏感可分为如下几个级别
  1:数据库:也就是数据库名,大小写敏感 参数lower_case_table_names控制
  2:表:    表名,大小写敏感 参数lower_case_table_names控制(0敏感1不敏感)
             在linux下 show variables like '%case%'查看
  3:列名:  一般是不敏感(不过应该没人会设同样的字段名吧 
  4:字段内容:如果校检规则是_ci结束的大小写不敏感 _cs结束的大小写敏感

如果数据表的字符集为utf-8,校检规则为utf8_general_ci 那么role_name怎么修改为大小写敏感呢?

方法:
  ALTER TABLE role_base MODIFY COLUMN `role_name` varchar(32) BINARY NOT NULL;
utf-8中貌似是没_cs的校检规则,可以用utf8_bin二进制来进行比较
  修改后,其实可以看到role_name的属性为
  `role_name` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
  • 大小: 15.7 KB
  • 大小: 20.5 KB
分享到:
评论

相关推荐

    mysql大小写敏感

    MySQL 大小写敏感 MySQL 中的大小写敏感性是指数据库名、表名、列名、别名等在不同的操作系统平台上的大小写规则。 MySQL 在 Linux 下默认情况下是严格区分表名和数据库名的大小写,而在 Windows 下则不区分大小写...

    有关MySQL8.0大小写敏感的问题

    ### MySQL 8.0 大小写敏感性问题详解 #### 一、引言 MySQL 8.0作为MySQL数据库的重要版本更新,引入了一系列的新特性与优化改进,其中包括对数据库和表名大小写敏感性的调整。这一变化对于新老用户来说都需要一定...

    PostgreSQL数据库对象名大小写敏感的解决方法

    与PostgreSQL相比,MySQL对数据库对象名的大小写敏感性取决于运行MySQL的操作系统。在大多数Unix系统中,数据库名和表名对大小写敏感;而在Windows系统中,它们对大小写不敏感。然而,Mac OS X是一个特例,尽管基于...

    MySQL的SQL语句大小写不敏感问题解决方案

    MySQL 的 SQL 语句大小写不敏感问题解决方案 MySQL 的 SQL 语句大小写不敏感问题是一个普遍存在的问题,特别是在 Linux 和 Windows 两种操作系统下。这个问题的产生是由于 MySQL 在不同的操作系统下对大小写的处理...

    Mysql大小写敏感的问题

    MySQL数据库在处理字符串时对大小写的敏感性是一个重要的特性,特别是在跨平台操作时。这个问题主要涉及到表名、列名以及查询条件中的字符串匹配。 一、MySQL的大小写敏感性: 1. **创建表时的大小写敏感性**: ...

    LINUX系统下mysql的大小写区分问题.docx

    在Linux系统中,MySQL数据库的大小写处理是一个常见的问题,因为不同的操作系统对于大小写的处理方式有所差异。在Windows系统中,MySQL通常不区分数据库名、表名和列名的大小写,但在Linux环境下,情况则有所不同。 ...

    MySQL数据库大小写敏感的问题

    MySQL数据库在处理数据库名、表名以及列名时的大小写敏感性问题是一个常见的困扰,尤其是在跨不同操作系统环境时。MySQL的行为受所运行的操作系统的影响,因为数据库名和表名实际上对应于数据目录中的文件名。在...

    教你如何在windows与linux系统中设置MySQL数据库名、表名大小写敏感

    编辑MySQL安装目录下的my.ini 文件,在[mysqld]节下 添加 lower_case_table_names=0 (备注:为0时大小写敏感,为1时大小写不敏感,默认为1),可以实现MySql按照建表Sql语句的大小写状态来定义表名

    0积分:MySql表名大小写的问题.txt

    ### MySQL表名大小写敏感性问题详解 #### 标题:0积分:MySql表名大小写的问题 #### 描述:MySql表名大小写的问题 #### 标签:mysql 大小写 #### 部分内容摘要: > 在MySQL环境中,表名的大小写敏感性是一个常见...

    MySQL大小写敏感导致的问题分析

    MYSQL对大小写敏感 见字如面,见标题知内容。你有遇到过因为MYSQL对大小写敏感而被坑的体验吗? 之前看过阿里巴巴Java开发手册,在MySql建表规约里有看到: 【强制】表名、字段名必须使用小写字母或数字 , 禁止...

    mysql基础-不设置区分大小写

    此外,如果你已经有一个区分大小写的数据库,更改此设置可能导致已有的大小写敏感的表名无法正常识别,所以在生产环境中修改这个设置前,一定要谨慎并做好备份。 总的来说,通过调整`lower_case_table_names`配置,...

    数据库区分大小写的设置

    本文将深入探讨SQL Server与MySQL这两种主流数据库管理系统中关于大小写敏感性的设置。 #### SQL Server 大小写敏感性设置 SQL Server默认情况下对标识符(例如表名、列名等)是不区分大小写的。然而,在某些场景...

    mysql基础知识小结

    mysql参考手册重点章节:5 6 7 8 10 11 13 14 15 ## mysql启动方法: ## mysql关闭方法: ## mysql登陆方法:(单、多实例,本地、远程登录) ## 修改mysql提示符 ## 修改密码 ## root密码丢失找回 ## SQL结构化...

    MySql下实现查询表名不区分大小写

    在MySQL数据库管理中,表名和数据库名的大小写敏感性是一个重要的配置选项,尤其是在不同操作系统环境下。在Linux系统中,默认情况下,MySQL是严格区分大小写的,这与Windows环境下的行为形成鲜明对比,后者默认不...

    使MySQL查询区分大小写.doc

    在MySQL中,查询默认情况下通常是不区分大小写的,但如果你想让你的查询对大小写敏感,有几种方法可以实现。以下是一些关键知识点和步骤来帮助你在MySQL中进行区分大小写的查询。 1. **设置列的Collation** - **...

    MySQL修改配置 区分大小写

    您可能感兴趣的文章:MySql查询不区分大小写解决方案(两种)MySQL中查询的有关英文字母大小写问题的分析Mysql大小写敏感的问题Mysql中大小写敏感问题导致的MySql Error 1146 Tabel doen’t exist错误教你如何在...

Global site tag (gtag.js) - Google Analytics