mysql字符集【分分快三全天计划网站】

作者:分分快三全天计划网站

2. mysql 字符集

 

--  查看
SHOW CREATE TABLE t;

系统变量(可动态设置):

 

修改字符集

   3.1 在劳务器级,对my.cnf设置,在运营mysql服务

翻开字符集:

  分分快三全天计划网站 1

 

以下是将iatin1字符集的数据库修改成GBK字符集的数据库过程
4.1 导出表结构:
mysqldump -uroot -p --default-character-set=gbk -d databasename> createtab.sql
4.2导出数据
    mysqldump -uroot -p --quick --no-create-info --extended-insert
    --default-character-set=latin1 databasename> data.sql
4.3  打开data.sql 将set names iatin1 修改成set names gbk
4.4 使用新的字符集创建新的数据库
        create database databasename default charset gbk;
4.5创建表 ,执行createtab.sql
      mysql  -uroot  -p databasename < createtab.sql
4.6导入数据,执行data.sql
      mysql  -uroot  -p databasename < data.sql

2.告诉mysql的字符集(set names xxx)

  mysql 帮忙几十种字符集。 如下图所示:

 

  对于数据库来讲,字符集很保养,因为数据仓库储存款和储蓄的多少超越45%是各样文字,字符集对数据库的存款和储蓄,管理性能,以至以往系统的移植,推广都有会影响
  怎么着选取呢?
    UTF-8: 借使使用要拍卖头晕目眩的文字,或将发表使用差别语言的国度或地方,就应当选取Unicode字符集,对于mysql 最近便是UTF-8。倘使首要管理葡萄牙共和国语字符,只有一丢丢汉字数据,那么选拔utf-8越来越好。因为gbk,ucs-2,utf-16对西方文字字符编码都是2字节,会变成不要求的开荒。
    GBK: 假如数据库只须求扶助常常中文,数据量十分的大,品质要求也异常高,那应该选拔双字节定长编码的华语字符集GBK。相对于uft-8来说,gbk相比较“小”,种种汉字只占2个字节,而utf-8汉字编码需求3个字节,那样能够减去磁盘I/0, 数据库缓存,以至互连网传输的时光。
    如若数据库要求做大量的字符运算,如相比较,排序等,选用定长的字符集可能更加好,因为定长字符集比变长管理速度快。如gbk固定双字节,utf-32固定4字节。
    客户端程序行使的字符集, 在数据库端应优先选项该字符集,幸免因字符集调换带来品质费用和数目损失。

 

  如若在动用起来阶段未有科学安装字符集,在运作一段时间后发觉不可能满足要求要求调动,那时不能够经过alter database character set 或alter tablename character set
一声令下进行,因为那三个指令都不会更新已有记录的字符集,对于已有些记录的字符集调节,要求先将数据导出,经过适当的调解重新导入后才成就。
  必要使用mysqldump工具来做导出导入,这里就不在演示只标志下:

 

 -- 查看当前数据库字符集
SHOW VARIABLES LIKE 'character%';

劳动器级

                   这种调控平常机率相当的小,只是给大家提供了贰个灵活设置的手法。

 

   尽管数据库中已有记录,修改字符集对本来的记录并未影响,只对新记录使用。

 

4  字符集修改 

mysql的字符序听从命名惯例:

  3.2 数据库级

msyql>set  names utf8;

3. mysql字符集的安装

 

  有4个等第的暗许设置:服务器级,数据库级,表级,字段级。

alter database character set xxx 大概alter table  tablename character set xxx;这两条命令只对想创造的表或许记录生效

字符集是一套文字标志及其编码,比较准则的会合。第1个字符集是ascll(american standard code for information interchange)。

 

  分分快三全天计划网站 2

--default-character-set表示设置以如何字符集连接;-d代表只导出表结构,不导出多少

SHOW CHARACTER SET;

 

--  修改表的字符集
ALTER TABLE  表名 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

修改表级字符集

分分快三全天计划网站 3

  • 数码存款和储蓄字符集无法准确编码(不帮忙)client发来的数据:client(utf8)->storage(latin1)
  • 程序连接使用的字符集与文告mysql的character_set_client,character_set_conection,character_set_results 等不平等或不协作。(告诉mysql:set names gbk ;程序连接使用的字符集一致)

分分快三全天计划网站 4

mysql字符集:

         3.4 列级

分分快三全天计划网站 5.png)

   能够因而alter table来修改,假设表中已有记录,修改字符集对原始的笔录并未影响,只对新记录使用。

 

分分快三全天计划网站 6

那时会冒出乱码,即告知数据库的character_set_database   的字符集与程序选用的文件test.t 不等同;

 1.  增选适当的字符集

-character_set_conection:连接层字符集(做中间层调换)

-- 修改数据库字符集 
ALTER DATABASE 数据库名 CHARACTER SET utf8;

 

  3.3 表级

三要素:


mysql> SHOW VARIABLES LIKE '%CHARACTER%';
 -------------------------- ---------------------------- 
| Variable_name            | Value                      |
 -------------------------- ---------------------------- 
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
 -------------------------- ---------------------------- 
8 rows in set (0.00 sec)

mysql> SHOW VARIABLES LIKE '%collation%';
 ---------------------- ------------------- 
| Variable_name        | Value             |
 ---------------------- ------------------- 
| collation_connection | utf8_general_ci   |
| collation_database   | latin1_swedish_ci |
| collation_server     | latin1_swedish_ci |
 ---------------------- ------------------- 

 

老是与字符集

 

 

6)将新字符集的表结构导入新库;创造表,实施createtab.sql

实践

不等的字符序决定了字符串在可比排序中的精度和性质分裂。

-character_set_database:当前入选数据库的默许字符集

翻开字符序

 

show [global] variables like 'character%'

设置:

 

 

-character_set_results:查询结果字符集(重临给客商端程序用的字符集)

 

这里与 普布告知mysql字符集 set names xxx 区别开来,究竟是导入表到二个数据库高级中学级,应该使数据库的字符集与公事的字符集一样

 

  • ASCII:美利坚合作国新闻交换规范编码;立陶宛(Lithuania)语和任何西欧语言;单字节编码,7位(bits)表示叁个字符,共128字符。
  • GBK:汉字内码增添规范;中国和东瀛韩汉字、丹麦语、数字;双字节编码;共收音和录音了21003个汉字,GB2312的扩大。
  • utf-8:Unicode规范的可变长度字符编码;Unicode规范(统一码),业界统一标准,富含世界上数十种文字的系统;utf-8使用一至4个字节为每二个字符编码。
  • 其余周围字符集:utf-32,utf-16,big5(繁体字),latin1()

就如实验未遂能够去咨询?

分分快三全天计划网站 7.png)

set global character_set_server=utf8; (全局)

 

客商端的装置:

顾客端连接字符集

在编写翻译mysql时用--with-charset=gbk 来新扩张字符集

1.依然表本人utf8,而设置 set names gbk, 程序连接也使用 gbk;

 

--default-character-set=latin1:按照原有的字符集导出全体数据,那样导出的文本中,全部汉语都以可以看到的,不会保留成乱码

以下模拟的是将latin1字符集的数据库修改成GBK字符集的数据库的历程

  • 字符集与字符序是1:N
  • 字符序是字符的排序与相比法则及字符的精度和总体性;
  • 表品级字符集修改:alter table stu convert to character set utf8;
  • 四个接二连三相关字符集统一安装:set names utf8;
  • 广阔乱码原因
  • load数据时,因让数据库等级的字符集与公事一律;
  • 三要素:
    •   程序使得或顾客端的字符集(在客商端设置)
    •   告知mysql的字符集(set names xxx)
    •   数据存款和储蓄的字符集(表结构的字符集alter table tbl convert to character set xxx)
  • 运行一段时间后发觉数目乱码,如何保存数据;
mysql> create database na default charset gbk;

顾客端连接与字符集

--character_set_server:暗中同意的内部操作字符集

show [global] variables like 'collation%'

create database db_name character set latin1 collate latin1_swedish_ci;

4)修改数据的字符集为新字符集---展开data.sql,将set names latin1 修改成 set names gbk

  • 应用命令间接设置
  • 布局文件中设置:mysqld,

 

 

7) 将新字符集的数据文件导入新库;导入数据,实施data.sql

charset 和 collation的装置等第:

诚如可以统一安装(推荐):

更改set character_set_database   =   utf8 则能健康展现;

 mysql -uroot -p na < data.sql

 

 

mysql> SHOW COLLATION ;

 

字符集基础

 

-quick:该选项用于转存款和储蓄大的表。它强制mysqldump 从服务器一次一行地找寻表中的行,实际不是搜求全部的行,并在出口前将它缓存到内部存款和储蓄器中。

分分快三全天计划网站 8

 

1.顺序使得或客商端的字符集(在客户端设置)

数据存款和储蓄字符集使用准则:

 

mysql> alter table stu convert to character set utf8;

 


前七个必需一致才不会冒出乱码,推荐五个都设置成一致

这时候向表中插入汉字,依旧能够展现而并不乱码,因为尽管前后相继连接使用gbk编码,mysql内部会将gbk转变到utf8来呈现;

总结

在布局文件中:

2.表utf8,set names utf8,可是程序连接使用 gbk,此时向表中插入汉字,是乱码的。

 

也得以统一称为连接字符集;

  • 成立数据库/表时来得的钦点字符集,不采纳暗中认可
  • 总是字符集与数据存款和储蓄字符集设置一样,推荐应用utf8
  • 驱动程序连接时突显内定字符集(set names xxx)
mysqldump -uroot -p --default-character-set=gbk -d WY_yun >createtab.sq

须要:在系统运维了一段时间,有了必然的多寡,后发掘字符集不可能满足供给须要再行修改,又不想废弃这段时光的数量。

mysqldump -uroot -p --quick --no-create-info --extended-insert --default-character-set=latin1 WY_yun > data.sql

--extended-insert:使用包含几个VALUES列表的多行insert语法。那样使转存款和储蓄文件更小,重载文件时得以加快插入

 

 

客户端连接与字符集

mysql>create table tbl(...) default charset=utf-8 default collate=utf8_bin

 

 

5)使用新得字符集创造新的数据库

 

--character_set_system:系统元数据(字段,表名等)字符集

劳动器级>>数据库级>>表级>>列级

翻开字符集

 

mysql -uroot -p na <createtab.sql

 3.数据存款和储蓄的字符集(表结构的字符集alter table tbl convert to character set xxx)

charset 和 collation

利用提议:

字符集分类:

default-character-set = utf8


-character_set_client:客商端来源数据选取的字符集(客商端程序发过来的SQL用如何来编码的)

 

新扩张字符集:

字符集:数据库中的字符集包蕴两层含义

 分分快三全天计划网站 9

  1. 种种文字和标识的汇集,满含各个国家家文字,标点符号,图形符号,数字等。
  2. 字符的编码形式,即二进制数据与字符的照耀法规;

 

多少库级(数据库中蕴藏数据的默许字符集)

 

措施:先将数据导出,经过适当的调动重新导入才可做到。

 

 

alter table tbl convert to character set XXX;(表)

修改服务器级字符集

  • 以_ci(表示大小写不灵敏)
  • 以_cs(表示大小写敏感)
  • 以_bin(表示用编码值进行相比)

collation:字符序,字符的排序与相比法则,每种字符集都有相应的多套字符序。

 

分布乱码原因:

3)确定保证记录不在更新,导出全部记录

load data 出现乱码:

--no-create-info:不写重新成立么个转存款和储蓄表的create table 语句

  • 运用列集的character set 设定值
  • 若列级字符集不设有,则动用相应表级的default character set 设定值;
  • 若表级字符集不设有,则利用数据库级的default character set 设定值
  • 若数据库字符集不真实,则动用服务器级character_set_server设定值

 

 

mysql字符集

 

 

 

字符集与字符序(字符排序的平整)

分分快三全天计划网站 10.png)

字符集与字符序是一对多的涉及,但贰个字符集至罕有七个字符序

 

根本影响load data 等语句的私下认可字符集;create database的字符集假若不设置,暗许使用character_set_server的字符集。

 分分快三全天计划网站 11

mysql> SHOW CHARACTER SET ;
 ---------- ----------------------------- --------------------- -------- 
| Charset  | Description                 | Default collation   | Maxlen |
 ---------- ----------------------------- --------------------- -------- 
| big5     | Big5 Traditional Chinese    | big5_chinese_ci     |      2 |
| dec8     | DEC West European           | dec8_swedish_ci     |      1 |
| cp850    | DOS West European           | cp850_general_ci    |      1 |
| hp8      | HP West European            | hp8_english_ci      |      1 |
| koi8r    | KOI8-R Relcom Russian       | koi8r_general_ci    |      1 |
| latin1   | cp1252 West European        | latin1_swedish_ci   |      1 |
| latin2   | ISO 8859-2 Central European | latin2_general_ci   |      1 |
| swe7     | 7bit Swedish                | swe7_swedish_ci     |      1 |

表级

aiapple@ubuntu:~$ file test.t
test.t: UTF-8 Unicode text
aiapple@ubuntu:~$ cat test.t
你好

mysql> show variables like '%char%';
 -------------------------- ---------------------------- 
| Variable_name            | Value                      |
 -------------------------- ---------------------------- 
| character_set_client     | utf8                         |
| character_set_connection | utf8                    |
| character_set_database   | gbk                   |
| character_set_filesystem | binary                   |
| character_set_results    | utf8                        |
| character_set_server     | utf8                        |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
 -------------------------- ---------------------------- 
8 rows in set (0.00 sec)

mysql>load data infile '/home/aiapple/test.t' into table t;

 

字符集设置品级

1)导出表结构

2)手动修改creatatab.sql中表结构定义中的字符集为新的字符集

本文由分分快三计划发布,转载请注明来源

关键词: 分分快三计划 mysql管理