mysql 大小写敏感问题

mysql关于大小写敏感的话题有以下三个:
1,表名字和库名字 linux/unix 区分大小写
也就是 你可以创建一个叫test和TEST的两个表,
但是windows默认是不区分大小写的,
LINUX:
编辑/etc/my.cnf文件,在[mysqld]节下 添加 lower_case_table_names=1 参数,这样就大小写不区分了,也就不能在一个库下创建test和TEST的两个表,并设置相应的值 (备注:为0时大小写敏感,就是区分大小写,为1时大小写不敏感,也就是不区分大小写,默认为0)
2,表的字段名字,
linux 下 默认是不区分大小写的,也就是 一个表中有一个叫id的字段,就不能创建ID的字段。
3,表的内容,默认查询是不区分字段值的大小写,
如果想在查询时区分字段值的大小写,则:字段值需要设置BINARY属性,设置的方法有多种:
A、创建时设置:
CREATE TABLE T(
A VARCHAR(10) BINARY
);
B、使用alter修改:
ALTER TABLE tablename MODIFY COLUMN cloname VARCHAR(10) BINARY;
具体实验过程:
mysql> create table ll ( name varchar(100);
mysql> insert into ll values('hh');
Query OK, 1 row affected (0.00 sec)
mysql> insert into ll values('hH');
Query OK, 1 row affected (0.00 sec)
mysql> select * from ll where name='hh';
+------+
| name |
+------+
| hh |
| hH |
+------+
2 rows in set (0.00 sec)
这时候你添加主键就会报错
mysql> alter table ll add primary key (name);
ERROR 1062 (23000): Duplicate entry 'hh' for key 'PRIMARY'
修改表的name列的值为大小写不敏感。
mysql> alter table ll MODIFY name varchar(100) BINARY;
Query OK, 2 rows affected (0.02 sec)
Records: 2 Duplicates: 0 Warnings: 0
mysql> select * from ll where name='hh';
+------+
| name |
+------+
| hh |
+------+
1 row in set (0.00 sec)
然后添加主键就没问题了。
mysql> alter table ll add primary key (name);
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0

小结:
MySQL在Linux下数据库名、表名、列名、别名大小写 默认规则是这样的:
1、数据库名与表名是严格区分大小写的;
2、表的别名是严格区分大小写的;
3、列名与列的别名在所有的情况下均是忽略大小写的;
4、变量名也是严格区分大小写的;
MySQL在Windows下都不区分大小写。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29654823/viewspace-2141708/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29654823/viewspace-2141708/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL数据库大小写敏感性可以根据配置进行设置。默认情况下,MySQL在Windows操作系统上是不区分大小写的,而在Unix和macOS上是区分大小写的。这是因为在Windows中,文件系统默认是大小写敏感的,而在Unix和macOS中,文件系统默认是大小写敏感的。因此,MySQL大小写敏感性与操作系统和配置有关。 如果想要将已建立的数据库和表从大小写敏感转换为不敏感,可以按照以下步骤进行: 1. 使用mysqldump命令将数据库数据导出。 2. 在my.cnf配置文件中将lower_case_table_names参数设置为1,并重启MySQL数据库。 3. 使用导出的数据将数据库数据导入到MySQL数据库中。 需要注意的是,对于大小写敏感的系统(如Windows和macOS),不能将lower_case_table_names参数设置为0。此外,在Linux默认情况下,数据库名和表名是大小写敏感的,而字段内容和列名是大小写敏感的。如果需要设置匹配字段值大小写敏感,可以使用binary标记或设置校对规则(collate)来实现。 总结起来,MySQL数据库大小写敏感性可以通过配置文件和设置校对规则来进行控制。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [MySQL| MySQL大小写敏感问题](https://blog.csdn.net/u011479200/article/details/89002141)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [【转】MySQL大小写敏感的解决方案](https://blog.csdn.net/C_chuxin/article/details/122471582)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值