mysql字符集和表字符集_设置数据库的字符集和设置表字段字符集的区别是什么?...

对于oracle来说,只有数据库字符集这个说法,不存在什么表字符集和字段字符集。你说的这个是mysql的字符集,数据库字符集可以和表字符集不同,也可以和列字符集不同,也就是说,你的数据库字符集为utf8的话,表字符集可以是latin,列字符集可以是gb2312。统一修改表字段字符集没有直接的sql,可以在建表的时候:

create table t (id int primary key,name varchar(100) character set gbk,name1 varchar(100)) ENGINE=InnoDB DEFAULT CHARSET=latin1;

这样的话:

可以看到,name(指定)用了gbk而name1(默认)用了Latin1字符集。

如果你想修改整体的字段字符集,可以考虑这么做:

1、重建,导出后修改导入的脚本的字符集部分实现,这个方法可能不适合数据量很大的数据库。

2、写脚本或者存储过程实现,具体方法为利用information_schema的COLUMNS表的表名和列名建立游标,拼凑出类似:

alter table 表名 modify column '字段名' varchar(30) character set gbk not null;

产生后的语句批量执行即可。

请注意,这种做法会锁表,可能会对生产环境产生不可预料的影响,请斟酌执行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值