資料庫字元集mysql
字元集:羅列所有圖形字元的一張大表。
排序規則:定義各個圖形字元之間的大小比較規則,比如:是否區分大小寫,區分全形和半形等。在軟體使用中,一般我們只指定字元編碼即可,因為確定了字元編螞瞎碼字元集自然就確定了。但是在資料庫類軟體中,我們除了要指定編碼規則,還需要指定排序規則,因為,資料庫是要提供枝蔽模糊匹配、排序顯示功能的。sql可以查看mysql支持的字元集編碼和排序規則,其中每個字元集編碼都有一個默認猛物州的排序規則。
B. MySQL中資料庫的默認字元集和校對規則有哪些
1. ASCII
用途:用來映射簡單的單位元組字元,比如大小寫英文字母、阿拉伯數字、常用的標點符、運算符、控制字元等。
編碼范圍:U+0000 - U+007F
注意:對於用這類字元的場景夠用了,但是卻無法表達比如漢字,日文等編碼。
2. UNICODE
用途:用來映射包含 ASCII 以內的其他的所有字元。
編碼范圍:U+0000 - U+10FFFF
注意:ASCII 是 UNICODE 的子集,ASCII 編碼的字元可以無損轉換為 UNICODE 編碼的字元。
MySQL 常用字元集
1. Latin1
Latin1 是 cp1252 或者 ISO-8859-1 的別名。ISO-8859-1 編碼是單位元組編碼,向下兼容 ASCII。
編碼范圍:U+0000 - U+00FF
ISO-8859-1 收錄的字元除 ASCII 收錄的字元外,還包括西歐語言、希臘語、泰語、阿拉伯語、希伯來語對應的文字元號。
單位元組內的空間都被 ISO-8859-1 編碼佔用,所以能夠用 ISO-8859-1 編碼存儲、傳輸其他任何編碼的位元組流。
比如把一個 Utf8mb4 的編碼或者 GBK 的編碼存入 Latin1,不會有任何問題。因為 Latin1 保留了原始的位元組流,這也就是 MySQL 長期以來把 Latin1 做默認字元集的原因。
但是由於 Latin1 對任何字元都存放位元組流,造成了字元個數的浪費。
比如:
CHAR(10) CHARACTER SET LATIN1;CHAR(10) CHARACTER SET UTF8;
該欄位中存儲字元個數 UTF8 是 Latin1 的三倍!!!
2. GB18030
GB18030 是中國官方標准字元集,向前兼容 GBK、GB2312,是這兩個的超集。用 1、2、4 個位元組分別表示一個符號。比如對一般中文字元,默認是用兩個位元組編碼存儲。Windows 系統,默認用的就是 GB18030。
若只是存儲中文字元,那 GB18030 最佳。
原因有兩點:
1)佔用空間小,比如比 UTF8 小。
2)存儲的漢字根據拼音來排序,檢索快。
3. UTF8
UTF8 是 Unicode 的編碼實現,可以存儲 UNICODE 編碼對應的任何字元, 這也是使用最多的一種編碼。最大的特點就是變長的編碼方式,用 1 到 4 個位元組表示一個符號,可以根據不同的符號編碼位元組長度。
字母或數字用 1 位元組,漢字用 3 位元組,emoji 表情符號用 4 位元組。UTF8 字元集目前是使用最廣泛的。
注意!MySQL 里常說的 UTF8 是 UTF8MB3 的別名,UTF8MB3 是 UTF8MB4 的子集,UTF8MB4 才是真正的 4 位元組 UTF8 字元集!
UTF8MB3 表示最大支持 3 個位元組存儲字元,UTF8MB4 表示最大 4 個位元組存儲字元。根據實際需要和未來展望,MySQL 8.0 已經默認用 UTF8MB4 基礎字元集。
C. MySQL字元集如何設置
設置伺服器級和資料庫級字元集的方法如下:
對於伺服器級字元集,可以通過以下步驟進行設置:
打開伺服器配置文件(如my.cnf或my.ini),找到[mysqld]部分。
在[mysqld]部分中添加以下行:
character-set-server=字元集名稱
其中,字元集名稱是您選擇的字元集的名稱。例如,如果您想使用UTF-8字元集,可以添加以下行:
character-set-server=utf8
對於資料庫級字元集,可以在創建資料庫時指定字元集。例如,如果您想將資料庫的字元集設置為UTF-8,可以執行以下SQL語句:
CREATE DATABASE database_name CHARACTER SET utf8 COLLATE utf8_general_ci;
其中,database_name是您要創建的資料庫的名稱。
請注意,以上設置方法僅供參考。具體設置方法可能因不同的MySQL版本和環境而有所不同。
D. mysql濡備綍鍦ㄥ凡鏈夋暟鎹搴撲笂緇熶竴瀛楃﹂泦
鍓嶈█
鏁版嵁搴撻噷闈錛岄儴鍒嗘暟鎹琛ㄥ拰鏁版嵁鏄痩atin1鐨勶紝閮ㄥ垎鏁版嵁琛ㄥ拰鏁版嵁鏄疷TF8錛岃繕鏈夐儴鍒嗚〃錛岃〃緇撴瀯鏄痷tf8鑰屾暟鎹鏄痩atin1銆
榪欑嶅囪懇鎯呭喌錛屽伐浣滀簡鍗佸嚑騫寸殑鎴戱紝榪樻槸絎涓嬈$板埌銆備笅闈㈣翠竴涓嬶紝鎬庝箞鏍峰瓧絎﹂泦緇熶竴鎴恥tf8
1錛屽緩涓涓絀烘暟鎹搴
2錛屾妸琛ㄧ粨鏋勫拰鏁版嵁鏄痷tf8鐨勮〃瀵煎嚭錛岀劧鍚庣洿鎺ュ煎叆鍒版柊鐨勬暟鎹搴撲腑
3錛屾暟鎹琛ㄥ拰鏁版嵁閮芥槸latin1鐨勮〃錛屽厛瀵煎嚭琛ㄧ粨鏋勫拰鏁版嵁錛屽姞涓--default-character-set=latin1錛屽皢瀵煎嚭鏂囦歡涓錛宭atin1鏀逛負utf8錛屽湪瀵煎叆鍒版柊鐨勬暟鎹搴撲腑銆
4錛岃〃緇撴瀯鏄痷tf8錛岃〃鏁版嵁鏄痩atin1鐨勶紝鏈変簩縐嶆柟娉曪細
4.1錛屽厛瀵煎嚭琛ㄧ粨鏋勶紝瀵煎叆鍒版柊鐨勬暟鎹搴撲腑銆傚煎嚭鏁版嵁錛屽姞涓--default-character-set=utf8錛屽洜涓鴻〃緇撴瀯鏄痷tf8錛岃〃鏁版嵁鏄痩atin1錛屽叆搴撴椂宸蹭貢鐮併傚湪灝嗘暟鎹瀵煎叆鍒版柊搴撲腑銆傝繖縐嶆柟妗堟湁緙虹偣錛--default-character-set=utf8錛屽煎嚭鐨勬暟鎹鍙鑳戒細鏈変涪澶憋紝瀵煎嚭鐨勬暟鎹錛屽湪瀵煎叆鏃跺彲鑳戒細鎶ラ敊銆
4.2錛屽彲浠ラ氳繃binary瀛楃﹂泦鍋氫腑杞錛屾帹鑽愯繖縐嶆柟娉
UPDATE user SET user_name = CONVERT(CONVERT(CONVERT(user_name USING latin1) USING binary) USING UTF8);
榪欑嶆柟娉曪紝鐪佸幓浜嗗煎嚭瀵煎叆鐨勯夯鐑︼紝閫熷害姣旇緝蹇錛11w鏉℃暟鎹錛屽樊涓嶅5-6縐
鏁版嵁搴撹捐¤繖鍧楅潪甯擱噸瑕侊紝鍦ㄨ捐℃暟鎹搴撴椂涓瀹氳佽冭檻娓呮氥傚湴鍩轟笉鐗錛屽ぇ鍘﹁繜鏃╀細鍊掔殑銆
鎮ㄥ彲鑳芥劅鍏磋叮鐨勬枃絝:綆鏋恗ysql瀛楃﹂泦瀵艱嚧鎮㈠嶆暟鎹搴撴姤閿欓棶棰榤ysql淇鏀規暟鎹搴撶紪鐮(鏁版嵁搴撳瓧絎﹂泦)鍜岃〃鐨勫瓧絎︾紪鐮佺殑鏂規硶mysql瀛楃﹂泦鍜屾暟鎹搴撳紩鎿庝慨鏀規柟娉曞垎浜獶W涓閾炬帴mysql鏁版嵁搴撴椂錛屽緩絝嬪瓧絎﹂泦涓鏂囧嚭鐜頒貢鐮佺殑瑙e喅鏂規硶
E. mysql中怎麼設置字元集
方法1:通過客戶端修改表欄位的默認字元集
打開SQLyog客戶端,連接資料庫如下圖所示,點擊connection 按鈕 連接資料庫
我的資料庫名稱為e,然後我隨意找到資料庫中test2表,右鍵-----》Alter Table
如果安裝資料庫的 時候 沒有選擇字元集設置,那麼mysql資料庫默認為latin1,在箭頭部分選擇utf8字元集
方法2:用資料庫命令修改字元集
首先查看當前資料庫字元集,在命令框中執行如下命令:show variables like 'character_set_%';
查看字元集排序設置,執行命令:show variables like 'collation_%';
修改伺服器級別字元集,執行命令:
1,臨時修改:SET GLOBAL character_set_server=utf8;
修改表級別,命令如下:ALTER TABLE table_name DEFAULT CHARSET utf8;
修改資料庫級別,命令如下:use e(換成你要修改的資料庫名,在這里我的資料庫為e),,然後執行命令:alter database e character set utf-8;
或者修改mysql的my.ini文件中的字元集鍵值
[mysql]
[mysqld]
重啟mysql
F. mysql資料庫使用的是什麼字元集
MySQL字元集多種多樣,下面為您列舉了其中三種最常見的MySQL字元集查看方法,該方法供您參考,希望對您學習MySQL資料庫能有所啟迪。
一、查看MySQL資料庫伺服器和資料庫MySQL字元集。
mysql>showvariableslike'%char%'; +--------------------------+-------------------------------------+------ |Variable_name|Value|...... +--------------------------+-------------------------------------+------ |character_set_client|utf8|......--
客戶端字元集 |character_set_connection|utf8|...... |character_set_database|utf8|......--
資料庫字元集 |character_set_filesystem|binary|...... |character_set_results|utf8|...... |character_set_server|utf8|......--
伺服器字元集 |character_set_system|utf8|...... |character_sets_dir|D:MySQLServer5.0sharecharsets|...... +--------------------------+-------------------------------------+------
二、查看MySQL數據表(table)的MySQL字元集。
mysql>showtablestatusfromsqlstudy_dblike'%countries%'; +-----------+--------+---------+------------+------+-----------------+------ |Name|Engine|Version|Row_format|Rows|Collation|...... +-----------+--------+---------+------------+------+-----------------+------ |countries|InnoDB|10|Compact|11|utf8_general_ci|...... +-----------+--------+---------+------------+------+-----------------+------
三、查看MySQL數據列(column)的MySQL字元集。
mysql>showfullcolumnsfromcountries; +----------------------+-------------+-----------------+-------- |Field|Type|Collation|....... +----------------------+-------------+-----------------+-------- |countries_id|int(11)|NULL|....... |countries_name|varchar(64)|utf8_general_ci|....... |countries_iso_code_2|char(2)|utf8_general_ci|....... |countries_iso_code_3|char(3)|utf8_general_ci|....... |address_format_id|int(11)|NULL|....... +----------------------+-------------+-----------------+--------