1. MySQL在Linux下数据库名、表名、列名、别名大小写规则是这样的:
1). 数据库名与表名是严格区分大小写的;
2). 表的别名是严格区分大小写的;
3). 列名与列的别名在所有的情况下均是忽略大小写的;
4). MySQL在查询字符串时是大小写不敏感的。如某字段值需要区分大小写,可在定义该字段时指定BINARY属性。
2. mysql中控制数据库名和表名的大小写敏感由参数lower_case_table_names控制,为0时表示区分大小写,为1时,表示将名字转化为小写后存储,不区分大小写。
在/etc/my.cnf 中的[mysqld]后添加添加lower_case_table_names=1,重启MYSQL服务,这时已设置成功:不区分表名的大小写;
3. MySQL存储的字段是不区分大小写的。这个有点不可思议。尤其是在用户注册的业务时候,会出现笑话。所以还是严格限制大小写敏感比较好。
如何避免字段内容区分大小写。就是要新增字段的校验规则。字段值需要设置BINARY属性,设置的方法有多种:
1). 创建时设置:CREATE TABLE T(A VARCHAR(10) BINARY);
2). 使用alter修改:ALTER TABLE `tablename` MODIFY COLUMN `cloname` VARCHAR(45) BINARY;
3). mysql table editor中直接勾选BINARY项。
4). 使用数据库管理工具改,注意事项:不能通过直接改table的Collection为bin(如果数据库字符编码属性为utf-8则为utf8_bin)来使所有字段都生效,必须一个字段一个字段的改
4. 字段值的大小写由mysql的校对规则来控制。提到校对规则,就不得不说字符集。字符集是一套符号和编码,校对规则是在字符集内用于比较字符的一套规则。
一般而言,校对规则以其相关的字符集名开始,通常包括一个语言名,并且以_ci(大小写不敏感)、_cs(大小写敏感)或_bin(二元)结 束 。
比如 utf8字符集,utf8_general_ci,表示不区分大小写,这个是utf8字符集默认的校对规则;utf8_general_cs表示区分大小 写,utf8_bin表示二进制比较,同样也区分大小写 。
参考:
5. 查询mysql 哪些表正在被锁状态(两种方式)
method 1: show OPEN TABLES where In_use > 0;
method 2: SHOW PROCESSLIST查看数据库中表的状态,是否被锁;
解锁锁定的表: kill id