MySQL sql语句表和字段对应的大小写问题

本文探讨了SQL语句在不同环境下因大小写敏感性引起的错误。详细解释了如何通过规范SQL语句书写,使用``符号包裹表名和字段名来避免自动填充导致的大小写问题,并介绍了调整MySQL配置以改变表名大小写敏感性的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、遇到的问题

       本地sql配置不区分大小写,线上sql配置区分大小写;

       select * from RESUME;

        输入RESUME时是SQLyog工具自动填充,自动填充为大写(SQLyog中自动输入时,一直是大写,无法变成小写,具体原因不明,可能和关键字有关),表名其实为resume,导致在本地运行时正常,线上运行时因为大小写的原因,运行失败;

二、解决

      解决方式:

      书写sql语句时,表名和字段名称大小写要和表结构保持一致,否则会报错;

       出现的问题其实是sql书写不规范导致,书写sql时表名和字段名需要在``符号,在``中写表名和字段值便不会自动填充为大小写,而且可以通过点击表名自动填充为`resume`的格式,字段名可以通过表名.字段名自动填充为`name`的格式

      select * from `resume` where `name`='jing'; //正确书写

      select * from resume where name='jing'; //不规范书写,一般不会报错,涉及到大小写时会报错哦

三、延伸

     mysql表名区别大小写设置

  1. 关闭MySQL服务
  2. 在服务运行目录找到my.ini或者my.cnf文件
  3. 打开文件,找到[mysqld]在下面增加一行

    lower_case_table_names=0 (0:大小写敏感;1:大小写不敏感)

  4. 重启MySQL服务

      

### SQL语句中列名大小写敏感性及处理方式 #### 列名大小写敏感性的依赖因素 列名的大小写敏感性取决于多个方面,包括操作系统文件系统的特性以及数据库配置参数。对于MySQL而言,在Windows环境下,默认情况下的列名是不区分大小写的;而在Linux环境中,则默认区分大小写[^2]。 #### 数据库配置的影响 通过调整`lower_case_table_names` 参数可以控制MySQL对待名的方式: - `0`: 名存储为指定的形式,并且比较时区分大小写; - `1`: 所有名都转换成小写字母来保存,并且不允许创同名但不同大小写的两个; - `2`: 名按照给定的情况进行存储,但在访问的时候会自动转化为小写来进行匹配[^3]。 需要注意的是,一旦选择了某个值之后就很难再更改它而不影响现有数据结构。 #### 实际应用中的注意事项 当在一个已经存在大量旧SQL脚本并且这些脚本未遵循统一命名规范的情况下迁移至新的、更严格的大小写敏感环境时,可能会遇到兼容性问题。为了确保平滑过渡,一种常见做法就是将所有的名强制转为大写或其他一致的形式,从而减少因名称差异引发的问题。 ```sql SELECT ID, NAME FROM USERS WHERE AGE > 18; ``` 上述例子展示了如何采用全大写SQL关键字与名/字段名组合编写查询语句,这有助于增强代码的一致性可读性[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值