字符集的級別
show variables like ‘%charecter%’;
character_set_server 服務(wù)器級別
一般在
5.7: C:\ProgramData\MySQL\MySQL Server 5.7\my.ini
8.0: C:\ProgramData\MySQL\MySQL Server 5.7\my.ini
Linux 系列 vim /etc/my.cnf
character_set_server=xxx # 設(shè)定默認(rèn)字符集
collation_server=xxx_chinese_ci # 對應(yīng)的默認(rèn)的比較規(guī)則
character_set_database 數(shù)據(jù)庫級別
創(chuàng)建數(shù)據(jù)庫指定
create database xxx
[[default] character set 字符集名稱]
[[default] collate 比較規(guī)則名稱;
修改數(shù)據(jù)庫
alter database xxx
[[default] character set 字符集名稱]
[[default] collate 比較規(guī)則名稱];
create database db_test
character set gb2312
collate gb2312_chinese_ci;create database xxxx # 沒有指定,則使用服務(wù)器級別的字符集和比較規(guī)則
表級別
create table 表名(
列的信息
) engine=InnoDB [[default] character set 字符集名稱] [collate 比較規(guī)則名稱]alter table 表名
[[default] character set 字符集名稱]
[collate 比較規(guī)則]如果創(chuàng)建和修改表的語句中沒有指明字符集和比較規(guī)則,將使用該表所在的數(shù)據(jù)庫的字符集和比較規(guī)則作為該表的字符集和比較規(guī)則
create table t(
col varchar(10)
) character set utf8 collate utf8_general_ci;
列級別
對于存儲字符串的列,同一個表中的不同的列也可以有不同的字符集和比較規(guī)則。我們在創(chuàng)建和修改列定義的時候可以指定該列的字符集和比較規(guī)則,如果不指明,延用表的字符集和比較規(guī)則
create table xx(
列名1 字符串類型 [character set 字符集名稱] [ collate 比較規(guī)則名稱],
列名2…
);alter table xx modify 列名 字符串類型 [character set 字符集名稱] [ collate 比較規(guī)則名稱];
character_set_client 服務(wù)器解碼請求的使用的字符集
character_set_connection 服務(wù)器處理請求時會把請求字符串從 character_set_client 轉(zhuǎn)為 charater_set_connection
character_set_results 服務(wù)器向客戶端返回數(shù)據(jù)的使用的字符集、
mysql 5.7 默認(rèn)字符集 latini, 設(shè)置 utf8 ,等價于utf8mb3
mysql 8.0 默認(rèn)字符集 utf8mb4
查看mysql 支持的字符集、和比較規(guī)則
show collation like ‘XXX%’;
查看 服務(wù)器的字符集和比較規(guī)則
查看 數(shù)據(jù)庫的字符集和比較規(guī)則
查看數(shù)據(jù)庫的字符集和比較規(guī)則
show create database xxx;
修改數(shù)據(jù)庫字符集和比較規(guī)則
alter database xxx character set ‘utf8mb4’ collate ‘utf8_general_ci’;
經(jīng)驗
開發(fā)中通常把 character_set_client 、character_set_connection、character_set_results 這個三個系統(tǒng)變量【會話系統(tǒng)變量】設(shè)置成和客戶端使用的字符集要一致。這樣減少了很多無謂的字符集轉(zhuǎn)換。
set NAMES 字符集;
等價于
set character_set_client=字符集名稱;
set character_set_connection=字符集名稱;
set character_set_results=字符集名稱;
文章來源:http://www.zghlxwxcb.cn/news/detail-679134.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-679134.html
到了這里,關(guān)于mysql 字符集、比較規(guī)則, 比較規(guī)則底層邏輯的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!