目录

1 字符集编码的查看

1.1 数据库的查看方法

1.2 数据表的查看方法

1.3 所有字段的查看方法

2 字符集编码的指定

2.1 数据库的指定方法

2.2 数据表的指定方法

2.3 字段的指定方法

3 字符集编码的修改

3.1 数据库的修改方法

3.2 数据表的修改方法

3.2.1 仅修改表

3.2.2 同时修改表和字段

3.3 字段的修改


1 字符集编码的查看

MySQL中并没有查看数据库、数据表和字段的字符集编码的专门方法,要想查看编码信息需要采用show关键字得到完整的信息,其中包含了字符集信息。

1.1 数据库的查看方法

# 查看 数据库 的字符集
show create database 数据库名# 例如:
show create database company;

1.2 数据表的查看方法

下列语句查看的是数据表的完整信息,不仅能够看到表的默认字符集,也能看到各个字段的字符集信息。

# 查看 数据表 的字符集编码
show create table 表名# 例如
show create table dept1;

1.3 所有字段的查看方法

涉及字符集编码的数据类型是char, varchar, text,主要查看这些数据类型的字段。

# 查看 所有字段 的字符集编码
show full columns from 表名# 例如
show full columns from dept1;

2 字符集编码的指定

MySQL中字符型数据编码的设置包括两个部分:字符集(character)校对集(collate),一个字符集有多种校对集,如果不指定会采用默认校对集。

2.1 数据库的指定方法

在创建数据库时记得指定默认编码,后面的数据表如果不做特殊的指定,都按这个编码保存数据。

# 创建 数据库 并且指定 默认字符集编码
create database 数据库名 default character set 字符集名 [collate 校对集名]# 例如
create database school default character set utf8 collate utf8_bin;

再创建一个数据表,并且显示创建信息,观察表及其字段的字符集编码是否与数据库一致。

# 创建一个数据表,有三个涉及字符编码的字段
create table student (stu_id int, stu_name varchar(10), gender char(1), introduction text(50));# 查看表的创建信息
show create table student;

2.2 数据表的指定方法

数据表的编码不专门指定依照数据库的编码,也可以单独指定该表自己的默认编码,语句如下:

# 创建 数据表 并且指定 数据表的默认编码
create table 表名(字段1 类型1, 字段2 类型2, ...)
default character set = 字符集名 [collate 校对集名]# 例如
create table course (cou_id int, cou_name varchar(20))
default character set = gbk collate gbk_bin;
show create table course;# 查看创建信息
show create table course;

可以看到新建表及其字段的编码与数据库是不同的,指定生效。

2.3 字段的指定方法

字段的编码如不做特殊指定会与其所在数据表的默认编码保持一致,也可以单独指定某个字段自己的字符集编码。

# 创建 数据表 并且指定 字段 的字符集编码
create table 表名 (字段名 数据类型 character set 字符集名 [collate 校对集名]);# 例如,这里将 gender 的编码指定为GBK,采用默认校对集
create table teacher (tea_id int, tea_name varchar(10),
gender char(1) character set gbk,
course varchar(20));
show create table teacher;

这样设置会导致gender(性别)字段只能传入中文字符,不能传入非中文字符。传入如下两行数据:

insert into teacher values(1,'张三','男','语文'); # 新增成功
insert into teacher values(2,'李四', M,'数学'); # 新增失败

第二行的新增语句的报错信息为:Unknown column 'M' in 'field list' ,其原因就在于字符编码错误。

3 字符集编码的修改

3.1 数据库的修改方法

需要注意的是,数据库的默认字符集被修改之后,修改前已有的数据表及其字段的编码维持原状,新建表的字符集编码如不做特殊指定将与数据库的编码保持一致。

# 修改 数据库 的默认字符集
alter database 数据库名 default character set 字符集名 [collate 校对集名]# 例如
alter database company default character set latin1;# 查看数据库当前的字符集编码
show create database company;

可以看到,数据库默认字符集编码的修改已经生效,下面再查看修改前就创建的表的编码:

show create table dept1;

可以看到表及其各个字段的编码都没有变。然后我们再新建一个表,观察新表的默认编码:

create table emp1 (emp_id int, emp_name varchar(10));

可以看到新建表的默认编码已经与被修改的数据库的默认编码保持一致了。

3.2 数据表的修改方法

对于数据表的修改,有 defaultcovert to 两种语句,前者仅仅是调整表的默认字符集,不涉及修改前已经添加的字段;后者会连同字段一起被改掉。

3.2.1 仅修改表

# 仅修改 表 的默认字符集
alter 表名 dept1 default character set 字符集名 [collate 校对集名]# 例如
alter table dept1 default character set gbk collate gbk_bin;# 再添加一个新字段
alter table dept1 add `level` varchar(5);# 查看表的创建信息
show table dept1;

可以观察到,新增字段的编码为表的默认编码,修改前就已被创建的字段的编码不变。

3.2.2 同时修改表和字段

# 同时修改 表 和 字段 的默认编码
alter table 表名 convert to character set 字符集名 [collate 校对集名]
# 例如
alter table dept1 convert to character set utf8 collate utf8_bin;# 查看创建信息
show create table dept1;

修改后,数据表和表中所有字段的字符集编码是一致的,之前是GBK的level字段也变成了UTF8.

3.3 字段的修改

字段的修改语句比较长,修改字段时要重新指定数据类型(即使不变也要写),然后设置字符集编码,语句格式为:

# 修改 字段 的编码
alter table 表名 change 字段名 字段名 数据类型 character set 字符集名 collate 校对集名# 例如
alter table dept1 change dname dname varchar(14) character set gbk;# 查看创建信息
show create table dept1;

【MySQL随手记】字符集编码的查看、指定与修改语句相关推荐

  1. mysql 查询表的key_MySQL学习笔记-查看表,修改表,删除表

    /*看表*/ describe test --查看表的结构 show create table test --查看表的创建语句 show create table test  \G --将创建的语句查 ...

  2. 如何查看linux系统的字符集,Linux系统查看字符集和修改字符集(以CentOS为例)

    一.查看字符集 Linux字符集在系统中体现形式是一个环境变量,以CentOS6.5为例,其查看当前终端使用字符集的方式可以有以下四种方式: 第一种: [root@Testa-www tmp]# ec ...

  3. mysql字符集编码和排序规则

    环境: mysql 5.7 26 DBeaver 21.1.2.202107041908 参考:<MySQL字符集与排序规则总结> 建议先阅读:<细说ASCII.GB2312/GBK ...

  4. oracle查看数据库字符编码,oracle 查看、批改字符集编码

    当前位置:我的异常网» 数据库 » oracle 查看.批改字符集编码 oracle 查看.批改字符集编码 www.myexceptions.net  网友分享于:2013-07-19  浏览:3次 ...

  5. JAVA字符流与字符集编码

    http://elf8848.iteye.com/blog/271742 问题: 当用JAVA字符流向硬盘写一个a.txt文件时,默认情况下a.txt 会使用什么字符集编码? 分析: "字符 ...

  6. sqlyog更改字符集编码_MySQL 字符集设置

    Linux(Ubuntu)环境描述具体操作,Unux与其基本一致,Windows路径配置上少有不同. 我们将讨论以下几个问题: 字符集问题表征 修正配置,设置默认字符集编码 在使用过程中强制设置字符集 ...

  7. Python不再为字符集编码发愁,使用chardet轻松解决你的困扰。

    欢迎添加华为云小助手微信(微信号:HWCloud002 或 HWCloud003),输入关键字"加群",加入华为云线上技术讨论群:输入关键字"最新活动",获取华 ...

  8. MySQL建库指定字符集编码

    CREATE DATABASE IF NOT EXISTS my_db DEFAULT CHARSET utf8 COLLATE utf8_general_ci; 如上,创建数据库 my_db,并指定 ...

  9. mysql查看指定数据库的定义声明(字符集等信息)

    @TOCmysql查看指定数据库的定义声明(字符集等信息) 欢迎使用Markdown编辑器 mysql8.0以上: SHOW CREATE DATABASE '数据库名字': 完成了. 新的改变 我们 ...

最新文章

  1. LDA-math-MCMC 和 Gibbs Sampling
  2. Kali Linux安全渗透教程(内部资料)
  3. mysql5.6时间问题_mysql5.6版本java插入时间的错误
  4. MPI 环境搭建问题-运行程序闪退
  5. python即时标记_python基础教程总结15——1.即时标记
  6. ffmpeg获取设备支持的分辨率_Qt音视频开发6-ffmpeg解码处理
  7. Unity3D 游戏引擎之实现平面多点触摸(二)
  8. Mongodb的oplogsize修改
  9. 百度文库免费下载最新攻略,全新的百度文库下载方式
  10. 穿上就不想脱下!这款火爆ins的夏季凉鞋,防滑,抗污,速干不臭脚!让你秒变型男!...
  11. STM32CubeIDE使用总结(四)——遇到的问题
  12. 雷军:别轻易尝试,要做好准备再去创业
  13. win7中显示桌面的方式有哪些?
  14. Do You Kown Asp.Net Core -- Asp.Net Core 2.0 未来web开发新趋势 Razor Page
  15. 【@NotNull和@NotBlank的区别】
  16. 景联文科技:关于语音标注,你知道多少?
  17. 计算机闪存大小,电脑内存大小有什么区别
  18. JAVAEE真实课堂系列之javaScript全讲-刘志远-专题视频课程
  19. 【计算机图形】制作能够利用鼠标拖拽实现360度旋转的3D人体模型flash文件
  20. 电磁场的概念及常见电磁场产生设备

热门文章

  1. BZOJ 2402 陶陶的难题II (树链剖分、线段树、凸包、分数规划)
  2. activiti7 和业务_上市公司区块链业务终于赚钱了!营收增长3886.03%
  3. linux查看某端口进程占用,Linux下查看某端口占用进程
  4. beego mysql 存储过程_ioioj5
  5. python找与7相关的数_Python3.7 列表中有关增删改查的语句和函数
  6. 20211028 Stabilizability
  7. struts2.0简单页面 (不带拦截器和带拦截器案例)
  8. summerDao-比mybatis更强大无需映射配置的dao工具
  9. 43、Java动态代理一——动态类Proxy的使用
  10. 高并发服务端分布式系统设计概要(上)