欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

MySQL存儲(chǔ)的字段為什么是不區(qū)分大小寫(xiě)的

下面一起來(lái)了解下MySQL存儲(chǔ)的字段為什么是不區(qū)分大小寫(xiě)的,相信大家看完肯定會(huì)受益匪淺,文字在精不在多,希望MySQL存儲(chǔ)的字段為什么是不區(qū)分大小寫(xiě)的這篇短內(nèi)容是你想要的。

站在用戶(hù)的角度思考問(wèn)題,與客戶(hù)深入溝通,找到呼倫貝爾網(wǎng)站設(shè)計(jì)與呼倫貝爾網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶(hù)體驗(yàn)好的作品,建站類(lèi)型包括:做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名注冊(cè)、虛擬空間、企業(yè)郵箱。業(yè)務(wù)覆蓋呼倫貝爾地區(qū)。

                                                          MySQL存儲(chǔ)的字段為什么是不區(qū)分大小寫(xiě)的

00 簡(jiǎn)單回顧

之前寫(xiě)過(guò)一篇關(guān)于mysql 對(duì)表大小寫(xiě)敏感的問(wèn)題,其實(shí)在mysql中字段存儲(chǔ)的內(nèi)容是不區(qū)分大小寫(xiě)的,本篇進(jìn)行簡(jiǎn)單的總結(jié)。

想回顧一下:

MySQL在Linux下數(shù)據(jù)庫(kù)名、表名、列名、別名大小寫(xiě)規(guī)則是這樣的:

1、數(shù)據(jù)庫(kù)名與表名是嚴(yán)格區(qū)分大小寫(xiě)的;

2、表的別名是嚴(yán)格區(qū)分大小寫(xiě)的;

3、列名與列的別名在所有的情況下均是忽略大小寫(xiě)的;

4、字段內(nèi)容默認(rèn)情況下是大小寫(xiě)不敏感的。

01 一個(gè)例子

簡(jiǎn)單例子:

CREATE TABLE `tb_user` (
	`id` BIGINT (20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '用戶(hù)id',
	`username` VARCHAR (50) NOT NULL COMMENT '用戶(hù)名',
	PRIMARY KEY (`id`)
) ENGINE = INNODB DEFAULT CHARSET = utf8 COMMENT = '用戶(hù)表';


INSERT INTO `u2s`.`tb_user` (`id`, `username`) VALUES ('1', 'user');
INSERT INTO `u2s`.`tb_user` (`id`, `username`) VALUES ('2', 'User');
INSERT INTO `u2s`.`tb_user` (`id`, `username`) VALUES ('3', 'USER');

使用 查詢(xún)語(yǔ)句查詢(xún) username 為 全部小寫(xiě)的user 的用戶(hù),結(jié)果查詢(xún)出這個(gè)三條記錄全部都查詢(xún)到了。

mysql> SELECT username from tb_user where username = 'user';
+----------+
| username |
+----------+
| user     |
| User     |
| USER     |
+----------+
3 rows in set

通過(guò)這個(gè)例子簡(jiǎn)單說(shuō)明,字段內(nèi)容默認(rèn)情況下是大小寫(xiě)不敏感的。

02 解決方案

**因?yàn)槟J(rèn)情況下字段內(nèi)容是不區(qū)分大小寫(xiě)的,也即大小寫(xiě)不敏感。**所以解決方案就是要新增字段內(nèi)容的校驗(yàn)規(guī)則。

使用mysql 的BINARY 關(guān)鍵字使搜索區(qū)分大小寫(xiě)。

在查詢(xún)的sql中加入BINARY 關(guān)鍵字

mysql> select * from tb_user where BINARY username ='user';
+----+----------+
| id | username |
+----+----------+
|  1 | user     |
+----+----------+
1 row in set

這種方式相對(duì)較簡(jiǎn)單,不用改動(dòng)表結(jié)構(gòu),只需在需要區(qū)分查詢(xún)的字段前加上關(guān)鍵字。這種方式也是有缺點(diǎn)的,每次寫(xiě)查詢(xún)的時(shí)候都要注意加關(guān)鍵字,并可能需要改動(dòng)的代碼較多。

在創(chuàng)建表的時(shí)候進(jìn)行限制

CREATE TABLE `tb_user1` (
	`id` BIGINT (20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '用戶(hù)id',
	`username` VARCHAR (50) BINARY NOT NULL COMMENT '用戶(hù)名',
	PRIMARY KEY (`id`)
) ENGINE = INNODB DEFAULT CHARSET = utf8 COMMENT = '用戶(hù)表';


mysql> show create table tb_user1;
tb_user1 | CREATE TABLE `tb_user1` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '用戶(hù)id',
  `username` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '用戶(hù)名',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用戶(hù)表'
1 row in set

或者 使用

CREATE TABLE `tb_user2` (
	`id` BIGINT (20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '用戶(hù)id',
	`username` VARCHAR (50) NOT NULL COMMENT '用戶(hù)名',
	`info` VARCHAR (100) NOT NULL COMMENT '詳情描述',
	PRIMARY KEY (`id`)
) ENGINE = INNODB DEFAULT CHARSET = utf8 COLLATE=utf8_bin COMMENT = '用戶(hù)表';

mysql> show create table tb_user2;
tb_user2 | CREATE TABLE `tb_user2` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '用戶(hù)id',
  `username` varchar(50) COLLATE utf8_bin NOT NULL COMMENT '用戶(hù)名',
  `info` varchar(100) COLLATE utf8_bin NOT NULL COMMENT '詳情描述',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='用戶(hù)表'

使用 NGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin會(huì)將字段中varchar類(lèi)型的全部設(shè)置區(qū)分大小寫(xiě)。這兩種查看表的詳情,本質(zhì)上都是 在字段上 加上了 COLLATE utf8_bin。

03 總結(jié)

字段值的大小寫(xiě)由mysql的校對(duì)規(guī)則來(lái)控制。提到校對(duì)規(guī)則,就不得不說(shuō)字符集。字符集是一套符號(hào)和編碼,校對(duì)規(guī)則是在字符集內(nèi)用于比較字符的一套規(guī)則。 一般而言,校對(duì)規(guī)則以其相關(guān)的字符集名開(kāi)始,通常包括一個(gè)語(yǔ)言名,并且以_ci(大小寫(xiě)不敏感)、_cs(大小寫(xiě)敏感)或_bin(二元)結(jié)束 。

比如 utf8字符集,,如下表:

1)utf8_bin:utf8_bin將字符串中的每一個(gè)字符用二進(jìn)制數(shù)據(jù)存儲(chǔ),區(qū)分大小寫(xiě)。

2)utf8_general_ci:utf8_genera_ci不區(qū)分大小寫(xiě),ci為case insensitive的縮寫(xiě),即大小寫(xiě)不敏感。

3)utf8_general_cs:utf8_general_cs區(qū)分大小寫(xiě),cs為case sensitive的縮寫(xiě),即大小寫(xiě)敏感。

注:我本機(jī)使用5.7 版本不支持 utf8_general_cs 字符集,創(chuàng)建報(bào)錯(cuò)。

看完MySQL存儲(chǔ)的字段為什么是不區(qū)分大小寫(xiě)的這篇文章后,很多讀者朋友肯定會(huì)想要了解更多的相關(guān)內(nèi)容,如需獲取更多的行業(yè)信息,可以關(guān)注我們的行業(yè)資訊欄目。

網(wǎng)站標(biāo)題:MySQL存儲(chǔ)的字段為什么是不區(qū)分大小寫(xiě)的
本文來(lái)源:http://www.chinadenli.net/article6/pgccig.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開(kāi)發(fā)網(wǎng)站制作網(wǎng)站維護(hù)網(wǎng)站設(shè)計(jì)公司企業(yè)建站ChatGPT

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名