大数据兼云计算(王明龙)讲师-MYSQL-DAY06-字符集

关于MySQL字符集

utf8mb4 主键类型长度不能超过191,否则会报如下错误
ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes


1.字符集说明
MySQL的字符集支持(Character Set Support)有两个方面: 
字符集(Character set)
排序方式(Collation)

MySQL对于字符集的支持细化到四个层次:
服务器(server)
数据库(database)
数据表(table)
连接(connection)

MySQL对于字符集的指定可以细化到一个数据库,一张表,一列,应该用什么字符集。


2.查看MySQL字符集

查看字符集的设置
show variables like 'character_set_%';




查看字符集排序设置
show variables like 'collation_%';




3.修改MySQL字符集


最快方法

# vim /etc/mysql/my.cnf:
----------------------------------------------------
[client]
default-character-set=utf8

[mysqld]
character-set-server=utf8
character-set-filesystem = utf8          #如果想要都是utf8,文件系统也可设置

[mysql]
default-character-set=utf8
----------------------------------------------------



查看数据库编码:
show create database 库名;

查看表编码:
show create table 表名;

查看字段编码:
show full columns from 表名;




修改服务器级别字符集
a.临时修改
set character_set_server=utf8;

b.永久修改
set global character_set_server=utf8;                #第一种方法,但需要退出之后,在进入才可看到改变

vim /etc/mysql/my.cnf                                     #第二种方法,但需要重启
------------------------------------------------------------------
[mysqld]
character-set-server=utf8


修改数据库级:全局
------------------------------------------------------------------------------------------------------------------------------------
临时更改
set character_set_database=utf8;                     //设置所有库

永久修改
set global character_set_database=utf8;            //第一种方法,但需要退出之后,在进入才可看到改变
vim /etc/my.cnf                                             //第二种方法,但需要重启
------------------------------------------------------------------------------------------------------------------------------------
[mysqld]
character-set-server=utf8

[mysql]
default-character-set=utf8
------------------------------------------------------------------------------------------------------------------------------------

修改库级
alter database 库名 default charset utf8;             //永久更改

修改表级
alter table 表名 default charset utf8;

修改列级
alter table `products` change `products_model` vachar(20) character set utf8 collate  utf8_general_ci null default null;

更改连接字符集
a. 临时更改:
set character_set_client;

b. 永久更改:
set global character_set_client=utf8;                 #第一种方法,但需要退出之后,在进入才可看到改变
vim /etc/mysql/my.cnf                                     #第二种方法,但需要重启
------------------------------------------------------------------
[mysqld]
default-character-set=utf8


修改库字符集
alter database 库名 character set utf8;

修改表字符集
alter table 表名 convert to character set utf8;

修改字段字符集(整型,浮点型等数字类型,不能更改,因为全世界通用阿拉伯数字)
alter table 表名 change 列名 列名 数据类型(长度) character set 字符集 not null;
                                                      //change后面是放两个列名,但为同一列名
alter table 表名 modify column '字段名 数据类型(长度) character set 字符集 not null;

列字符集举例:(wml)
alter table t1 change name name varchar(255) character set utf8 not null; 
alter table tb_1 modify column name varchar(255) character set utf8 not null;

猜你喜欢

转载自blog.csdn.net/wangminglong1989/article/details/81543415
今日推荐