新聞中心
在MySQL中,字符集和排序規(guī)則是非常重要的概念,因?yàn)樗鼈儧Q定了存儲在數(shù)據(jù)庫中的文本如何被存儲和處理。因此,在處理任何MySQL數(shù)據(jù)庫時,必須了解和使用正確的字符集和排序規(guī)則。本文將介紹mysql查詢數(shù)據(jù)庫編碼的方法,幫助讀者更好地理解和處理MySQL中的字符集和排序規(guī)則。

江油網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),江油網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為江油上千多家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)要多少錢,請找那個售后服務(wù)好的江油做網(wǎng)站的公司定做!
一、什么是字符集和排序規(guī)則?
字符集是一個由字符和二進(jìn)制編碼組成的映射,它定義了每個字符如何被存儲和比較。MySQL支持多種字符集,包括UTF-8、GBK、GB2312、Latin1等。當(dāng)選擇某個字符集時,需要知道它所支持的字符集范圍和對應(yīng)的二進(jìn)制編碼。
排序規(guī)則定義了MySQL如何比較字符和字符串,包括大小寫敏感、重音符號處理等。MySQL支持不同的排序規(guī)則,如utf8_general_ci、utf8_bin、gbk_chinese_ci等。
二、如何查詢數(shù)據(jù)庫編碼?
1.查詢字符集
在MySQL中,查詢數(shù)據(jù)庫的字符集可以通過以下命令實(shí)現(xiàn):
SHOW VARIABLES LIKE ‘character_set_database’;
這將返回一個結(jié)果集,其中包含有關(guān)默認(rèn)字符集和排序規(guī)則的信息。其中,character_set_database標(biāo)識了當(dāng)前數(shù)據(jù)庫的字符集。
2.查詢排序規(guī)則
查詢數(shù)據(jù)庫的排序規(guī)則可以使用以下命令:
SHOW VARIABLES LIKE ‘collation_database’;
這返回一個結(jié)果集,其中包含有關(guān)默認(rèn)字符集和排序規(guī)則的信息。其中collation_database標(biāo)識當(dāng)前數(shù)據(jù)庫的排序規(guī)則。
三、如何修改數(shù)據(jù)庫編碼?
如果需要修改數(shù)據(jù)庫的字符集和排序規(guī)則,則需要執(zhí)行以下步驟:
1.備份數(shù)據(jù)庫
在修改任何MySQL數(shù)據(jù)庫之前,建議先備份數(shù)據(jù)庫,以便在需要時進(jìn)行恢復(fù)。
2.修改配置文件
在修改MySQL數(shù)據(jù)庫的字符集和排序規(guī)則之前,需要修改MySQL服務(wù)器的配置文件my.cnf或my.ini,并將以下配置項添加到[mysqld]部分中:
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
character-set-server指定了MySQL服務(wù)器使用的字符集,而collation-server指定了排序規(guī)則。
3.重啟MySQL服務(wù)器
完成以上步驟后,請重啟MySQL服務(wù)器,以使更改生效。
4.修改數(shù)據(jù)庫表
如果需要修改現(xiàn)有數(shù)據(jù)庫中的表的字符集和排序規(guī)則,則需要使用ALTER TABLE語句。例如,以下語句將表users的字符集和排序規(guī)則修改為utf8mb4和utf8mb4_unicode_ci:
ALTER TABLE users CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
MySQL數(shù)據(jù)庫的字符集和排序規(guī)則是非常重要的概念。正確地選擇和配置它們將有助于確保存儲在數(shù)據(jù)庫中的文本正確地處理和顯示。本文介紹了查詢MySQL數(shù)據(jù)庫編碼的方法,并提供了修改字符集和排序規(guī)則的步驟。希望此文章可以幫助讀者更好地處理MySQL數(shù)據(jù)庫中的字符集和排序規(guī)則。
相關(guān)問題拓展閱讀:
- 如何用MySQL workbench查詢數(shù)據(jù)
- php連接數(shù)據(jù)庫插入數(shù)據(jù)后,mysql中查詢漢字字符亂碼
如何用MySQL workbench查詢數(shù)據(jù)
方法/步驟
之一步,雙擊打開MySQL Workbench,新建一個數(shù)據(jù)庫worker,設(shè)置謹(jǐn)遲數(shù)據(jù)庫編碼格式是utf-8,點(diǎn)擊“Apply”,創(chuàng)建數(shù)據(jù)庫編碼
CREATE SCHEMA `worker` DEFAULT CHARACTER SET utf8 ;
如下圖所示:
第二步,使用worker數(shù)據(jù)庫,查看數(shù)據(jù)庫表情況,可以使用show命令,如下圖所示:
第三步,新建一張worker信息表,創(chuàng)建數(shù)據(jù)庫表SQL語句具體如下:
create table t_worker_info(
id int(8)
primary key
,
worker_id int(6) not null,
worker_name varchar(20) not null,
worker_age int(2),
worker_sex varchar(2),
worker_addr varchar(100)
);
如下圖所示:
第四步,數(shù)神晌派據(jù)庫表t_worker_info建好了游賀后,向表里插入一些數(shù)據(jù),插入數(shù)據(jù)SQL語句
insert into t_worker_info (id,worker_id,worker_name,worker_age,worker_sex,worker_addr)
values (,100,’zhangsan’,34,’M’,’hubei’);
如下圖所示:
第五步,創(chuàng)建數(shù)據(jù)庫查詢
存儲過程
query_procedure,具體實(shí)現(xiàn)如下圖所示:
第六步,編寫完了存儲過程后,在查詢窗口調(diào)用存儲過程
call query_procedure(30,’M’);
如下圖所示:
有兩種方法,一種方法使用mysql的check table和repair table 的sql語句,另一種方法是使用MySQL提供的多個myisamchk, isamchk數(shù)據(jù)檢測恢復(fù)工具。前者使用起來比較簡便。推薦使用。
1. check table 和 repair table
登陸mysql 終端:
mysql -uxxxxx -p dbname
check table tabTest;
如果出現(xiàn)的結(jié)果說棗絕Status是OK,則不用修復(fù),如果有Error,可以用:
repair table tabTest;
進(jìn)行修復(fù),修復(fù)之后可以在用check table命令來進(jìn)行檢查。在新版本的phpMyAdmin里面也可以使用check/repair的功能。
2. myisamchk, isamchk
其中myisamchk適用于MYISAM類型的數(shù)據(jù)表,而凳粗姿isamchk適用于ISAM類型的數(shù)據(jù)表。這兩條命令的主要參數(shù)相同,一般新的系統(tǒng)都使用MYISAM作為缺省的凳慎數(shù)據(jù)表類型,這里以myisamchk為例子進(jìn)行說明。當(dāng)發(fā)現(xiàn)某個數(shù)據(jù)表出現(xiàn)問題時可以使用:
myisamchk tablename.MYI
進(jìn)行檢測,如果需要修復(fù)的話,可以使用:
myisamchk -of tablename.MYI
關(guān)于myisamchk的詳細(xì)參數(shù)說明,可以參見它的使用幫助。需要注意的時在進(jìn)行修改時必須確保MySQL服務(wù)器沒有訪問這個數(shù)據(jù)表,保險的情況下是更好在進(jìn)行檢測時把MySQL服務(wù)器Shutdown掉。
另外可以把下面的命令放在你的rc.local里面啟動MySQL服務(wù)器前:
&& /pathtochk/myisamchk -of /DATA_DIR/*/*.MYI
其中的/tmp/mysql.sock是MySQL監(jiān)聽的Sock文件位置,對于使用RPM安裝的用戶應(yīng)該是/var/lib/mysql/mysql.sock,對于使用源碼安裝則是/tmp/mysql.sock可以根據(jù)自己的實(shí)際情況進(jìn)行變更,而pathtochk則是myisamchk所在的位置,DATA_DIR是你的MySQL數(shù)據(jù)庫存放的位置。
需要注意的時,如果你打算把這條命令放在你的rc.local里面,必須確認(rèn)在執(zhí)行這條指令時MySQL服務(wù)器必須沒有啟動!檢測修復(fù)所有數(shù)據(jù)庫(表)
TABLE 語句
具體語法:TABLE table_name >
其實(shí)從語法上看,可以排序,也可以過濾記錄集,不咐槐過比較簡單,沒有 SELECT 那么強(qiáng)大。
示例 1
簡單的建一張很小的表 y1,記錄數(shù)為 10 條。表 t1,插入 10 條記做攜錄
mysql-(ytt/3305)->create table t1 (r1 int,r2 int);
Query OK, 0 rows affected (0.02 sec)
mysql-(ytt/3305)->insert into t1
with recursive aa(a,b) as (
select 1,1
union all
select a+1,ceil(rand()*20) from aa where a select * from t1;+——+——+| r1 | r2 |+——+——+| 1 | 1 || 2 | 9 || 3 | 9 || 4 | 17 || 5 | 17 || 6 | 16 || 7 | 6 || 8 | 衡胡友1 || 9 | 10 || 10 | 3 |+——+——+10 rows in set (0.00 sec)
TABLE 結(jié)果mysql-(ytt/3305)->table t1;+——+——+| r1 | r2 |+——+——+| 1 | 1 || 2 | 9 || 3 | 9 || 4 | 17 || 5 | 17 || 6 | 16 || 7 | 6 || 8 | 1 || 9 | 10 || 10 | 3 |+——+——+10 rows in set (0.00 sec)
看下 table 的執(zhí)行計劃mysql-(ytt/3305)->explain table t1 order by r1 limit 2\G*************************** 1. row ***************************id: 1 select_type: SIMPLEtable: t1 partitions: NULLtype: ALLpossible_keys: NULLkey: NULL key_len: NULLref: NULLrows:filtered: 100.Extra: Using filesort1 row in set, 1 warning (0.00 sec)
其實(shí)可以看到 TABLE 內(nèi)部被 MySQL 轉(zhuǎn)換為 SELECT 了。mysql-(ytt/3305)->show warnings\G*************************** 1. row *************************** Level: Note Code: 1003Message: /* select#1 */ select `ytt`.`t1`.`r1` AS `r1`,`ytt`.`t1`.`r2` AS `r2` from `ytt`.`t1` order by `ytt`.`t1`.`r1` limit 21 row in set (0.00 sec)
那其實(shí)從上面簡單的例子可以看到 TABLE 在內(nèi)部被轉(zhuǎn)成了普通的 SELECT 來處理。示例 2應(yīng)用于子查詢里的子表。這里要注意,內(nèi)表的字段數(shù)量必須和外表過濾的字段數(shù)量一致??寺”?t1 結(jié)構(gòu)mysql-(ytt/3305)->create table t2 like t1;Query OK, 0 rows affected (0.02 sec)
克隆表 t1 數(shù)據(jù)mysql-(ytt/3305)->insert into t2 table t1;Query OK, 10 rows affected (0.00 sec)Records: 10 Duplicates: 0 Warnings: 0
table t1 被當(dāng)做內(nèi)表,表 t1 有兩個字段,必須同時滿足 t2 檢索時過濾的字段也是兩個。mysql-(ytt/3305)->select * from t2 where (r1,r2) in (table t1);+——+——+| r1 | r2 |+——+——+| 1 | 1 || 2 | 9 || 3 | 9 || 4 | 17 || 5 | 17 || 6 | 16 || 7 | 6 || 8 | 1 || 9 | 10 || 10 | 3 |+——+——+10 rows in set (0.00 sec)
注意:這里如果過濾的字段數(shù)量和子表數(shù)量不一致,則會報錯。
怎么使用Mysql Workbench 查詢mysql數(shù)據(jù)庫
有兩種方法,一種方法使用mysql的check table和repair table 的sql語句,另一種方法是使用MySQL提供的多個myisamchk, isamchk數(shù)據(jù)檢測恢復(fù)工具。前者使用起來比較簡便。推薦使用。
1. check table 和 repair table
登陸mysql 終端:
mysql -uxxxxx -p dbname
check table tabTest;
如果出現(xiàn)的結(jié)果說Status是OK,則不用修復(fù),橋返如果有Error,可以用:
repair table tabTest;
進(jìn)行修復(fù),修復(fù)之后可以在用check table命令來進(jìn)行檢查。在新版本的phpMyAdmin里面也可以使用check/repair的功能。
2. myisamchk, isamchk
其中myisamchk適用于MYISAM類型的數(shù)據(jù)表,而isamchk適用于ISAM類型的數(shù)據(jù)表。這兩條命令的主要參數(shù)相同,一般新的系統(tǒng)都使用MYISAM作為缺省的數(shù)據(jù)表類型,這里以myisamchk為例子進(jìn)行說明。當(dāng)發(fā)現(xiàn)某個數(shù)據(jù)表出現(xiàn)問題時可以使用:
myisamchk tablename.MYI
進(jìn)行檢測,如果需要修復(fù)的話,可以使用:
myisamchk -of tablename.MYI
關(guān)于myisamchk的詳細(xì)參數(shù)說明,可以參見它的使用幫助。需要注意的時在進(jìn)行修改時必須確保MySQL服務(wù)器沒有訪問這個數(shù)據(jù)表,保險的情況下是更好在進(jìn)碰扮行檢測時把MySQL服敏吵饑務(wù)器Shutdown掉。
有兩種方法,一種方法使用mysql的check table和repair table 的sql語句,另一種方法是使用MySQL提供的多個myisamchk, isamchk數(shù)據(jù)檢測恢復(fù)工具。前者使用起來比較簡便。推薦使用。
1. check table 和 repair table
登陸mysql 終端:
mysql -uxxxxx -p dbname
check table tabTest;
如果出現(xiàn)的結(jié)果說Status是OK,則不用修復(fù),如果有Error,可以用:
repair table tabTest;
進(jìn)行修復(fù),修復(fù)之后可以在用check table命令來進(jìn)行檢查。在新版本的phpMyAdmin里面也可以使用check/repair的功能。
2. myisamchk, isamchk
其中myisamchk適用于MYISAM類型的數(shù)棗絕據(jù)表,而isamchk適用于ISAM類型的數(shù)據(jù)表。這兩條命令的主要參數(shù)相同,一般新的系統(tǒng)都使用MYISAM作為缺省的數(shù)據(jù)表類型,這里以myisamchk為例子進(jìn)行說明。當(dāng)發(fā)現(xiàn)某個數(shù)據(jù)表出現(xiàn)問題時可以使用:
myisamchk tablename.MYI
進(jìn)行檢測,如果需要修復(fù)的話,凳粗姿可以使用:
myisamchk -of tablename.MYI
關(guān)于myisamchk的詳細(xì)參數(shù)說明,可以參見它的使用幫助。需要注意的時在進(jìn)行修改時必須確保MySQL服務(wù)器沒有訪問這個數(shù)據(jù)表,保險的情況下是更好在進(jìn)行檢測時把MySQL服務(wù)器Shutdown掉。
-----------------------------
另外可以把下面的命令放在你的rc.local里面啟動MySQL服務(wù)器前:
&& /pathtochk/myisamchk -of /DATA_DIR/*/*.MYI
其中的/tmp/mysql.sock是MySQL監(jiān)聽的Sock文件位置,對于使用RPM安裝的用戶應(yīng)該是/var/lib/mysql/mysql.sock,對于使用源碼安裝則是/tmp/mysql.sock可以根據(jù)自己凳慎的實(shí)際情況進(jìn)行變更,而pathtochk則是myisamchk所在的位置,DATA_DIR是你的MySQL數(shù)據(jù)庫存放的位置。
php連接數(shù)據(jù)庫插入數(shù)據(jù)后,mysql中查詢漢字字符亂碼
解決亂碼有幾種方式:
在讀取數(shù)據(jù)庫的時候設(shè)置連接編碼:mysql_query(“set names utf8”);
在讀取數(shù)據(jù)庫的培脊php文件的頭部加:header(“Content-type:text/html;charset=utf-8”);
php文件不是utf8格式的編碼,需要轉(zhuǎn)化。用notpad++文改殲本編輯器打開php文件,點(diǎn)擊菜單中的“格式”,查看是否是“以utf8 無bom格式編碼”,不是的話請轉(zhuǎn)成此格式。
html格式的在頭部加上:
你看看你配殲滲的是哪一種情況,都對比做的一下,還不行在問我。
mysql查詢數(shù)據(jù)庫編碼的介紹就聊到這里吧,感謝你花時間閱讀本站內(nèi)容,更多關(guān)于mysql查詢數(shù)據(jù)庫編碼,MySQL查詢數(shù)據(jù)庫編碼方法簡介,如何用MySQL workbench查詢數(shù)據(jù),php連接數(shù)據(jù)庫插入數(shù)據(jù)后,mysql中查詢漢字字符亂碼的信息別忘了在本站進(jìn)行查找喔。
成都網(wǎng)站設(shè)計制作選創(chuàng)新互聯(lián),專業(yè)網(wǎng)站建設(shè)公司。
成都創(chuàng)新互聯(lián)10余年專注成都高端網(wǎng)站建設(shè)定制開發(fā)服務(wù),為客戶提供專業(yè)的成都網(wǎng)站制作,成都網(wǎng)頁設(shè)計,成都網(wǎng)站設(shè)計服務(wù);成都創(chuàng)新互聯(lián)服務(wù)內(nèi)容包含成都網(wǎng)站建設(shè),小程序開發(fā),營銷網(wǎng)站建設(shè),網(wǎng)站改版,服務(wù)器托管租用等互聯(lián)網(wǎng)服務(wù)。
網(wǎng)站名稱:MySQL查詢數(shù)據(jù)庫編碼方法簡介 (mysql查詢數(shù)據(jù)庫編碼)
標(biāo)題網(wǎng)址:http://fisionsoft.com.cn/article/dpicojs.html


咨詢
建站咨詢
