首页
学习
活动
专区
圈层
工具
发布

mysql 两个字段大小写

基础概念

MySQL中的字段大小写敏感性取决于操作系统和MySQL配置文件中的设置。在大多数Unix-like系统上,MySQL默认区分大小写,而在Windows系统上,默认不区分大小写。

相关优势

  • 区分大小写:可以更精确地控制数据的存储和检索,适用于对数据一致性要求较高的场景。
  • 不区分大小写:简化了查询操作,适用于对大小写不敏感的应用。

类型

  • 区分大小写的字段:在创建表时,可以通过设置字段的COLLATE属性为区分大小写的字符集来实现。
  • 不区分大小写的字段:默认情况下,MySQL在Windows系统上不区分大小写,或者在Unix-like系统上可以通过设置COLLATE属性为不区分大小写的字符集来实现。

应用场景

  • 区分大小写:适用于需要严格区分大小写的场景,如用户名、密码等敏感信息的存储。
  • 不区分大小写:适用于对大小写不敏感的场景,如搜索功能,用户可能输入大写或小写字母进行搜索。

遇到的问题及解决方法

问题:为什么在Unix-like系统上,MySQL查询时大小写敏感?

原因:在Unix-like系统上,MySQL默认区分大小写,这是由于操作系统的文件系统通常区分大小写。

解决方法:

  1. 修改MySQL配置文件:编辑MySQL的配置文件(通常是my.cnf或my.ini),在[mysqld]部分添加或修改以下配置:
  2. 修改MySQL配置文件:编辑MySQL的配置文件(通常是my.cnf或my.ini),在[mysqld]部分添加或修改以下配置:
  3. 这会使MySQL在创建表名时忽略大小写。
  4. 修改字段的COLLATE属性:在创建表时,可以指定字段的COLLATE属性为不区分大小写的字符集,例如:
  5. 修改字段的COLLATE属性:在创建表时,可以指定字段的COLLATE属性为不区分大小写的字符集,例如:

问题:为什么在Windows系统上,MySQL查询时不区分大小写?

原因:Windows文件系统通常不区分大小写,因此MySQL在Windows系统上默认也不区分大小写。

解决方法:

  1. 修改MySQL配置文件:编辑MySQL的配置文件,将lower_case_table_names设置为0或2,但这可能会导致一些问题,建议谨慎操作。
  2. 修改字段的COLLATE属性:与Unix-like系统类似,可以通过设置字段的COLLATE属性来实现区分大小写。

示例代码

代码语言:txt
复制
-- 创建一个区分大小写的表
CREATE TABLE users (
    id INT PRIMARY KEY,
    username VARCHAR(50) COLLATE utf8_bin
);

-- 创建一个不区分大小写的表
CREATE TABLE users_ci (
    id INT PRIMARY KEY,
    username VARCHAR(50) COLLATE utf8_general_ci
);

参考链接

通过以上信息,您可以更好地理解MySQL中字段大小写的概念、优势、类型、应用场景以及常见问题的解决方法。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

PostgreSQL 库,表,字段,值大小写的问题

需要测试的内容如下 1 数据库大小写 2 表名大小写 3 字段大小写 4 字段值得大小写 一些相关的大小写的函数以及数据的转换函数 let's go 1 数据库名的大小写 首先会建立三个数据库名字为...(你可以试试,结果是一样的,postgresql 在一个数据库中只能运行小写表名的存在) 当然如果你非要存储不同大小写的表名,PostgreSQL 也不是不可以,那就是需要加“” 双引号 最后我们来尝试一下字段名和字段值的问题...我们还是在test 数据库里面建立表,并且会在这个表里面建立三个字段 分表是 name Name NAME 并且在每个字段里面的值,也是和字段名的撰写方式一样。...在做到下面的时候,大家应该看到这个错误, 在一个表里面,的字段名也默认统一为小写。当然如果你不喜欢,还是可以建立你想建立的字段名大小写,还是那样加“双引号”。...但又的同学说,没有办法,公司就是这样,那我们该怎么办 方法是有的,例如以生成的订单号为例,他必须是唯一的,但如果客户输入的时候,有的大写,有的小写,那岂不是要出现两个订单号了。

6.9K20
  • MySQL大小写敏感总结

    在MySQL中,数据库、表、triggers实际上都对应了datadir目录(或子目录)下的文件,因此,这些对象的名字是否大小写敏感主要是依赖于操作系统和文件系统的,因此这些内容在Windows中是大小写是不敏感的...=1(Windows default):大小写不敏感,MySQL将数据全部转化为小写形式存储在磁盘上,而且在查询的时候也是全部转化为小写进行比较; lower_case_table_names =2(...5、数据敏感性:由Mysql的校对字符集规则来控制(Collation),默认大小写不敏感; 每一个字符型column都有一个“字符集属性(character set)”和一个“校对集属性(collation...------+ | 1 | a | | 2 | A | +------+------+可以在字段name前加个binary,使其区分大小写:MySQL root...MYSQL轻松学

    5K40

    mysql大小写踩坑

    翻译过来大致 按大小写敏感存储表名 按小写形式存储表名 比较时不区分大小写 按大小写敏感存储表名 以小写字母进行比较 他们的默认值在不同系统下面有区分 MacOS2 Unix0 Windows1 然后注意...ubuntu下重启mysql服务不是mysqld而是mysql,下面是ubuntu的三种重启方式 # 重启服务 service mysql restart; # 重启系统服务 systemctl restart...mysql # 重启mysql,请确认路径 /etc/init.d/mysql restart 修改后可以用这三个sql查询是否生效 select @@lower_case_table_names;...中的表是按照大写表名去查,而我们此处配置的,并不是查询时忽略表名大小写,而是全部以小写表名去查询 因此配置了lower_case_table_names = 1后,大写表名用大写sql一律作废匹配不到...翻译过来就是说Linux或者其他类似Unix的系统,不支持设置为2[1],mysql服务端会强制使用0代替 那么这么多表名,一个一个改不是很麻烦?

    2.6K20

    MySQL 字段操作

    表字段是怎么插入并修改呢? 字段又有哪些约束条件?...看完本文,你能够优雅地设计一张有意义的表; 一、字段操作 1.添加字段 (add) alter table add 字段名 数据类型; desc ; 2.修改字段数据类型 (modify...字段名> 字段名> 字段类型> ; #可用来修改字段数据类型 #也可以在修改数据类型后添加默认值或其它约束条件 #可以在最后修改字段位置[first | after] 4 字段添加默认值... alter 字段名 drop default; desc ; 5.删除字段 (drop) alter table drop 字段名; desc ; 二、字段约束 约束是对字段中的数据进行限制...约束字段默认值 UNIQUE KEY 约束字段的值唯一 PRIMARY KEY 约束字段为主键,唯一标识 AUTO_INCREMENT 字段值自动增加 1.

    14.3K30

    细说MySQL区分字母大小写

    在Linux系统上使用MySQL,MySQL是区分字母大小写的,例如建A表时表名是大写的A,修改A表时脚本里写的a,就会报错表a不存在。...在MySQL中,数据库对应数据目录中的目录,数据库中的每个表至少对应数据库目录中的一个文件或多个文件,所以,是否区分大小写是其所在的操作系统决定的。...在大多数基于Unix的系统中,MySQL是区分大小写的;而在Windows系统中,MySQL是不区分大小写的。...0表示使用指定的大小写字母在硬盘上保存表名和数据库名,并且区分字母大小写;1表示表名在硬盘上以小写保存,MySQL将所有表名转换为小写在存储和查找表上,不区分字母大小写;2表示表名和数据库名在硬盘上使用指定的大小写字母进行保存...,但MySQL将它们转换为小写在查找表上,不区分字母大小写。

    4.6K50

    mysql大小写敏感与校对规则

    大家在使用mysql过程中,可能会遇到类似以下的问题: ? 模糊匹配 jg%,结果以JG开头的字符串也出现在结果集中,大家很自然的认为是大小写敏感的问题。...那么mysql中大小写敏感是如何控制的;数据库名,表名,字段名这些字典对象以及字段值的大小敏感是如何控制的;以及校验规则与索引的关系,这是本文要讨论的内容。...mysql中控制数据库名和表名的大小写敏感由参数lower_case_table_names控制,为0时表示区分大小写,为1时,表示将名字转化为小写后存储,不区分大小写。...为了避免大小写引发的问题,一种推荐的命名规则是:在定义数据库、表、列的时候全部采用小写字母加下划线的方式,不使用任何大写字母。 字段名和字段值: 字段名通常都是不区分大小写的。...字段值的大小写由mysql的校对规则来控制。提到校对规则,就不得不说字符集。字符集是一套符号和编码,校对规则是在字符集内用于比较字符的一套规则,比如定义'A'<'B'这样的关系的规则。

    6.3K10

    MySQL之text字段

    MySQL之text字段 之前做的SQL审核工具不支持text类型的字段的,今天一个业务方问我为什么不支持text字段,大概给他讲了讲,后续发现可能还有些不完善的地方,这里总结一下text的用法,先来看看官方文档上对这个字段的解释...对于text列,插入时MySQL不会对它进行填充,并且select时不会删除任何末尾的字节。...当我们对text列进行排序的时候,决定顺序的字符个数是由参数max_sort_length来决定的,例如下面这个例子: mysql> SET max_sort_length = 2000; mysql>...区 text和varchar的区别 在大多数情况下,我们可以把text视为varchar字段,但是这两个字段类型在存储字符大小上有一些区别: varchar在mysql中必须满足最大行宽度限制...,也就是 65535(64k)字节,而varchar本身是按字符串个数来定义的,在mysql中使用uft-8字符集一个字符占用三个字节,所以单表varchar实际占用最大长度如下: 1.使用utf

    13.9K10

    MySQL修改字段名、修改字段类型

    修改字段 类型、名、注释、类型长度、默认值 ALTER TABLE 表名 MODIFY [COLUMN] 字段名 新类型 新类型长度 新默认值 新注释; -- COLUMN关键字可以省略不写...'注释'; 修改字段名 -- 字段名称未改变,修改字段类型、类型长度、默认值、注释 ALTER TABLE 表名 CHANGE [column] 旧字段名 新字段名 新数据类型; alter...column1 decimal(10,1) DEFAULT NULL COMMENT '注释' alter table table1 change column1 column2; -- 报错 mysql...Duplicates: 0 Warnings: 0 更改表名 Table 从 db_a 要搬到 db_b RENAME TABLE db_a.old_table TO db_b.new_table; MySQL...Table 改名字(重命名) RENAME TABLE old_table TO new_table; MySQL 两个 Table 互换名 RENAME TABLE old_table TO tmp_table

    38.4K32
    领券