SQL中char、varchar、nvarchar的区别

转载 2015年07月09日 14:02:50

char
    char是定长的,也就是当你输入的字符小于你指定的数目时,char(8),你输入的字符小于8时,它会再后面补空值。当你输入的字符大于指定的数时,它会截取超出的字符。
   nvarchar(n)
    包含 n 个字符的可变长度 Unicode 字符数据。
n 的值必须介于 1 与 4,000 之间。字节的存储大小是所输入字符个数的两倍。所输入的数据字符长度可以为零。       
varchar[(n)]  
    长度为 n 个字节的可变长度且非 Unicode 的字符数据。n 必须是一个介于 1 和 8,000 之间的数值。存储大小为输入数据的字节的实际长度,而不是 n 个字节。所输入的数据字符长度可以为零。
1、CHAR。CHAR存储定长数据很方便,CHAR字段上的索引效率级高,比如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间。 

 2、VARCHAR。存储变长数据,但存储效率没有CHAR高。如果一个字段可能的值是不固定长度的,我们只知道它不可能超过10个字符,把它定义为 VARCHAR(10)是最合算的。VARCHAR类型的实际长度是它的值的实际长度+1。为什么“+1”呢?这一个字节用于保存实际使用了多大的长度。  
从空间上考虑,用varchar合适;从效率上考虑,用char合适,关键是根据实际情况找到权衡点。  
3、TEXT。text存储可变长度的非Unicode数据,最大长度为2^31-1(2,147,483,647)个字符。  
4、NCHAR、NVARCHAR、NTEXT。这三种从名字上看比前面三种多了个“N”。它表示存储的是Unicode数据类型的字符。我们知道字符中,英文字符只需要一个字节存储就足够了,但汉字众多,需要两个字节存储,英文与汉字同时存在时容易造成混乱,Unicode字符集就是为了解决字符集这种不兼容的问题而产生的,它所有的字符都用两个字节表示,即英文字符也是用两个字节表示。nchar、nvarchar的长度是在1到4000之间。和char、varchar比较起来,nchar、nvarchar则最多存储4000个字符,不论是英文还是汉字;而char、varchar最多能存储8000个英文,4000个汉字。可以看出使用nchar、nvarchar数据类型时不用担心输入的字符是英文还是汉字,较为方便,但在存储英文时数量上有些损失。  
所以一般来说,如果含有中文字符,用nchar/nvarchar,如果纯英文和数字,用char/varchar。



Unicode数据  简单的说: 任何一个字符都占2字节.
非Unicode    字母和数字等占1个字节,其它的语言字符如汉字占2个字节.

SQL中char、nchar、varchar、nvarchar、text、ntext的区别

工作了三年多,第一次跑来写博客,以前工作中遇到的问题,都没有整理过,从今天起,无论是在学习中还是在工作中,都希望能够通过博客记录一下自己的笔记以及体会。 作为开发人员,要做数据库设计,是避免...
  • johncheung1990
  • johncheung1990
  • 2017年01月04日 09:26
  • 673

char、varchar和nvarchar的区别

前言       设计数据库的时候,遇到了字段的类型用char,varchar和nvarchar的问题。下面小编就来讲解一下。 是什么        char是定长的,也就是无论你输入的字符多长,它...
  • u013037201
  • u013037201
  • 2016年04月23日 23:45
  • 2688

数据库中char varchar nchar nvarchar的区别

数据库中char varchar nchar nvarchar的区别           我们在进行数据库的设计的时候,很多情况下表中的字段都是用的是字符串类型的数据,其中就有四种选择charva...
  • nangeali
  • nangeali
  • 2016年04月12日 20:35
  • 1313

CHAR,VARCHAR,VARCHAR2,nvarchar,nvarchar2的用法和区别

CHAR: 1.长度固定,当char(15)的元素中只有“abc”时,其余十二位用空格填补; VARCAHR: 1.长度不固定,该列中元素有多少位,就是多少位; 2.当数据为空时,该字段为空字符串; ...
  • yxd_19901227
  • yxd_19901227
  • 2014年02月22日 11:27
  • 2577

Oracle 关于 CHAR,VARCHAR,VARCHAR2,nchar,nvarchar 4者的区别使用

有没有人遇到过,疑惑过关于varchar和varchar2的使用,到底用哪个?为什么区分的问题? 多google一下,差不多就明白了,我就参考别人的讲解一下。 先说,char和nchar的区别。 ...
  • Ghohankawk
  • Ghohankawk
  • 2013年12月13日 13:02
  • 835

char、varchar、nchar、nvarchar的区别

    对于程序中的string型字段,SQLServer中有char、varchar、nchar、nvarchar四种类型来对应(暂时不考虑text和ntext),开建立数据库中,对这四种类型往往比...
  • spring21st
  • spring21st
  • 2008年11月14日 13:58
  • 1892

SQL中varchar和nvarchar有什么区别…

varchar(n) 长度为 n 个字节的可变长度且非 Unicode 的字符数据。n 必须是一个介于 1 和 8,000 之间的数值。存储大小为输入数据的字节的实际长度,而不是 n 个字节。 nv...
  • juelingfeng
  • juelingfeng
  • 2014年08月07日 13:20
  • 508

SQL Server中nvarchar和varchar的区别

在进行SQL Server数据库设计的时候,我们发现有几种数据类型是以“n”开头的,比如nchar,nvarchar,ntext等,还有几种对应不是以“n”开头的数据类型,比如char,varchar...
  • u012447000
  • u012447000
  • 2015年12月02日 09:09
  • 1005

char(nchar)与varchar(nvarchar)的区别以及选择

char(或是nchar)与varchar(或是nvarchar)是数据库中最常见的用于存储字符数据的数据类型,由于它们大多...
  • zzzmmmkkk
  • zzzmmmkkk
  • 2009年07月22日 12:22
  • 1825

MySQL数据库数据类型(char(n),varchar(n),nchar(n),nvarchar(n)的区别)

在学习这四种数据库类型时,我们可能会有点搞不清他们中的区别,而至于我们会随便使用其中一个,可能某次运行程序出了错误,都不知道是哪里错了,所以我们有必要将这四种的区别弄明白,让我们在编程的时候,避免一些...
  • IUNIQUE
  • IUNIQUE
  • 2016年10月23日 15:55
  • 1242
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SQL中char、varchar、nvarchar的区别
举报原因:
原因补充:

(最多只允许输入30个字)