sql server schema下拉不到存储过程_mysql数据库字符编码总结--数据存储编码
概述
MySQL的字符編碼結(jié)構(gòu)比較細(xì),它大方向分為兩個(gè)部分:數(shù)據(jù)存儲(chǔ)編碼和數(shù)據(jù)傳輸編碼。
內(nèi)容比較多,下面先簡(jiǎn)單介紹下數(shù)據(jù)存儲(chǔ)編碼~
01
編碼層次
數(shù)據(jù)存儲(chǔ)的字符編碼配置是指定數(shù)據(jù)庫(kù)中存儲(chǔ)的數(shù)據(jù)默認(rèn)采用什么字符編碼。默認(rèn)字符編碼的設(shè)置分為四個(gè)層次:服務(wù)器級(jí)、數(shù)據(jù)庫(kù)級(jí)、數(shù)據(jù)表級(jí)和列級(jí)。也就是說,可以為服務(wù)器設(shè)置一個(gè)默認(rèn)字符編碼,再為服務(wù)器中的每一個(gè)數(shù)據(jù)庫(kù)設(shè)置不同的默認(rèn)編碼,再為同一個(gè)數(shù)據(jù)庫(kù)中的每一個(gè)數(shù)據(jù)表設(shè)置不同的默認(rèn)編碼,再為同一個(gè)數(shù)據(jù)表中的每一個(gè)列設(shè)置不同的默認(rèn)編碼。
那這四個(gè)層次的編碼設(shè)置到底如何起作用呢?如果新建數(shù)據(jù)庫(kù)時(shí)沒有指定字符編碼,就默認(rèn)設(shè)置為服務(wù)器的編碼;如果新建數(shù)據(jù)表時(shí)沒有指定任何編碼,就默認(rèn)設(shè)置為數(shù)據(jù)庫(kù)的編碼;如果向數(shù)據(jù)表添加新列或新建數(shù)據(jù)表時(shí)沒有特別指定某些列的編碼,那么這些列就默認(rèn)設(shè)置為數(shù)據(jù)表的編碼。注意這里四個(gè)層次的編碼都是作為“默認(rèn)”的存在,用戶創(chuàng)建數(shù)據(jù)庫(kù)、表或增加列時(shí)直接指定的編碼是最優(yōu)先的。
另一方面,直接改變這四個(gè)層次的編碼并不會(huì)改變它們各自所有下層對(duì)象的當(dāng)前編碼。比如修改只Server級(jí),那么所有已經(jīng)存在的數(shù)據(jù)庫(kù)的默認(rèn)編碼不變,數(shù)據(jù)表、表列以及每一行現(xiàn)有數(shù)據(jù)記錄的字符編碼都不變,但是如果新建一個(gè)數(shù)據(jù)庫(kù)且不指定其默認(rèn)編碼,那它的默認(rèn)編碼就會(huì)被設(shè)置為Server的默認(rèn)編碼;同樣即使修改了所有四個(gè)層次的編碼,但是數(shù)據(jù)表中每一條現(xiàn)有記錄的字符字段仍然是按原來的編碼存儲(chǔ)的,但是如果向數(shù)據(jù)表中新插入一條記錄,數(shù)據(jù)庫(kù)將根據(jù)數(shù)據(jù)表當(dāng)前各列的默認(rèn)編碼來存儲(chǔ)該條記錄的各個(gè)字符字段。
02
設(shè)置方法
修改Server以下各級(jí)編碼的SQL語(yǔ)句如下:
# 庫(kù)ALTER {DATABASE | SCHEMA} [db_name] [DEFAULT] CHARACTER SET [=] charset_name;# 表ALTER TABLE dbl_name [DEFAULT] CHARACTER SET [=] charset_name;# 字段ALTER TABLE dbl_name MODIFY [COLUMN] col_name {CHAR[(length)] | TEXT} CHARACTER SET charset_name;注意上面第三條修改列字符編碼,實(shí)際上是通過完全重新定義列屬性的方式實(shí)現(xiàn)的,語(yǔ)法跟創(chuàng)建新數(shù)據(jù)表時(shí)指定列字段屬性一樣的。所以如果這里只是想修改列字符編碼,那就必須完整地寫上創(chuàng)建該列時(shí)使用的所有定義修飾。
修改Server默認(rèn)編碼可以通過運(yùn)行時(shí)直接修改變量character_set_server實(shí)現(xiàn),但這樣是臨時(shí)性的,客戶端關(guān)閉重啟后又會(huì)自動(dòng)恢復(fù)。要想永久改變Server默認(rèn)編碼需要在my.ini或my.cnf配置文件的“[mysqld]”區(qū)域中設(shè)定該變量的值,然后重啟服務(wù)器:
[mysqld]character_set_server=charset_name03
MySQL幾個(gè)character_set變量的含義
篇幅有限,這塊就介紹到這了,后面會(huì)分享下數(shù)據(jù)傳輸編碼方面的內(nèi)容,感興趣的朋友可以關(guān)注下!
總結(jié)
以上是生活随笔為你收集整理的sql server schema下拉不到存储过程_mysql数据库字符编码总结--数据存储编码的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 无连接可靠传输_尽力传输是什么 尽力传输
- 下一篇: python竞赛题解答_【一点资讯】用p