婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 詳細談談MYSQL中的COLLATE是什么

詳細談談MYSQL中的COLLATE是什么

熱門標簽:大豐地圖標注app 呂梁外呼系統 南太平洋地圖標注 400電話變更申請 北京金倫外呼系統 html地圖標注并導航 400電話辦理服務價格最實惠 武漢電銷機器人電話 催天下外呼系統

前言

在mysql中執行show create table tablename>指令,可以看到一張表的建表語句,example如下:

CREATE TABLE `table1` (
    `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
    `field1` text COLLATE utf8_unicode_ci NOT NULL COMMENT '字段1',
    `field2` varchar(128) COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '字段2',
    PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8_unicode_ci;

大部分字段我們都能看懂,但是今天要討論的是COLLATE關鍵字。這個值后面對應的utf8_unicode_ci是什么意思呢?面試的時候用這個題目考一考DBA,應該可以難倒一大部分人。

COLLATE是用來做什么的?

使用phpmyadmin的開發可能會非常眼熟,因為其中的中文表頭已經給出了答案:

所謂utf8_unicode_ci,其實是用來排序的規則。對于mysql中那些字符類型的列,如VARCHAR,CHAR,TEXT類型的列,都需要有一個COLLATE類型來告知mysql如何對該列進行排序和比較。簡而言之,COLLATE會影響到ORDER BY語句的順序,會影響到WHERE條件中大于小于號篩選出來的結果會影響**DISTINCT**、**GROUP BY**、**HAVING**語句的查詢結果。另外,mysql建索引的時候,如果索引列是字符類型,也會影響索引創建,只不過這種影響我們感知不到。總之,凡是涉及到字符類型比較或排序的地方,都會和COLLATE有關

各種COLLATE的區別

COLLATE通常是和數據編碼(CHARSET)相關的,一般來說每種CHARSET都有多種它所支持的COLLATE,并且每種CHARSET都指定一種COLLATE為默認值。例如Latin1編碼的默認COLLATE為latin1_swedish_ci,GBK編碼的默認COLLATE為gbk_chinese_ci,utf8mb4編碼的默認值為utf8mb4_general_ci。

這里順便講個題外話,mysql中有utf8和utf8mb4兩種編碼,在mysql中請大家忘記**utf8**,永遠使用**utf8mb4**。這是mysql的一個遺留問題,mysql中的utf8最多只能支持3bytes長度的字符編碼,對于一些需要占據4bytes的文字,mysql的utf8就不支持了,要使用utf8mb4才行。

很多COLLATE都帶有_ci字樣,這是Case Insensitive的縮寫,即大小寫無關,也就是說"A"和"a"在排序和比較的時候是一視同仁的。selection * from table1 where field1="a"同樣可以把field1為"A"的值選出來。與此同時,對于那些_cs后綴的COLLATE,則是Case Sensitive,即大小寫敏感的。

在mysql中使用show collation指令可以查看到mysql所支持的所有COLLATE。以utf8mb4為例,該編碼所支持的所有COLLATE如下圖所示。

imgmysql中和utf8mb4相關的所有COLLATE

圖中我們能看到很多國家的語言自己的排序規則。在國內比較常用的是utf8mb4_general_ci(默認)、utf8mb4_unicode_ci、utf8mb4_bin這三個。我們來探究一下這三個的區別:

首先utf8mb4_bin的比較方法其實就是直接將所有字符看作二進制串,然后從最高位往最低位比對。所以很顯然它是區分大小寫的。

而utf8mb4_unicode_ci和utf8mb4_general_ci對于中文和英文來說,其實是沒有任何區別的。對于我們開發的國內使用的系統來說,隨便選哪個都行。只是對于某些西方國家的字母來說,utf8mb4_unicode_ci會比utf8mb4_general_ci更符合他們的語言習慣一些,general是mysql一個比較老的標準了。例如,德語字母“ß”,在utf8mb4_unicode_ci中是等價于"ss"兩個字母的(這是符合德國人習慣的做法),而在utf8mb4_general_ci中,它卻和字母“s”等價。不過,這兩種編碼的那些微小的區別,對于正常的開發來說,很難感知到。本身我們也很少直接用文字字段去排序,退一步說,即使這個字母排錯了一兩個,真的能給系統帶來災難性后果么?從網上找的各種帖子討論來說,更多人推薦使用utf8mb4_unicode_ci,但是對于使用了默認值的系統,也并沒有非常排斥,并不認為有什么大問題。結論:推薦使用utf8mb4_unicode_ci,對于已經用了utf8mb4_general_ci的系統,也沒有必要花時間改造。

另外需要注意的一點是,從mysql 8.0開始,mysql默認的CHARSET已經不再是Latin1了,改為了utf8mb4(參考鏈接),并且默認的COLLATE也改為了utf8mb4_0900_ai_ci。utf8mb4_0900_ai_ci大體上就是unicode的進一步細分,0900指代unicode比較算法的編號( Unicode Collation Algorithm version),ai表示accent insensitive(發音無關),例如e, è, é, ê 和 ë是一視同仁的。相關參考鏈接1,相關參考鏈接2

COLLATE設置級別及其優先級

設置COLLATE可以在示例級別、庫級別、表級別、列級別、以及SQL指定。實例級別的COLLATE設置就是mysql配置文件或啟動指令中的collation_connection系統變量。

庫級別設置COLLATE的語句如下:

CREATE DATABASE db_name> DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
如果庫級別沒有設置CHARSET和COLLATE,則庫級別默認的CHARSET和COLLATE使用實例級別的設置。在mysql8.0以下版本中,你如果什么都不修改,默認的CHARSET是Latin1,默認的COLLATE是latin1_swedish_ci。從mysql8.0開始,默認的CHARSET已經改為了utf8mb4,默認的COLLATE改為了utf8mb4_0900_ai_ci。

表級別的COLLATE設置,則是在CREATE TABLE的時候加上相關設置語句,例如:

CREATE TABLE (

……

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

如果表級別沒有設置CHARSET和COLLATE,則表級別會繼承庫級別的CHARSET與COLLATE。

列級別的設置,則在CREATE TABLE中聲明列的時候指定,例如

CREATE TABLE (

`field1` VARCHAR(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '',

……

) ……

如果列級別沒有設置CHARSET和COLATE,則列級別會繼承表級別的CHARSET與COLLATE。

最后,你也可以在寫SQL查詢的時候顯示聲明COLLATE來覆蓋任何庫表列的COLLATE設置,不太常用,了解即可:

SELECT DISTINCT field1 COLLATE utf8mb4_general_ci FROM table1;

SELECT field1, field2 FROM table1 ORDER BY field1 COLLATE utf8mb4_unicode_ci;

如果全都顯示設置了,那么優先級順序是 SQL語句 > 列級別設置 > 表級別設置 > 庫級別設置 > 實例級別設置。也就是說列上所指定的COLLATE可以覆蓋表上指定的COLLATE,表上指定的COLLATE可以覆蓋庫級別的COLLATE。如果沒有指定,則繼承下一級的設置。即列上面沒有指定COLLATE,則該列的COLLATE和表上設置的一樣。

以上就是關于mysql的COLLATE相關知識。不過,在系統設計中,我們還是要盡量避免讓系統嚴重依賴中文字段的排序結果,在mysql的查詢中也應該盡量避免使用中文做查詢條件。

總結

到此這篇關于詳細談談MYSQL中COLLATE的文章就介紹到這了,更多相關MYSQL COLLATE是什么內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

標簽:無錫 西寧 自貢 迪慶 徐州 龍巖 麗水 南充

巨人網絡通訊聲明:本文標題《詳細談談MYSQL中的COLLATE是什么》,本文關鍵詞  詳細,談談,MYSQL,中的,COLLATE,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《詳細談談MYSQL中的COLLATE是什么》相關的同類信息!
  • 本頁收集關于詳細談談MYSQL中的COLLATE是什么的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    国产精品久久久久久久久晋中 | 欧美日韩高清在线播放| 欧美精品一区二区三区一线天视频 | 亚洲三级免费观看| 久久精品999| 国产精品国产三级国产普通话三级| 亚洲第一精品在线| 在线看日本不卡| 国产精品一二三区在线| 精品少妇一区二区三区日产乱码| 国产亚洲成av人在线观看导航 | 色综合天天综合| av亚洲精华国产精华精| 欧美影院一区二区三区| 欧美激情一区二区三区| 亚洲一区二区三区四区在线观看| 国产精品18久久久久久久久久久久| 91女人视频在线观看| 中文字幕高清一区| 国产成人综合视频| 国产女人18水真多18精品一级做| 国产一区二区视频在线| 国产精品水嫩水嫩| eeuss鲁一区二区三区| 亚洲在线中文字幕| 91麻豆精品国产91久久久使用方法| 亚洲成精国产精品女| 2019国产精品| 成人激情图片网| 亚洲国产美女搞黄色| 日韩精品在线看片z| 成人国产一区二区三区精品| 一区二区三区在线播放| 91精品国产免费久久综合| 国产在线精品不卡| 亚洲欧美区自拍先锋| 欧美精品日韩综合在线| 国产伦精品一区二区三区免费迷| 中文字幕一区二区三区色视频| 欧美精品乱码久久久久久| 国产精品综合久久| 首页欧美精品中文字幕| 国产精品另类一区| 欧美一区永久视频免费观看| www.久久精品| 国产在线视视频有精品| 青青草精品视频| 亚洲免费资源在线播放| 国产精品免费丝袜| 国产亚洲va综合人人澡精品| 7777精品伊人久久久大香线蕉经典版下载 | 一本久久综合亚洲鲁鲁五月天 | 自拍偷拍亚洲欧美日韩| 精品乱人伦小说| 正在播放亚洲一区| 日本韩国视频一区二区| 成人免费视频app| 精品中文字幕一区二区小辣椒| 亚洲免费成人av| 一区二区三区在线免费播放| 亚洲日穴在线视频| 亚洲欧美一区二区久久 | 精品国产精品网麻豆系列 | 欧美日韩免费高清一区色橹橹| 欧美少妇bbb| 日韩一区二区三区电影在线观看| 欧美福利视频导航| 日韩欧美激情四射| 久久欧美一区二区| 日韩码欧中文字| 天天操天天色综合| 成人免费视频国产在线观看| 欧美综合欧美视频| 日韩精品专区在线影院观看 | 欧美精三区欧美精三区| 日韩欧美国产1| 中文字幕免费不卡在线| 国产精品毛片无遮挡高清| 亚洲欧美日韩国产综合在线| 日本欧美一区二区| 久草在线在线精品观看| 91免费国产在线| 国产日韩欧美制服另类| 五月激情综合婷婷| 色天天综合色天天久久| 欧美极品aⅴ影院| 久久99精品国产麻豆婷婷| 91麻豆精品在线观看| 久久九九国产精品| 裸体一区二区三区| 欧美日韩中文另类| 亚洲视频一区二区在线观看| 国产一区91精品张津瑜| 欧美一区在线视频| 亚洲一卡二卡三卡四卡无卡久久| 精彩视频一区二区| 欧美日韩国产首页| 亚洲成人久久影院| 色视频成人在线观看免| 国产精品色呦呦| 日本成人在线视频网站| 91福利视频久久久久| 中日韩免费视频中文字幕| 国产一区二区三区在线看麻豆| 欧美午夜精品久久久| 一区二区三区四区在线免费观看| 精品一区二区三区av| 国产午夜精品福利| 99久久精品免费| 一区二区三区色| 欧美老人xxxx18| 久久99精品国产| 久久精品欧美日韩精品| 99国内精品久久| 午夜精品一区二区三区免费视频| 欧美视频日韩视频在线观看| 青草av.久久免费一区| 久久久国产精品麻豆 | 欧美va亚洲va国产综合| 国产一区二区在线影院| 国产精品久久久久久妇女6080| 一本色道久久综合精品竹菊| 亚洲国产一区二区三区青草影视| 制服丝袜亚洲网站| 理论电影国产精品| 亚洲国产高清在线| 欧美片在线播放| 国产乱色国产精品免费视频| 国产女主播视频一区二区| 欧美日韩一区二区在线观看| 国产一区二区精品久久91| 国产精品乱码一区二区三区软件 | 久久婷婷国产综合精品青草| 欧美视频在线一区二区三区 | 天天影视涩香欲综合网| 国产精品亲子伦对白| 在线不卡a资源高清| 成人毛片视频在线观看| 美腿丝袜亚洲色图| 亚洲日本va午夜在线影院| 久久久久久麻豆| 337p日本欧洲亚洲大胆色噜噜| 欧美男人的天堂一二区| jizzjizzjizz欧美| 成人av电影免费在线播放| 国产夫妻精品视频| 国产一区二区三区电影在线观看| 亚洲一区二区三区在线| 综合网在线视频| 国产农村妇女毛片精品久久麻豆| 精品久久久久久久人人人人传媒| 制服丝袜亚洲网站| 日本高清视频一区二区| 91啪亚洲精品| 成人免费的视频| www.综合网.com| 91亚洲精品乱码久久久久久蜜桃| 色域天天综合网| 欧美挠脚心视频网站| 久久无码av三级| 亚洲欧美日韩中文播放| 日产欧产美韩系列久久99| 久久成人综合网| eeuss鲁片一区二区三区在线观看| 91在线视频网址| 日韩一级黄色片| 中文在线免费一区三区高中清不卡| 国产精品的网站| 日韩高清一区二区| 美女网站色91| 不卡av免费在线观看| 在线视频中文字幕一区二区| 精品视频一区二区不卡| 久久色.com| 亚洲午夜免费视频| 久久99精品久久久| 日本精品裸体写真集在线观看| 欧美三级乱人伦电影| 精品国产乱码久久久久久老虎| 国产精品乱码妇女bbbb| 久久国产免费看| 在线观看免费一区| 日本一区二区三区国色天香 | 色综合天天性综合| 精品久久久影院| 亚洲在线成人精品| 成人免费黄色大片| 精品捆绑美女sm三区| 国产精品入口麻豆原神| 天堂蜜桃91精品| 色噜噜偷拍精品综合在线| 久久久99久久精品欧美| 七七婷婷婷婷精品国产| 色综合网站在线| 亚洲欧洲另类国产综合| 国产很黄免费观看久久| 久久青草国产手机看片福利盒子| 水蜜桃久久夜色精品一区的特点| 91成人免费电影| 一区二区三区蜜桃|