`

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

阅读更多
很多开发者进行数据库设计的时候往往并没有太多的考虑char, varchar类型,有的是根本就没注意,因为存储价格变得越来越便宜了,忘记了最开始的一些基本设计理论和原则,这点让我想到了现在的年轻人,大手一挥一把人民币就从他手里溜走了,其实我想不管是做人也好,做开发也好,细节的把握直接决定很多东西。当然还有一部分人是根本就没弄清楚他们的区别,也就随便选一个。在这里我想对他们做个简单的分析,当然如果有不对的地方希望大家指教。
1、CHAR。CHAR存储定长数据很方便,CHAR字段上的索引效率级高,比如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间,不足的自动用空格填充,所以在读取的时候可能要多次用到trim()。
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
我把他们的区别概括成:
CHAR,NCHAR 定长,速度快,占空间大,需处理
VARCHAR,NVARCHAR,TEXT 不定长,空间小,速度慢,无需处理
NCHAR、NVARCHAR、NTEXT处理Unicode码
if ($ != jQuery) { $ = jQuery.noConflict(); }
分享到:
评论

相关推荐

    char、varchar、nchar、nvarchar四种类型的区别

    对于字符类型的字段,SQL Server 提供了 `char`、`varchar`、`nchar` 和 `nvarchar` 这四种常见的类型。下面我们将详细介绍这四种类型的特点及其适用场景。 #### 1. 定长 vs 变长 - **CHAR**: 是一种定长字符串...

    深入char、varchar、text和nchar、nvarchar、ntext的区别详解

    本文将深入探讨`CHAR`、`VARCHAR`、`TEXT`以及`NCHAR`、`NVARCHAR`、`NTEXT`的区别,帮助开发者做出更明智的选择。 1. **CHAR**: - `CHAR`是一种定长字符串类型,它会为每个字段预留指定的字节数,无论实际存储的...

    过程需要参数 ‘@statement’ 为 ‘ntext/nchar/nvarchar’ 类型

    sql中varchar和nvarchar的区别与使用方法Sqlserver中char,nchar,varchar与Nvarchar的区别分析基于SQL Server中char,nchar,varchar,nvarchar的使用区别深入char、varchar、text和nchar、nvarchar、ntext的区别详解SQL...

    sqlserver-oracle 数据类型对照

    - `nchar`和`nvarchar`在SQL Server中对应Oracle的`NCHAR`和`NVARCHAR2`,用于存储Unicode字符。 - `text`和`ntext`在SQL Server中对应Oracle的`CLOB`和`NCLOB`,用于存储大量文本数据。 - `image`在SQL Server中...

    何更改sql2005数据库的编码方式

    * 存储过程和用户定义函数的所有现有 char、varchar、text、nchar、nvarchar 或 ntext 参数和标量返回值。 * char、varchar、text、nchar、nvarchar 或 ntext 系统数据类型和基于这些系统数据类型的所有用户定义的...

    sql server 和oracle 中数据类型的区别

    11. **VARCHAR2**: 可变长度的非Unicode字符类型,例如`VARCHAR2(10)`,在SQL Server中对应的类型为`nvarchar`。 12. **INTERVAL DAY TO SECOND**: 用于存储时间间隔,例如`INTERVAL DAY(2) TO SECOND(6)`,在SQL ...

    sqlserver与myqsql区别

    例如,MySQL使用enum和set类型,而SQL Server使用nchar,nvarchar,ntext等类型。MySQL使用AUTO_INCREMENT来创建自增字段,而在SQL Server中使用identity(1,1)来实现相同的功能。函数方面也有所不同,比如获取当前日期...

    SQL中varchar和nvarchar的基本介绍及其区别

    在SQL中,`varchar`和`nvarchar`是两种常见的字符数据类型,它们分别用于存储非Unicode和Unicode字符数据。理解这两种类型的区别对于数据库设计和优化至关重要。 `varchar(n)`是可变长度的非Unicode字符数据类型,...

    SQLSERVER与C中数据类型的对应关系.pdf

    - SQL Server:`text` 和 `ntext` 在较新的版本中已被淘汰,通常使用 `varchar(max)` 和 `nvarchar(max)` 替代,两者都对应 C# 的 `String` - SQL Server:`char` 和 `nchar` 对应 C# 的 `String` - SQL Server:...

    SqlServer与Oracle差异

    - Sql server的主要数据类型有:char、varchar、nchar、nvarchar、text、ntext、image,以及货币类型money,还有二进制类型binary和varbinary。 3. **SQL语法** - 在SQL基本语法上,两者大体相似,但在具体操作上...

    C#中的类型和SQL Server中的类型对应关系

    - `text`和`ntext`在较旧版本的SQL Server中用于存储大量文本,但在现代版本中,通常推荐使用`nvarchar(max)`替代`ntext`。 - `image`类型用于存储二进制大数据,对应C#的`byte[]`,用于处理二进制数据如图片或...

    SQLSERVER数据类型详解.pdf

    `char`和`nchar`的最大长度为8000个字符,`varchar`和`nvarchar`的最大长度为4000个字符,而`text`和`ntext`则可以存储高达2^31-1个字符。 了解并正确使用这些数据类型对于设计高效且适应各种数据需求的数据库是至...

    SQLServer和MySql语法和关键字的区别详解

    2. **字符类型**: SQLServer 支持 `nchar`, `nvarchar`, 和 `ntext` 这些 Unicode 字符类型,MySQL 不支持这些类型,而是使用 `char`, `varchar`, 和 `text` 类型来处理字符数据。 3. **自动增长字段**: MySQL 使用 ...

    SQL数据库的学习总结部分

    在SQL数据库中,常见的数据类型有char、varchar、text、nchar、nvarchar和ntext等。 1. char:char类型存储定长数据,char字段上的索引效率高,但存储大小固定,不足的自动用空格填充,读取时可能需要用到trim()。 ...

    Microsoft Access数据类型与SQL Server数据类型的区别

    - **SQL Server**: 支持 `Char`, `VarChar`, `NChar`, `NVarchar`, `Text`, `NText` 和 `Xml` 类型。 **6. 备注类型** - **Microsoft Access**: 使用 `Memo` 类型。 - **SQL Server**: 使用 `VarChar(max)` 或 `...

    SQL Server 数据类型总结

    `text`和`ntext`用于存储大量文本,但在SQL Server 2005及以后版本中被`varchar(max)`和`nvarchar(max)`所替代,后者提供更高效的空间利用和性能。 ### 3. 日期和时间类型 随着对时间敏感数据处理的需求日益增加,...

    SqlServer数据库的数据类型

    ### SqlServer数据库的数据类型详解 数据类型在编程与数据库...以上就是SQL Server中提供的主要数据类型的详细介绍,这些数据类型覆盖了大部分常见的数据存储需求,并且可以根据具体的应用场景进行灵活选择和扩展。

Global site tag (gtag.js) - Google Analytics