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。

转载于:https://www.cnblogs.com/Jace06/p/9979353.html

SQL中char、varchar、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. SQL中char\varchar\text与nchar\nvarchar\ntext的区别

    SQL中char\varchar\text与nchar\nvarchar\ntext的区别 定义 特点 定义 char char(n)是长度不可变的,用于表示非Unicode字符数据.n代表该数据类型 ...

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

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

  4. oracle中char,varchar,varchar2的区别

    1.char长度固定,varchar2长度可变.例如,存储字符串"123",char(10)表示存储的内容占10个字节:123      (包含7个空格),varchar2(20) ...

  5. Oracle中 char varchar varchar2的区别

    1.CHAR的长度是固定的,而VARCHAR2的长度是可以变化的, 比如,存储字符串"abc",对于CHAR (20),表示你存储的字符将占20个字节(包括17个空字符),而同样的 ...

  6. 数据库中char varchar nchar nvarchar的区别

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

  7. SQL中where与having的区别

    SQL中where与having的区别 目录 SQL中where与having的区别 创建表 插入数据 进行聚合操作 # WHERE是在聚合之前进行数据行的过滤而HAVING实在聚合之后进行新数据的过 ...

  8. TEXT、TINYTEXT、MEDIUMTEXT、LONGTEXT选择 和 char varchar varchar2 的区别

    TEXT.TINYTEXT.MEDIUMTEXT.LONGTEXT的区别: 储存不区分大小写的字符数据 TINYTEXT 最大长度是 255 (2^8 - 1) 个字符. TEXT 最大长度是 655 ...

  9. sql中=null和is null区别

    sql中=null和is null区别 前言 关于sql语句对null的处理尤其小心,这个null处理的知识点我看了好几次,但是很容易再次犯错,这次记录一个点, 因为这个错误是我看一个帖子看到的错误的 ...

  10. sql中exits和in的区别

    sql中exits和in的区别 转:http://hi.baidu.com/delphi_relive/blog/item/d7c0034a49c4932208f7ef21.html in 和 exi ...

最新文章

  1. html 表单内容怎么获取不到,jquery中formdate一直获取不到对象中的[0]的值 包括本身也是一个空的数据怎么办?...
  2. js中iframe访问父页的方法
  3. Android 中三种启用线程的方法
  4. PAT乙级-1070. 结绳(25)
  5. Python QT5
  6. java自带数据库_Derby-jdk自带数据库的使用 - Java天堂
  7. mysql 结果倒置_菜鸟 问下PHP取出MYSQL数据,然后倒置顺序
  8. 我的CSDN原创高质量免积分下载资源列表
  9. 计算机建筑制图实践报告,工程建筑实习报告范文(精选5篇)
  10. python pickle文件大小_无法在Python中加载以前转储的大尺寸pickle文件
  11. Coursera视频无法播放问题解决
  12. android blowfish加密算法,blowfish 现在哪种加密算法安全?A
  13. 创业 和 移动互联网
  14. 磁条卡磁道2的等效数据
  15. 美国〈国家地理〉镜头中的极致之地
  16. GNN:A Gentle Introduction to Graph Neural Networks
  17. 拇指锁屏APP--新型手机赚钱秒到账到底靠谱不靠谱?
  18. LSTM模型的推导与实现
  19. java ocx,Eclipse使用ActiveX控件(OCX)开发Java程序
  20. 欧拉图(一笔画问题)

热门文章

  1. python语言是非开源语言_python是非开源语言吗
  2. 日语专业双学位选计算机,湖北师范大学计算机科学与技术(日语双学位)专业2015年在湖北理科高考录取最低分数线...
  3. near、far、huge,based四个个指针的区别
  4. 使用WiX Toolset创建.NET程序发布Bootstrapper(安装策略管理)(一)——初识WiX
  5. 微信小程序多位验证码/密码输入框
  6. 一文彻底弄懂 for forEach for-in for-of 的区别
  7. Winform界面中实现菜单列表的动态个性化配置管理
  8. +2流水线是怎样提高性能的,会遇到什么问题,解决方法是什么
  9. centos 6.5安装extundelete软件报错
  10. 用XAML做网页!!—广告展示区