SQL:char、varchar、text和nchar、nvarchar、ntext的区别

SQL:char、varchar、text和nchar、nvarchar、ntext的区别

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

     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。

     如果是存储文章等大段内容的时候,纯英文和数字,用text,含有中文字符的,用ntext。

转载于:https://www.cnblogs.com/TomToDo/archive/2008/05/27/1208496.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/111017.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • pycharm2021 激活码【中文破解版】

    (pycharm2021 激活码)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~https://javaforall.cn/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~0Y…

  • linux基本命令手册_linux常用命令详解

    linux基本命令手册_linux常用命令详解命令功能说明线上查询及帮助命令(2个)man查看命令帮助,命令的词典,更复杂的还有info,但不常用。help查看Linux内置命令的帮助,比如cd命令。文件和目录操作命令(18个)l

  • video operation_open vino

    video operation_open vino转载注明出处:http://zjbintsystem.blog.51cto.com/964211/713240从盛夏走到深秋,我们继续DAVINCIDM365-DM368的开发。说来惭愧,人家51CTO热情支持本博客,而本人却一直没有像其他博客之星一样频繁更新博客,心里确实说不过去。管理公司确实很累,有更急的客户的项目要做,我们成功先推出了DM6446-810MHz的核心板( htt

  • lua string find_string.find

    lua string find_string.find在lua的string.find方法用法为string.find(s1,s2)含义为查找字符串s2在s1中出现的位置,如果找不到,返回nil。但这个方法实际上是以正则表达式来解释s2的,所以string.find(‘if(i>10)’,'(‘)这个表达式运行时会出现错误unfinishedcapture。lua中的正则表达式使用的特殊字符为^$()…

    2022年10月14日
  • JAVA 位操作

    JAVA 位操作

  • SQL Server 2008 示例库 AdventureWorks2008R2[通俗易懂]

    SQL Server 2008 示例库 AdventureWorks2008R2[通俗易懂]求AdventureWorks2008R2和AdventureWorksDW2008R2的下载地址图片:

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号