欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
MySQL字符集及校對規則的理解

閱讀目錄:MySQL的字符集和校對規則

一、字符集(Character set)

  是多個(gè)字符(英文字符,漢字字符,或者其他國家語(yǔ)言字符)的集合,字符集種類(lèi)較多,每個(gè)字符集包含的字符個(gè)數不同。

特點(diǎn):

 ?、僮址幋a方式是用一個(gè)或多個(gè)字節表示字符集中的一個(gè)字符

 ?、诿糠N字符集都有自己特有的編碼方式,因此同一個(gè)字符,在不同字符集的編碼方式下,會(huì )產(chǎn)生不同的二進(jìn)制

常見(jiàn)字符集:

  ASCII字符集:基于羅馬字母表的一套字符集,它采用1個(gè)字節的低7位表示字符,高位始終為0。

  LATIN1字符集:相對于A(yíng)SCII字符集做了擴展,仍然使用一個(gè)字節表示字符,但啟用了高位,擴展了字符集的表示范圍。

  GBK字符集:支持中文,字符有一字節編碼和兩字節編碼方式。

  UTF8字符集:Unicode字符集的一種,是計算機科學(xué)領(lǐng)域里的一項業(yè)界標準,支持了所有國家的文字字符,utf8采用1-4個(gè)字節表示字符。

1、MySQL與字符集

  只要涉及到文字的地方,就會(huì )存在字符集和編碼方式。MySQL系統變量值:

 

2、正確使用字符集

  數據庫服務(wù)端的字符集具體要看存儲什么字符

以上這些參數如何起作用:

1.庫、表、列字符集的由來(lái)

 ?、俳◣鞎r(shí),若未明確指定字符集,則采用character_set_server指定的字符集。

 ?、诮ū頃r(shí),若未明確指定字符集,則采用當前庫所采用的字符集。

 ?、坌略鰰r(shí),修改表字段時(shí),若未明確指定字符集,則采用當前表所采用的字符集。

2.更新、查詢(xún)涉及到得字符集變量

  更新流程字符集轉換過(guò)程:character_set_client-->character_set_connection-->表字符集。

  查詢(xún)流程字符集轉換過(guò)程:表字符集-->character_set_result

3.character_set_database

  當前默認數據庫的字符集,比如執行use xxx后,當前數據庫變?yōu)閤xx,若xxx的字符集為utf8,那么此變量值就變?yōu)閡tf8(供系統設置,無(wú)需人工設置)。

3、MySQL客戶(hù)端與字符集

1.對于輸入來(lái)說(shuō):

  客戶(hù)端使用的字符集必須通過(guò)character_set_client、character_set_connection體現出來(lái):

   ?、僭诳蛻?hù)端對數據進(jìn)行編碼(Linux:utf8、windows:gbk)

   ?、贛ySQL接到SQL語(yǔ)句后(比如insert),發(fā)現有字符,詢(xún)問(wèn)客戶(hù)端通過(guò)什么方式對字符編碼:客戶(hù)端通過(guò)character_set_client參數告知MySQL客戶(hù)端的編碼方式(所以此參數需要正確反映客戶(hù)端對應的編碼)

   ?、郛擬ySQL發(fā)現客戶(hù)端的client所傳輸的字符集與自己的connection不一樣時(shí),會(huì )將client的字符集轉換為connection的字符集

   ?、躆ySQL將轉換后的編碼存儲到MySQL表的列上,在存儲的時(shí)候再判斷編碼是否與內部存儲字符集(按照優(yōu)先級判斷字符集類(lèi)型)上的編碼一致,如果不一致需要再次轉換

2.對于查詢(xún)來(lái)說(shuō):

  客戶(hù)端使用的字符集必須通過(guò)character_set_results來(lái)體現,服務(wù)器詢(xún)問(wèn)客戶(hù)端字符集,通過(guò)character_set_results將結果轉換為與客戶(hù)端相同的字符集傳遞給客戶(hù)端。(character_set_results默認等于character_set_client)

4、MySQL字符編碼轉換原理:

  問(wèn):若character_set_client為UTF8,而character_set_database為GBK,則會(huì )出現需要進(jìn)行編碼轉換的情況,字符集轉換的原理是什么?

  答:假設gbk字符集的字符串“你好”,需要轉為utf8字符集存儲,實(shí)際就是對于“你好”字符串中的每個(gè)漢字去utf8編碼表里面查詢(xún)對應的二進(jìn)制,然后存儲。

 

圖解字符集轉換過(guò)程:

 ?、費ySQL Server收到請求時(shí)將請求數據從character_set_client轉換為character_set_connection;

 ?、谶M(jìn)行內部操作前將請求數據從character_set_connection轉換為內部操作字符集

確定步驟:

--使用每個(gè)數據字段的CHARACTER SET設定值;

--若上述值不存在,則使用對應數據表的DEFAULT CHARACTER SET設定值;

--若上述值不存在,則使用對應數據庫的DEFAULT CHARACTER SET設定值;

--若上述值不存在,則使用character_set_server設定值;

 ?、蹖⒉僮鹘Y果從內部操作字符集轉換為character_set_results。

5、字符集常見(jiàn)處理操作

1.查看字符集編碼設置

  mysql> show variables like '%character%';

2.設置字符集編碼

  mysql> set names 'utf8';

相當于同時(shí):

  set character_set_client = utf8;

  set character_set_results = utf8;

  set character_set_connection = utf8;

3.修改數據庫字符集

  mysql> alter database database_name character set xxx;

只修改庫的字符集,影響后續創(chuàng )建的表的默認定義;對于已創(chuàng )建的表的字符集不受影響。(一般在數據庫實(shí)現字符集即可,表和列都默認采用數據庫的字符集

4.修改表的字符集

  mysql> alter table table_name character set xxx;

只修改表的字符集,影響后續該表新增列的默認定義,已有列的字符集不受影響。

  mysql> alter table table_name convert to character set xxx;

同時(shí)修改表字符集和已有列字符集,并將已有數據進(jìn)行字符集編碼轉換。

5.修改列字符集

格式:

ALTER TABLE table_name MODIFY

column_name {CHAR | VARCHAR | TEXT} (column_length)

    [CHARACTER SET charset_name]

    [COLLATE collation_name]

mysql> alter table table_name modify col_name varchar(col_length) character set xxx;

6、字符集的正確實(shí)踐:

MySQL軟件工具本身是沒(méi)有字符集的,主要是因為工具所在的OS的字符集(Windows:gbk、Linux:utf8),所以字符集的正確實(shí)踐非常重要:

  1.對于insert來(lái)說(shuō),character_set_client、character_set_connection相同,而且正確反映客戶(hù)端使用的字符集

  2.對于select來(lái)說(shuō),character_set_results正確反映客戶(hù)端字符集

  3.數據庫字符集取決于我們要存儲的字符類(lèi)型

  4.字符集轉換最多發(fā)生一次,這就要求character_set_client、character_set_connection相同

  5.所有的字符集轉換都發(fā)生在數據庫端

綜述:

  1、建立數據庫的時(shí)候注意字符集(gbk、utf8);

  2、連接數據庫以后,無(wú)論是執行dml還是select,只要涉及到varchar、char列,就需要設置正確的字符集參數。

 

二、校對規則collation校對

  字符集是一套符號和對應的編號

查看數據庫支持的所有字符集(charset):

mysql> show character set;

校對規則(collation):

  是在字符集內用于字符比較和排序的一套規則,比如有的規則區分大小寫(xiě),有的則無(wú)視。

mysql> create table t1(id int,name varchar(20));    #t1建表沒(méi)有指定校對規則

 mysql> show collation;  #查看數據庫支持的所有校對規則

mysql> show variables like 'collation_%';  #查看當前字符集和校對規則設置

校對規則特征:

 ?、?span style="color: #ff6600;">兩個(gè)不同的字符集不能有相同的校對規則;

 ?、诿總€(gè)字符集有一個(gè)默認校對規則;

 ?、鄞嬖谛σ巹t命名約定:以其相關(guān)的字符集名開(kāi)始,中間包括一個(gè)語(yǔ)言名,并且以_ci(大小寫(xiě)不敏感)、_cs(大小寫(xiě)敏感)或_bin(二元)結束。

注意:

  系統使用utf8字符集,若使用utf8_bin校對規則執行SQL查詢(xún)時(shí)區分大小寫(xiě),使用utf8_general_ci不區分大小寫(xiě)(默認的utf8字符集對應的校對規則是utf8_general_ci)。

示例:

mysql> create table t2(id int,name varchar(20)) character set=gbk collate=gbk_bin;    #t2建表指定校對規則(區分大小寫(xiě))

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
MySQL數據庫字符集
mysql_query("set names utf8");
MySQL字符集選擇
mysql之字符集與校對集
pommo mailinglist - 網(wǎng)站設計 - 設計管理在線(xiàn) |設計管理至關(guān)重要|設...
MySQL字符集詳解
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久