加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

MySQL巨细写题目

发布时间:2017-07-23 09:15:06 所属栏目:编程 来源:站长网
导读:MySQL巨细写敏感 字符串巨细写敏感和Mysql的数据库的名字、表名字、字段名字、尚有字段值有关。 1.和数据库名字、表名字、存储进程和触发器有关 Mysql中节制数据库名和表名的巨细写敏感是由参数lower_case_table_names节制, 为0时; 暗示区分巨细写,行使

| Database | Create Database                                                                 |

+----------+---------------------------------------------------------------------------------+

| testx    | CREATE DATABASE `testx` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_bin */ |

+----------+---------------------------------------------------------------------------------+

1 row in set (0.00 sec)

 

case2是默认建设的表

mysql> show create table case2;

+-------+------------------------------------------------------------------------------------------------------------------------+

| Table | Create Table                                                                                                           |

+-------+------------------------------------------------------------------------------------------------------------------------+

| case2 | CREATE TABLE `case2` (

`a` int(11) DEFAULT NULL,

`B` varchar(10) DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8 |

+-------+------------------------------------------------------------------------------------------------------------------------+

1 row in set (0.00 sec)

case4是指定字符集和collate的表

mysql> create table case4(a int(11),B varchar(10)) default character set utf8 collate utf8_bin;;

Query OK, 0 rows affected (0.12 sec)

mysql> show create table case4;

+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------+

| Table | Create Table                                                                                                                                             |

+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------+

| case4 | CREATE TABLE `case4` (

`a` int(11) DEFAULT NULL,

`B` varchar(10) COLLATE utf8_bin DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin |

+-------+----------------------------------------------------------------------------------------------------------------------------------------------------------+

1 row in set (0.00 sec)

我们可以在建设数据库或表时指定是否巨细写敏感,假如没有指定的话,通过语句级的collate和binary也可以实现

mysql> select * from case1;

+------+------+

| a    | B    |

+------+------+

|    1 | AAA  |

|    2 | bbb  |

|    4 | AAA  |

|    3 | BBB  |

+------+------+

4 rows in set (0.00 sec)

mysql> select * from case1 where B like '%b%';

+------+------+

| a    | B    |

+------+------+

|    2 | bbb  |

|    3 | BBB  |

+------+------+

2 rows in set (0.00 sec)

指定Collation

mysql> select * from case1 where B like '%b%' collate utf8_bin;

+------+------+

| a    | B    |

+------+------+

|    2 | bbb  |

+------+------+

1 row in set (0.01 sec)

通过binary把字符串转化为二进制较量,因为巨细写字符的二进制必定差异,因此也是区分巨细的一种方法

mysql> select * from case1 where binary B like '%b%';

+------+------+

| a    | B    |

+------+------+

|    2 | bbb  |

+------+------+

1 row in set (0.00 sec)

mysql>

最后要声名一点的是Collation与索引存储的相关。由于Collation是用于字符串之间较量,而索引是基于较量有序分列的,

因此Collation会影响记录的索引次序

参考:

http://dev.mysql.com/doc/refman/5.0/en/charset-collation-names.html

http://dev.mysql.com/doc/refman/5.0/en/identifier-case-sensitivity.html

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读