MySQL| MySQL大小写敏感问题

2024-06-09 12:08

本文主要是介绍MySQL| MySQL大小写敏感问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • Mysql库表大小是否敏感与操作系统以及配置有关
  • Mysql列大小写不敏感
  • 大小写敏感-->不敏感
  • 注意事项
  • 查询语句字符串是否大小写敏感

Mysql库表大小是否敏感与操作系统以及配置有关

可以通过show variables like "%case%";查看当前Mysql关于大小写的设置,下面是我再Windows下执行的结果
在这里插入图片描述

参数说明:

  • lower_case_file_system
    该参数是用于描述mysql的数据目录data所在的操作系统是否为大小写敏感,该参数为bool类型,但无法修改。
    0 – 大小写敏感
    1 – 大小写不敏感
    比如跑在linux上的都是OFF或者0。

  • lower_case_table_names
    该参数为静态,可设置为0、1、2。

    0 – 大小写敏感。(Unix,Linux默认)
    创建的库表将原样保存在磁盘上。如create database TeSt;将会创建一个TeSt的目录,create table AbCCC …将会原样生成AbCCC.frm。
    SQL语句也会原样解析。

    1 – 大小写不敏感,全转成小写了。(Windows默认)
    创建的库表时,MySQL将所有的库表名转换成小写存储在磁盘上。
    SQL语句同样会将库表名转换成小写。
    如需要查询以前创建的Test_table(生成Test_table.frm文件),即便执行select * from Test_table,也会被转换成select * from test_table,致使报错表不存在。

    2 – 大小写不敏感(OS X默认)
    创建的库表将原样保存在磁盘上。但SQL语句将库表名转换成小写。
    这个比较难理解,就是说在你的建库或建表语句中,如果写的是大写那么保存在磁盘中的也是大写格式.但是当你再想创建同名的小写库或表时会提示你改库或表已经存在了.

Windows默认参数结果:
在这里插入图片描述
Linux默认参数结果:
在这里插入图片描述


Mysql列大小写不敏感

列名与列的别名在所有的情况下均是忽略大小写的,不管是Linux系统还是Windows凶下MySQL的列名都默认不区分大小写.
该测试在Windows下测试(配置为默认配置)
在这里插入图片描述


大小写敏感–>不敏感

如果原来所建立库及表都是对大小写敏感的,想要转换为对大小写不敏感,主要需要进行如下3步:
1.将数据库数据通过mysqldump导出。
2.在my.cnf中更改lower_case_table_name = 1,并重启mysql数据库。
3.将导出的数据导入mysql数据库。


注意事项

强烈建议:
为了避免大小写引发的问题,一种推荐的命名规则是:在定义数据库、表、列的时候全部采用小写字母下划线的方式,不使用任何大写字母.

在任何系统中可以使用lower_case_table_name=1。使用该选项的不利之处是当使用SHOW TABLES或SHOW DATABASES时,看不出名字原来是用大写还是小写。
请注意在Unix中如果以前lower_case_table_name = 0将lower_case_table_name设置为1之前,重启mysqld之前,必须先将旧的数据库名和表名转换为小写。

查询语句字符串是否大小写敏感

在mysql上字符串内容默认是不区分大小写的.
在这里插入图片描述
在这里插入图片描述

这篇关于MySQL| MySQL大小写敏感问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1045137

相关文章

Java内存泄漏问题的排查、优化与最佳实践

《Java内存泄漏问题的排查、优化与最佳实践》在Java开发中,内存泄漏是一个常见且令人头疼的问题,内存泄漏指的是程序在运行过程中,已经不再使用的对象没有被及时释放,从而导致内存占用不断增加,最终... 目录引言1. 什么是内存泄漏?常见的内存泄漏情况2. 如何排查 Java 中的内存泄漏?2.1 使用 J

MySQL中时区参数time_zone解读

《MySQL中时区参数time_zone解读》MySQL时区参数time_zone用于控制系统函数和字段的DEFAULTCURRENT_TIMESTAMP属性,修改时区可能会影响timestamp类型... 目录前言1.时区参数影响2.如何设置3.字段类型选择总结前言mysql 时区参数 time_zon

Python MySQL如何通过Binlog获取变更记录恢复数据

《PythonMySQL如何通过Binlog获取变更记录恢复数据》本文介绍了如何使用Python和pymysqlreplication库通过MySQL的二进制日志(Binlog)获取数据库的变更记录... 目录python mysql通过Binlog获取变更记录恢复数据1.安装pymysqlreplicat

使用SQL语言查询多个Excel表格的操作方法

《使用SQL语言查询多个Excel表格的操作方法》本文介绍了如何使用SQL语言查询多个Excel表格,通过将所有Excel表格放入一个.xlsx文件中,并使用pandas和pandasql库进行读取和... 目录如何用SQL语言查询多个Excel表格如何使用sql查询excel内容1. 简介2. 实现思路3

numpy求解线性代数相关问题

《numpy求解线性代数相关问题》本文主要介绍了numpy求解线性代数相关问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 在numpy中有numpy.array类型和numpy.mat类型,前者是数组类型,后者是矩阵类型。数组

解决systemctl reload nginx重启Nginx服务报错:Job for nginx.service invalid问题

《解决systemctlreloadnginx重启Nginx服务报错:Jobfornginx.serviceinvalid问题》文章描述了通过`systemctlstatusnginx.se... 目录systemctl reload nginx重启Nginx服务报错:Job for nginx.javas

Redis缓存问题与缓存更新机制详解

《Redis缓存问题与缓存更新机制详解》本文主要介绍了缓存问题及其解决方案,包括缓存穿透、缓存击穿、缓存雪崩等问题的成因以及相应的预防和解决方法,同时,还详细探讨了缓存更新机制,包括不同情况下的缓存更... 目录一、缓存问题1.1 缓存穿透1.1.1 问题来源1.1.2 解决方案1.2 缓存击穿1.2.1

Mysql DATETIME 毫秒坑的解决

《MysqlDATETIME毫秒坑的解决》本文主要介绍了MysqlDATETIME毫秒坑的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 今天写代码突发一个诡异的 bug,代码逻辑大概如下。1. 新增退款单记录boolean save = s

mysql-8.0.30压缩包版安装和配置MySQL环境过程

《mysql-8.0.30压缩包版安装和配置MySQL环境过程》该文章介绍了如何在Windows系统中下载、安装和配置MySQL数据库,包括下载地址、解压文件、创建和配置my.ini文件、设置环境变量... 目录压缩包安装配置下载配置环境变量下载和初始化总结压缩包安装配置下载下载地址:https://d

vue解决子组件样式覆盖问题scoped deep

《vue解决子组件样式覆盖问题scopeddeep》文章主要介绍了在Vue项目中处理全局样式和局部样式的方法,包括使用scoped属性和深度选择器(/deep/)来覆盖子组件的样式,作者建议所有组件... 目录前言scoped分析deep分析使用总结所有组件必须加scoped父组件覆盖子组件使用deep前言