暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

三种数据库字符集及设置

数据库精要 2021-09-26
1111


字符集是一个字节数据的解释的符号集合,有大小之分,有相互的包容关系。数据库字符集设置与应用系统系统字符集设置不匹配时,系统显示数据库数据时会出现乱码。下面分别讲解oracle、sqlserver和mysql的字符集设置规则及设置更改方法:

Oracle:

字符集设置参数NLS_LANG


它的格式如下: NLS_LANG = language_territory.charset


它有三个组成部分(语言、地域和字符集),每个成分控制了NLS子集的特性。


其中:


Language: 指定服务器消息的语言, 影响提示信息是中文还是英文


Territory: 指定服务器的日期和数字格式,


Charset:  指定字符集。


如:AMERICAN _ AMERICA. ZHS16GBK


从NLS_LANG的组成我们可以看出,真正影响数据库字符集的其实是第三部分。


所以两个数据库之间的字符集只要第三部分一样就可以相互导入导出数据,前面影响的只是提示信息是中文还是英文;


数据库字符集在创建后原则上不能更改,但是通过以下2种方法可以更改字符集


1. 如果需要修改字符集,通常需要导出数据库数据,重建数据库,再导入数据库数据的方式来转换。


2. 通过ALTER DATABASE CHARACTER SET语句修改字符集,但创建数据库后修改字符集是有限制的,只有新的字符集是当前字符集的超集时才能修改数据库字符集,例如UTF8是US7ASCII的超集,修改数据库字符集可使用ALTER DATABASE CHARACTER SET UTF8。

NLS作用优先级别:Sql function > alter session > 环境变量或注册表 > 参数文件 > 数据库默认参数

使用语句select userenv('language') from dual;查看当前数据库字符集。


sqlserver:


在SQL Server中,字符集被称为排序规则(即Collation)。排序规则不仅影响记录行的sort顺序,还影响中文显示是否乱码等。

在sqlserver中查询字符集排序规则语句

查询当前SQL Server服务器的排序规则

SELECT SERVERPROPERTY(N'Collation');


创建数据库时默认字符集

CREATE DATABASE mydb

COLLATE SQL_Latin1_General_CP1_CI_AS

GO


--通过目录视图sys.databases查询databases的排序规则

SELECT    name,    collation_name FROM sys.databases 

WHERE name = N'mydb';

————————————

mydb    SQL_Latin1_General_CP1_CI_AS


--修改现有databases的排序规则

ALTER DATABASE mydb  COLLATE Chinese_PRC_CI_AS;


mysql:

默认情况下字符集选择规则:

(1)编译MySQL 时,指定了一个默认的字符集,这个字符集是 latin1;

(2)安装MySQL 时,可以在配置文件 (my.cnf) 中指定一个默认的的字符集,如果没指定,这个值继承自编译时指定的;

(3)启动mysqld 时,可以在命令行参数中指定一个默认的的字符集,如果没指定,这个值继承自配置文件中的配置,此时character_set_server被设定为这个默认的字符集;

(4)当创建一个新的数据库时,除非明确指定,这个数据库的字符集被缺省设定为character_set_server;

(5)当选定了一个数据库时,character_set_database被设定为这个数据库默认的字符集;

(6)在这个数据库里创建一张表时,表默认的字符集被设定为character_set_database,也就是这个数据库默认的字符集;

(7)当在表内设置一栏时,除非明确指定,否则此栏缺省的字符集就是表默认的字符集;

mysql修改字符集 最简单的修改方法,就是修改mysql的my.ini(windows版),my.cnf(linux版)文件中的字符集键值,

     如    default-character-set = utf8--客户端字符集

      character_set_server =  utf8--服务器字符集

     修改完后,重启mysql的服务


文章转载自数据库精要,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论