欢迎光临
我们一直在努力

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下都不区分大小写。

赞(0)
【声明】:本博客不参与任何交易,也非中介,仅记录个人感兴趣的主机测评结果和优惠活动,内容均不作直接、间接、法定、约定的保证。访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。