【勝通 】mysql字符集與校驗規則的設定
預設情況下,我們可以在4個級別分別設定mysql的字符集和校驗規則,分別是server、database、table和column。實際上,我們甚至還可以單獨對一串字串設定其字符集和校驗規則。下面就分別來對四個級別的設定說明一下:
server:
在啟動mysql服務的時候,可以指定mysql server的字符集和校驗規則,通過如下方式:
mysqld –character-set-server=latin1 –collation-server=latin1_swedish_ci
如果不親自指定它們,那麼mysql就會使用預設值。一般是latin1和latin1_swedish_ci。當然這個預設值是可以修改的,但是方法只有一種,那就是重編譯原始碼。採用如下方式:
./configure –with-charset=gbk –with-collation=gbk_bin
如何查詢當前的server的字符集和校驗規則的值,可以檢視系統引數character_set_server和collation_server:
+----------------------+--------+
| Variable_name | Value |
+----------------------+--------+
| character_set_server | latin1 |
+----------------------+--------+
1 row in set (0.00 sec)
mysql> show variables like 'collation_server%';
+------------------+-------------------+
| Variable_name | Value |
+------------------+-------------------+
| collation_server | latin1_swedish_ci |
+------------------+-------------------+
1 row in set (0.00 sec)
server的字符集和校驗規則的唯一作用就是,當database的字符集和校驗規則沒有指定的時候,就預設使用server的對應值。
database:
我們在建立和修改資料庫的時候,可以指定其字符集和校驗規則:
CREATE DATABASE db_name
[[DEFAULT] CHARACTER SET charset_name]
[[DEFAULT] COLLATE collation_name];
ALTER DATABASE db_name
[[DEFAULT] CHARACTER SET charset_name]
[[DEFAULT] COLLATE collation_name];
對應檢視當前資料庫的字符集和校驗規則的系統引數是’character_set_database’和’collation_database’,如下:
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| character_set_database | gbk |
+------------------------+-------+
1 row in set (0.00 sec)
mysql> show variables like 'collation_database';
+--------------------+---------+
| Variable_name | Value |
+--------------------+---------+
| collation_database | gbk_bin |
+--------------------+---------+
1 row in set (0.00 sec)
資料庫的字符集和校驗規則的作用有二,其一是當沒有在表級別知道它們,那麼預設就使用資料庫基本的值;其二是在“load data infile”時也起到了作用。
table:
在建立表或者修改表結構的時候,我們可以通過如下方式指定這個表的字符集和校驗規則:
CREATE TABLE tbl_name (column_list)
[[DEFAULT] CHARACTER SET charset_name] [COLLATE collation_name]]ALTER TABLE tbl_name
[[DEFAULT] CHARACTER SET charset_name] [COLLATE collation_name]
column:
具體的表的具體的某個欄位,我們也可以指定其字符集和校驗規則,如下:
col_name {CHAR | VARCHAR | TEXT} (col_length)
[CHARACTER SET charset_name] [COLLATE collation_name]
那麼,這四個級別的字符集和校驗規則的指定(級別高低server>database>table>column),mysql最終以何種形式來儲存和顯示字串的呢?
1、本級別中,如果同時指定character set和collate,那麼就使用指定的值;
2、本級別中,只指定character set而沒有指定collate,那麼就使用指定的character set值和其對應的預設的collation值;
3、本級別中,只指定collate而沒有指定character set,那麼就使用指定的collation值和其所對應的character set值;
4、本級別中,都沒有指定這2個值,那麼預設就使用上一級別的對應的值。
國家字符集:
mysql中國家字符集的概念,其表示使用預先定義的字符集,在mysql5.1中使用utf8作為其預先的定義的字符集。
因此,下面幾種型別的定義,其實是等效的:
CHAR(10) CHARACTER SET utf8
NATIONAL CHARACTER(10)
NCHAR(10)
下面幾種型別也是等效的:
VARCHAR(10) CHARACTER SET utf8
NATIONAL VARCHAR(10)
NCHAR VARCHAR(10)
NATIONAL CHARACTER VARYING(10)
NATIONAL CHAR VARYING(10)
字串的字符集和校驗規則的設定問題,請稍等!
http://rdc.taobao.com/blog/dba/html/181_mysql_charset_collation_set.html/trackback
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1384/viewspace-374816/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 關於mysql字符集及排序規則設定MySql排序
- MySQL字符集和校對規則(character set & collation)MySql
- MySQL 字符集與亂碼與collation設定的問題?MySql
- springMVC:校驗框架:多規則校驗,巢狀校驗,分組校驗;ssm整合技術SpringMVC框架巢狀SSM
- 從根上理解 MySQL 的字符集和比較規則MySql
- 前端Vue中常用rules校驗規則前端Vue
- SpringBoot專案校驗規則優化Spring Boot優化
- 正整數表單校驗規則
- Mysql-基本的規則與規範MySql
- 使用jakarta.validation自定義校驗規則
- element-ui自定義表單校驗規則及常用表單校驗UI
- 字符集和比較規則
- SQLServer的排序規則(字符集編碼)SQLServer排序
- Vue中form表單常用rules校驗規則VueORM
- sentinel流控規則校驗之原始碼分析原始碼
- drf 許可權校驗設定與原始碼分析原始碼
- 《Oracle MySQL程式設計自學與面試指南》05:字符集和校對集OracleMySql程式設計面試
- MySQL 檢視與修改預設字符集MySql
- RationalDMIS7.1 定義校驗規需要注意的地方
- 2021-2-18:請你說說MySQL的字符集與排序規則對開發有哪些影響?MySql排序
- Vue Element-ui表單校驗規則,你掌握了哪些?VueUI
- [C++]變數宣告與定義的規則C++變數
- MySQL運維實戰(5.6) 字符集設定對mysqldump的影響MySql運維
- laravel 校驗規則 Rule::in 等對中文字元不友好的問題Laravel字元
- 【java】校驗當前時間是否在規定的時間內Java
- laravel: 常用的驗證規則Laravel
- 前端 - 開發中常用的正則校驗前端
- 在Linux中,如何設定防火牆規則?Linux防火牆
- CI4路由設定規則路由
- 金額常見正則校驗
- Base64 格式校驗正則
- MySQL 不同版本預設字符集MySql
- 最佳化配置Little Snitch for Mac的規則和設定Mac
- 前端工程程式碼規範(一)——命名規則與工程約定前端
- jQuery Validate驗證規則的使用jQuery
- MySQL觸發器的使用規則MySql觸發器
- 對於同步的規則定義
- 資料庫建庫時字符集和排序規則的選擇資料庫排序
- Angular8 form 表單對隱藏元素取消表單校驗規則AngularORM