Mysql系列-字元集

來源:互聯網
上載者:User

標籤:

字元集怎樣選擇合適的字元集
  • 如果應用程式需要發布到很多國家和地區,需要支援各種各樣的文字,則選擇Unicode編碼,Mysql中即UTF-8.q如果需要將資料匯入資料庫,這時候要注意資料庫字元集對資料字元集的相容性,最好一致。
  • 如果資料庫支援一般中文,資料量很大,效能要求高,那麼應該選擇雙位元組定長編碼的中文字元集,比如GBK。因為相對於UTF-8而言GBK每個漢字只需要2個位元組,而UTF8每個漢字需要3個位元組。
  • 如果資料庫需要做大量的檢索、比較、排序,應該選擇定長字元集。
查看字元集
字元集和校對規則是一對多的關係show character set; //查看資料庫可用的所有字元集show collation like ‘%gbk%‘; //查看字元集的校對規則校對規則命名規範:_ci:大小寫不敏感,_cs:大小寫敏感,_bin:二進位值比較
MySQL字元集設定
MySQL的字元集和校對規則分四個層級的預設設定:伺服器級、資料庫級、表級、欄位級伺服器級:在MySQL服務啟動時來確定1.在my.cnf中設定:[mysqld] character-set-server=gbk2.在啟動選項中指定:mysqld --character-set-server=gbk3.在編譯時間指定:shell> cmake . -DDEFAULT_CHARSET=gbk在沒有指定校對規則的情況下,使用預設的校對規則。//查詢當前伺服器的字元集show variables like ‘character_set_server‘;//查詢當前伺服器的校對集show variables like ‘collation_server‘;資料庫級:在建立資料庫的時候指定,也可以在建立完成之後通過alter database命令修改。推薦在建立資料庫的時候顯式指定字元集和校對規則,如果沒有指定,則預設使用伺服器字元集和校對規則。show variables like ‘character_set_database‘;show variables like ‘collation_database‘;表級:在建立表的時候指定,如果沒有指定則使用資料庫的字元集和校對規則。show create table t1;列級:列層級的字元集一般不適用,主要是針對不同欄位需要使用不同字元集的情況,遇到的幾率很小。以上四種字元集設定確定的是資料儲存的字元集和校對規則,對於實際的應用程式,還存在用戶端和伺服器之間互動的字元集和校對規則設定。MySQL提供了三個參數:character_set_client、character_set_connection、character_set_results.分別代表用戶端、串連、返回結果的字元集。通長情況下這三種字元集是相同的。一般通過下面的命令設定這三個參數。set names utf8; //應用程式每次串連資料庫都需要執行。
字元集修改步驟
如果資料庫中已經存在資料,此時想修改字元集不能通過 alter table 或者alter database這兩個命令都無法作用於已存在的資料。一下類比lantin1字元集資料庫修改成GBK字元集資料庫的過程1.匯出表結構:mysqldump -uroot -p --default-character-set=gbk -d databasename> createtab.sql--default-character-set=gbk:設定以什麼方式串連-d:表示只匯出表結構,不匯出資料2.手工修改createtab.sql中表結構定義中的字元集為新的字元集。3.確保記錄不在更新匯出所有記錄。mysqldump -uroot -p --quick --no-create-info --extended-insert --default-character-set=latin1 databasename> data.sql--quick:該選項用於轉儲大的表--extended-insert:使用包括幾個values列表的多行insert文法,加速插入。--no-create-info:不匯出每個轉儲表的create table語句。--default-character-set=latain1:按照原有的字元集匯出資料。4.開啟data.sql,將set names latin1 手工修改為:set names gbk;5.使用新的字元集建立新的資料庫create database databasename default charset gbk;6.建立表,執行createtab.sqlmysql -uroot -p databasename < createtab.sql7.匯入資料,執行data.sqlmysql -uroot -p databasename < data.sql

 

Mysql系列-字元集

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.