????平時建數(shù)據(jù)庫葬荷,建表啊都沒有很在意這個兩個規(guī)則销斟,應(yīng)該不只我是沒在意這個吧,如果不是出現(xiàn)問題大部分應(yīng)是選擇默認(rèn)的規(guī)則测暗,竟然有這方面的規(guī)則央串。下面查閱下中文官網(wǎng),一起學(xué)習(xí)下這方面知識(中文:https://www.mysqlzh.com/doc/95.html芝囤,英文:https://dev.mysql.com/doc/refman/8.0/en/charset-general.html)蚤认。
? ? 字符集和排序的規(guī)則含義:
看圖可以了解到他們的含義隶垮,他們兩之間的關(guān)系統(tǒng):“任何一個給定的字符集至少有一個校對規(guī)則。它可能有幾個校對規(guī)則”饲宿,意思表達(dá)很明確了厦酬,至少有一個校對規(guī)則,那問題來了平時建庫建表沒關(guān)注到這些瘫想,是不是有一個默認(rèn)的規(guī)則仗阅,那這規(guī)則是什么?下面的繼續(xù)看看文檔信息:
大家可以根據(jù)上圖查詢到數(shù)據(jù)庫維度的配置的默認(rèn)的規(guī)則信息国夜,字符集和校對規(guī)則有4個級別的默認(rèn)設(shè)置:服務(wù)器級减噪、數(shù)據(jù)庫級、表級和連接級车吹,旋廷,我們常用其它維度的比如:表,字段礼搁,直接查看表的結(jié)構(gòu)信息就一目了然了饶碘,不同維度之間的關(guān)系必然是粒度最細(xì)最優(yōu)先,還有一種情況?就是直接在sql中使用COLLATE?命令來定校對規(guī)則(這個基本不會用到)馒吴。
字符集和排序的規(guī)則分類:
種類太多就不易截圖了扎运,想知道所有類型可以用上面的命令在數(shù)據(jù)庫查看(https://dev.mysql.com/doc/refman/8.0/en/charset-charsets.html).
常用字符集:
上圖可以看出來 utf8mb4與utf8之間的區(qū)別了,默認(rèn)的校對規(guī)則不一樣饮戳,以及最大的長度一個3字節(jié)豪治,一個是4字節(jié)。其實(shí)支持中文支持字符集還有GBK國家標(biāo)準(zhǔn)扯罐,那為什么不用GBK了负拟,UTF8是國標(biāo)準(zhǔn),以及他們存儲的對字符存儲的字節(jié)數(shù)也不一樣歹河,GBK中英文都雙字節(jié)掩浙,UTF8中文三字節(jié),英文一字節(jié)秸歧。相對而言UTF8更優(yōu)一些厨姚。
常用校對規(guī)則:
? ? ? ?介紹時也提到一下校對規(guī)則后綴的一些含義,可以很清晰看出來的他們的實(shí)際作用键菱。 uft8mb4的校規(guī)其實(shí)挺多的:
例舉一下幾個常用的: utf8mb4_bin,utf8mb4_general_ci,utf8mb4_0900_ai_ci,utf8mb4_0900_as_cs,看看資料的描述谬墙,
上面提到了_CS他們是大小敏感的,其中_ bin也是大小敏感经备,注意了這個規(guī)則不僅影響著排序的結(jié)果拭抬,還是影響到大小寫的查詢結(jié)果,再繼續(xù)看看_ai,_as的是什么含義:
其它注意點(diǎn):
今天就學(xué)習(xí)到這里侵蒙,有其它關(guān)鍵信息的地方后續(xù)再補(bǔ)上造虎,散會。