数据库中char varchar nchar nvarchar的区别

我们在进行数据库的设计的时候,很多情况下表中的字段都是用的是字符串类型的数据,其中就有四种选择char varchar nchar nvarchar,我们该如何进行?

四种类型的详细说明

char:固定长度,非Unicode字符数据(对英文(ASCII)字符占用1个字节,对一个汉字占用2个字节)。

用来存储定长数据,长度为n个字节,n的取值范围为1至8,000,存储大小是n个字节。

varchar:可变长度,非Unicode字符数据(对英文(ASCII)字符占用1个字节,对一个汉字占用2个字节)。

用来存储变长数据,长度为n的字节,n的取值范围为1至8,000,max指示最大存储大小是2^31-1个字节,存储大小是输入数据的实际长度加2个字节,所输入数据的长度可以为0个字符。

nchar:固定长度,Unicode字符数据。

n个字符,n值必须在1到4,000之间(含)。存储大小为两倍n字节。

nvarchar:可变长度,Unicode字符数据。

n个字符,n值在1到4,000之间(含)。max指示最大存储大小为2^31-1字节,存储大小是所输入字符个数的两倍+2个字节,所输入数据的长度可以为0个字符。

Unicode或非Unicode的区别

非Unicode:char,varchar

Unicode:nchar,nvarchar

数据库中,英文字符只需要一个字节存储就足够了,但汉字和其他众多非英文字符,则需要两个字节存储,如果英文与汉字同时存在,由于占用空间数不同,容易造成混乱,导致读取出来的字符串是乱码。

Unicode字符集就是为了解决字符集这种不兼容的问题而产生的,它所有的字符都用两个字节表示,即英文字符也是用两个字节表示。而前缀n就表示Unicode字符,比如nchar,nvarchar,这两种类型使用了Unicode字符集。

定长和变长的区别:

定长:char,nchar

变长:varchar,nvarchar

定长就是长度固定,没有var前缀的,当要保存的数据长度不够时将自动在其后面填充英文空格,使长度达到相应的长度。

变长就是长度可变,有var前缀的,表示是实际存储空间是动态变化的,比如varchar,nvarchar变长字符数据则不会以空格填充。

存储容量上的区别:

char,varchar:最多8000个英文,4000个汉字

nchar,nvarchar:可存储4000个字符,无论英文还是汉字

如果,长度超过了4000个字符,使用的是text文本类型。

存储效率上的区别:

char,nchar:定长,速度快,占空间大,需处理

varchar,nvarchar:变长,速度慢,占空间小,无需处理

速度:这里的速度指的是存取的速度。

处理:主要是对应用程序来说的,如果使用char,nchar则需要用trim之类的函数把两边的空格去掉。

一般来说

如果纯英文和数字,用char/varchar

如果含有中文字符,nchar/nvarchar

数据库中char varchar nchar nvarchar的区别相关推荐

  1. SQL中char varchar nchar nvarchar ntext区别和使用(资料汇总)

    SQL中char varchar nchar nvarchar ntext区别和使用(资料汇总) 2008年10月14日 星期二 23:57 一.SQL中char varchar nchar nvar ...

  2. SqlServer中char,varchar,nchar,nvarchar的区别

    在数据库中建表时,总是习惯的将一些字段定义为nvarchar,但关于它和nchar的区别,却没有细究过,今天上网仔细了解一下做个总结: 1.n代表的是Unicode字符,可以解决多语言字符集之间的转换 ...

  3. oracle数据库中nvarchar,Oracle数据库中的varchar,varchar2,nvarchar,nvarchar2区别及用

    [varchar,varchar2 ] 联系: 1. varchar/varchar2用于存储可变长度的字符串 比如 varchar(20),存入字符串'abc', 则数据库中该字段只占3个字节,而不 ...

  4. char varchar nchar nvarchar区别

    char varchar nchar nvarchar区别 char与varchar的区别 (1) char的长度是不可变的,而varchar的长度是可变的.(也就是说,定义一个char[4]和var ...

  5. oracle中varchar 和 nvarchar2的区别,Oracle中char,varchar,varchar2,nvarchar,nvarchar2的区别

    一.概述 1.char char的长度是固定的,比如说,你定义了char(20),即使你你插入abc,不足二十个字节,数据库也会在abc后面自动加上17个空格,以补足二十个字节: char是区分中英文 ...

  6. char varchar nchar nvarchar 四者的区别是什么(为何SQL Server自动给字符串末尾加空格)...

    本着低碳的原则将几个变量声明为nchar,结果发现尾巴上每次都多一大串空格,C#中不得不多次Trim劳心费神易出错.上网一查原来四种字符串看似相近其实讲究很多,其中以本帖最为全面,特此转发. 原帖:h ...

  7. 数据库之char vchar nchar nvchar的区别

    首先介绍一下定长或变长 所谓定长就是长度固定的,当输入的数据长度没有达到指定的长度时将自动以英文空格在其后面填充,使长度达到相应的长度:有var前缀的,表示是实际存储空间是变长的,比如varchar, ...

  8. 数据库中char, varchar, nvarchar的差异

    1. char      固定长度,最长n个字符. 2. varchar      最大长度为n的可变字符串. (n为某一整数,不同数据库,最大长度n不同) char和varchar区别:       ...

  9. 数据库中char和nchar的区别

    char 类型是一个字节 char(8)只能存8字母 nchar  类型是双字节 nchar(8)能存8个汉字

最新文章

  1. SQLServer查看存储过程的方法
  2. 如何生成表_SPSS简单操作 | 如何生成交叉表?
  3. python账号密码一一对应_python模拟用户登录系统,如何两个用户输入各自的密码才能登入?...
  4. Windows FFMPEG开发环境配置
  5. [边分治+线段树合并]「CTSC2018」暴力写挂
  6. ant vue 树形菜单横向显示_快速实现一个简单可复用可扩展的Vue树组件
  7. c语言可以调用汇编语言吗,C语言与汇编语言混编方式
  8. 国内互联网文章转摘习惯与现状一瞥
  9. 从事软件测试工作五年,30岁还感觉很迷茫,目前环境不好,适合转行做什么?
  10. [从头学数学] 第193节 推理与证明
  11. uva 563 Crimewave
  12. 网线制作方法-RJ45
  13. Linux通过stty命令操作串口设备(linux串口操作命令)
  14. 互联网寒冬下的面经总结
  15. Maven私服创建--Nexus
  16. rac建oracle表空间,Oracle Rac创建表空间及用户
  17. 通过串口号获得该串口号对应的设备信息(如设备范例ID等)
  18. 【工作记录】支付系统数据库梳理
  19. 基于Modbus协议的KingSCADA-IOserver和仿真PLC通信
  20. 特征工程(七)—特征学习RBM

热门文章

  1. TRUNCATE,DELETE,DROP的区别
  2. test 2016-12-28
  3. 在全局中调用类的静态成员函数
  4. 椭圆曲线加密算法(ECC)原理和C++实现源码(摘录)
  5. 自动配置IE代理脚本
  6. BLE安全机制从入门到放弃
  7. mysql空洞_optimize table 删除空洞--MYSQL
  8. Boost Asio总结(16)例子
  9. 区块链BaaS云服务(36)欧盟EBSI“使用场景”
  10. Testing and Test-First Programming