MySQL數(shù)據(jù)庫(kù)刊头、數(shù)據(jù)表和字段字符集查詢、修改和配置

一佛舱、設(shè)置編碼
LINUX 修改vi/etc/my.cnf
WINDOWS my.ini
  在[client]下添加
   default-character-set=utf8
  在[mysqld]下添加
   default-character-set=utf8
  保存椎例,重啟mysql即可;

二、創(chuàng)建對(duì)象時(shí)設(shè)置字符集
1 創(chuàng)建數(shù)據(jù)庫(kù)指定數(shù)據(jù)庫(kù)的字符集
mysql>CREATEDATABASE IF NOT EXISTS mydb DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci
2 創(chuàng)建表時(shí)指定字符集
CREATETABLE table_name (id int unsigned) DEFAULT CHARACTER SET utf8 COLLATEutf8_general_ci;
3 創(chuàng)建字段時(shí)指定字符集
CREATETABLE table_name2 (id int,name char(10) CHARACTER SET utf8 COLLATE utf8_general_ci);

三请祖、查看編碼
1订歪、查看 MySQL 數(shù)據(jù)庫(kù)服務(wù)器和數(shù)據(jù)庫(kù)字符集
  show variables like'%char%';
2、查看 MySQL 數(shù)據(jù)庫(kù)服務(wù)器和數(shù)據(jù)庫(kù)核對(duì)排序方式(校對(duì)規(guī)則)
SHOWVARIABLES LIKE 'COLLATION';
3肆捕、查看當(dāng)前安裝的 MySQL 所支持的字符集刷晋。
  show charset;
4、查看當(dāng)前數(shù)據(jù)庫(kù)編碼:
  SHOW CREATE DATABASE db_name;
5慎陵、查看表編碼:
  SHOW CREATE TABLE tbl_name;
6眼虱、查看字段編碼:
  SHOW FULL COLUMNS FROM tbl_name;

四、修改字符集
1.修改數(shù)據(jù)庫(kù)的字符集
mysql>usemydb
mysql>ALTERDATABASE mydb CHARACTER SET utf-8(utf8) COLLATE utf8_general_ci
2.修改表的字符集
  把表默認(rèn)的字符集和所有字符列(CHAR,VARCHAR,TEXT)改為新的字符集:
  ALTER TABLE tbl_name CONVERT TO CHARACTER SET character_name[COLLATE ...]
   如:ALTER TABLE logtest CONVERT TO CHARACTERSET utf8 COLLATE utf8_general_ci;
只是修改表的默認(rèn)字符集:
   ALTER TABLE tbl_name DEFAULT CHARACTER SET character_name[COLLATE...];
   如:ALTER TABLE logtest DEFAULT CHARACTERSET utf8 COLLATE utf8_general_ci;
3.修改字段的字符集:
  ALTER TABLE tbl_nameCHANGE c_name c_name CHARACTER SET character_name [COLLATE ...];
  如:ALTER TABLE logtest CHANGE title titleVARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci;

五席纽、用mysql命令修改編碼
 setcharacter_set_client=utf8; //客戶端字符集
 setcharacter_set_connection=utf8; //鏈接字符集
 setcharacter_set_database=utf8; //數(shù)據(jù)庫(kù)字符集
 setcharacter_set_results=utf8; //結(jié)果字符集
 setcharacter_set_server=utf8; //服務(wù)器字符集
 set character_set_system=utf8; //系統(tǒng)字符集
 setcollation_connection=utf8; //鏈接校對(duì)
 setcollation_database=utf8; //數(shù)據(jù)庫(kù)校對(duì)
 setcollation_server=utf8; //服務(wù)器校對(duì)
setnames 字符集捏悬;同時(shí)修改character_set_client/character_set_connection/character_set_results字符集.

六、MySQL中的字符集轉(zhuǎn)換過程
 1. MySQL Server收到請(qǐng)求時(shí)將請(qǐng)求數(shù)據(jù)從character_set_client轉(zhuǎn)換為character_set_connection;
 2. 進(jìn)行內(nèi)部操作前將請(qǐng)求數(shù)據(jù)從character_set_connection轉(zhuǎn)換為內(nèi)部操作字符集润梯,其確定方法如下:
使用每個(gè)數(shù)據(jù)字段的CHARACTER SET設(shè)定值;
  若上述值不存在过牙,則使用對(duì)應(yīng)數(shù)據(jù)表的DEFAULT CHARACTER SET設(shè)定值(MySQL擴(kuò)展甥厦,非SQL標(biāo)準(zhǔn));
若上述值不存在,則使用對(duì)應(yīng)數(shù)據(jù)庫(kù)的DEFAULTCHARACTER SET設(shè)定值;
  若上述值不存在寇钉,則使用character_set_server設(shè)定值矫渔。
 3. 將操作結(jié)果從內(nèi)部操作字符集轉(zhuǎn)換為character_set_results。

七摧莽、MySQL默認(rèn)字符集
MySQL對(duì)于字符集的指定可以細(xì)化到一個(gè)數(shù)據(jù)庫(kù)庙洼,一張表,一列镊辕,應(yīng)該用什么字符集油够。 但是,傳統(tǒng)的程序在創(chuàng)建數(shù)據(jù)庫(kù)和數(shù)據(jù)表時(shí)并沒有使用那么復(fù)雜的配置征懈,它們用的是默認(rèn)的配
置石咬,那么,默認(rèn)的配置從何而來呢卖哎?
(1)編譯MySQL 時(shí)鬼悠,指定了一個(gè)默認(rèn)的字符集,這個(gè)字符集是 latin1亏娜;
(2)安裝MySQL 時(shí)焕窝,可以在配置文件 (my.ini) 中指定一個(gè)默認(rèn)的的字符集,如果沒指定维贺,這個(gè)值繼承自編譯時(shí)指定的它掂;
(3)啟動(dòng)mysqld 時(shí),可以在命令行參數(shù)中指定一個(gè)默認(rèn)的的字符集溯泣,如果沒指定虐秋,這個(gè)值繼承自配置文件中的配置,此時(shí) character_set_server 被設(shè)定為這個(gè)默認(rèn)的字符集;
(4)當(dāng)創(chuàng)建一個(gè)新的數(shù)據(jù)庫(kù)時(shí)垃沦,除非明確指定客给,這個(gè)數(shù)據(jù)庫(kù)的字符集被缺省設(shè)定為character_set_server;
(5)當(dāng)選定了一個(gè)數(shù)據(jù)庫(kù)時(shí)肢簿,character_set_database被設(shè)定為這個(gè)數(shù)據(jù)庫(kù)默認(rèn)的字符集靶剑;
(6)在這個(gè)數(shù)據(jù)庫(kù)里創(chuàng)建一張表時(shí),表默認(rèn)的字符集被設(shè)定為 character_set_database译仗,也就是這個(gè)數(shù)據(jù)庫(kù)默認(rèn)的字符集抬虽;
(7)當(dāng)在表內(nèi)設(shè)置一欄時(shí)官觅,除非明確指定纵菌,否則此欄缺省的字符集就是表默認(rèn)的字符集;

八休涤、其他注意事項(xiàng)
MySQL的字符集支持(Character SetSupport)有字符集(Character set)和排序方式(Collation)兩個(gè)方面咱圆。對(duì)于字符集的支持細(xì)化到四個(gè)層次: 服務(wù)器(server)笛辟,數(shù)據(jù)庫(kù)(database)
,數(shù)據(jù)表(table)和連接(connection)序苏。
my.cnf中的default_character_set設(shè)置只影響mysql命令連接服務(wù)器時(shí)的連接字符集手幢,不會(huì)對(duì)使用libmysqlclient庫(kù)的應(yīng)用程序產(chǎn)生任何作用!
對(duì)字段進(jìn)行的SQL函數(shù)操作通常都是以內(nèi)部操作字符集進(jìn)行的,不受連接字符集設(shè)置的影響忱详。
如果什么地方都不修改围来,那么所有的數(shù)據(jù)庫(kù)的所有表的所有欄位的都用latin1 存儲(chǔ),不過我們?nèi)绻惭b MySQL匈睁,一般都會(huì)選擇多語(yǔ)言支持监透,也就是說,安裝程序會(huì)自動(dòng)在配置文件中把default_character_set 設(shè)置為 UTF-8航唆,這保證了缺省情況下胀蛮,所有的數(shù)據(jù)庫(kù)的所有表的所有欄位的都用 UTF-8 存儲(chǔ)。

如果要批量修改表和字段的字符集可用下面命令生成一個(gè)sql文件糯钙,然后再執(zhí)行
SELECT
CONCAT('alter table ',table_name,' CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;')
FROM
INFORMATION_SCHEMA.tables
WHERE
TABLE_SCHEMA='database_name' into outfile '/mysql/1.sql';

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末粪狼,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子任岸,更是在濱河造成了極大的恐慌再榄,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,602評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件享潜,死亡現(xiàn)場(chǎng)離奇詭異不跟,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)米碰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門窝革,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人吕座,你說我怎么就攤上這事虐译∥馀浚” “怎么了?”我有些...
    開封第一講書人閱讀 152,878評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵锣枝,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我撇叁,道長(zhǎng)供鸠,這世上最難降的妖魔是什么陨闹? 我笑而不...
    開封第一講書人閱讀 55,306評(píng)論 1 279
  • 正文 為了忘掉前任薄坏,我火速辦了婚禮,結(jié)果婚禮上胶坠,老公的妹妹穿的比我還像新娘。我一直安慰自己繁堡,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,330評(píng)論 5 373
  • 文/花漫 我一把揭開白布椭蹄。 她就那樣靜靜地躺著,像睡著了一般塑娇。 火紅的嫁衣襯著肌膚如雪澈侠。 梳的紋絲不亂的頭發(fā)上埋酬,一...
    開封第一講書人閱讀 49,071評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音写妥,去河邊找鬼。 笑死珍特,一個(gè)胖子當(dāng)著我的面吹牛祝峻,可吹牛的內(nèi)容都是我干的扎筒。 我是一名探鬼主播莱找,決...
    沈念sama閱讀 38,382評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼嗜桌!你這毒婦竟也來了奥溺?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,006評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤骨宠,失蹤者是張志新(化名)和其女友劉穎浮定,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體层亿,經(jīng)...
    沈念sama閱讀 43,512評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡桦卒,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,965評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了匿又。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片方灾。...
    茶點(diǎn)故事閱讀 38,094評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖琳省,靈堂內(nèi)的尸體忽然破棺而出迎吵,到底是詐尸還是另有隱情躲撰,我是刑警寧澤针贬,帶...
    沈念sama閱讀 33,732評(píng)論 4 323
  • 正文 年R本政府宣布击费,位于F島的核電站,受9級(jí)特大地震影響桦他,放射性物質(zhì)發(fā)生泄漏蔫巩。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,283評(píng)論 3 307
  • 文/蒙蒙 一快压、第九天 我趴在偏房一處隱蔽的房頂上張望圆仔。 院中可真熱鬧,春花似錦蔫劣、人聲如沸坪郭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)歪沃。三九已至,卻和暖如春嫌松,著一層夾襖步出監(jiān)牢的瞬間沪曙,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評(píng)論 1 262
  • 我被黑心中介騙來泰國(guó)打工萎羔, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留液走,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,536評(píng)論 2 354
  • 正文 我出身青樓贾陷,卻偏偏與公主長(zhǎng)得像缘眶,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子髓废,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,828評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容