char、varchar、text、ntext、bigint、int、smallint、tinyint和bit的区别及数据库的数据类型
分类: 数据库 2008-11-16 14:44 381人阅读 评论(0) 收藏 举报
基础:
charvarchartextncharnvarcharntext的区别
1CHARCHAR存储定长数据很方便,CHAR字段上的索引效率级高,比如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间,不足的自动用空格填充。
 
2VARCHAR。存储变长数据,但存储效率没有CHAR高。如果一个字段可能的值是不固定长度的,我们只知道它不可能超过10个字符,把它定义为 VARCHAR(10)是最合算的。VARCHAR类型的实际长度是它的值的实际长度+1。为什么“+1”呢?这一个字节用于保存实际使用了多大的长度。从空间上考虑,用varchar合适;从效率上考虑,用char合适,关键是根据实际情况到权衡点。
 
3TEXTtext存储可变长度的非Unicode数据,最大长度为2^31-1(2,147,483,647)个字符。
 
4NCHARNVARCHARNTEXT。这三种从名字上看比前面三种多了个“N”。它表示存储的是Unicode数据类型的字符。我们知道字符中,英文字符只需要一个字节存储就足够了,但汉字众多,需要两个字节存储,英文与汉字同时存在时容易造成混乱,Unicode字符集就是为了解决字符集这种不兼容的问题而产生的,它所有的字符都用两个字节表示,即英文字符也是用两个字节表示。ncharnvarchar的长度是在14000之间。和charvarchar比较起来,ncharnvarchar则最多存储4000个字符,不论是英文还是汉字;而charvarchar最多能存储8000个英文,4000个汉字。可以看出使用ncharnvarchar数据类型时不用担心输入的字符是英文还是汉字,较为方便,但在存储英文时数量上有些损失。
 

进一步学习:
charvarchartextntextbigintintsmallinttinyintbit的区别及数据库的数据类型
 
Varchar 对每个英文(ASCII)字符都占用2个字节,对一个汉字也只占用两个字节
char 对英文(ASCII)字符占用1个字节,对一个汉字占用2个字节Varchar 的类型不以空格填满,比如varchar(100),但它的值只是"qian",则它的值就是"qian"char 不一样,比如char(100),它的值是"qian",而实际上它在数据库中是"qian "(qian后共有96个空格,就是把它填满为100个字节)
由于char是以固定长度的,所以它的速度会比varchar快得多!但程序处理起来要麻烦一点,要用trim之类的函数把两边的空格去掉!
 
ntext
可变长度 Unicode 数据的最大长度为 230 - 1 (1,073,741,823) 个字符。存储大小是所输入字符个数的两倍(以字节为单位)。ntext SQL-92 中的同义词是 national text
 
text
服务器代码页中的可变长度非 Unicode 数据的最大长度为 231-1 (2,147,483,647) 个字符。当服务器代码页使用双字节字符时,存储量仍是 2,147,483,647 字节。存储大小可能小于 2,147,483,647 字节(取决于字符串)。
 
bigint:从-2^63(-9223372036854775808)2^63-1(9223372036854775807)的整型数据,存储大小为 8 个字节。
 
int:从-2^31(-2,147,483,648)2^31-1(2,147,483,647)的整型数据,存储大小为 4 个字节。
 
smallint:从-2^15(-32,768)2^15-1(32,767)的整数数据,存储大小为 2 个字节。
 
tinyint:从0255的整数数据,存储大小为 1 字节。
 
bit10的整数数据,存储大小为 1 字节。
 

Unicode 数据
Microsoft® SQL Server™ 2000 中,传统上非 Unicode 数据类型允许使用由特定字符集定义的字符。字符集是在安装 SQL Server 时选择的,不能更改。使用 Unicode 数据类型,
列可存储由 Unicode 标准定义的任何字符,包含由不同字符集定义的所有字符。Unicode 数据类型需要相当于非 Unicode 数据类型两倍的存储空间。
Unicode 数据使用 SQL Server 中的 ncharvarchar ntext 数据类型进行存储。对于存储来源于多种字符集的字符的列,可采用这些数据类型。当列中各项所包含的 Unicode 字符数不同时(至多为 4000),使用 nvarchar 类型。当列中各项为同一固定长度时(至多为 4000 Unicode 字符),使用 nchar 类型。当列中任意项超过 4000 Unicode字符时,使用 ntext 类型。
 
decimal是整数数据类型
说明    SQL Server Unicode 数据类型是基于 SQL-92 标准中的国家字符数据类型。SQL-92 使用前缀字符 n 标识这些数据类型及其值。
 

1.数据类型
数据类弄是数据的一种属性,表示数据所表示信息的类型。任何一种计算机语言都定义了自己的数据类型。当然,不同的程序语言都具有不同的特点,所定义的数据类型的各类和名称都或多或少有些不同。SQL Server 提供了 25 种数据类型:
·Binary [(N)]
·Varbinary [(N)]
·Char [(N)]
·Varchar[(N)]
·Nchar[(N)]
·Nvarchar[(N)]
·Datetime
·Smalldatetime
·Decimal[(p[,s])]
·Numeric[(p[,s])]
·Float[(N)]
·Real
·
Int
·Smallint
·Tinyint
·Money
·Smallmoney
·Bit
·Cursor
·Sysname
·Timestamp
·Uniqueidentifier
·Text
·Image
·Ntext
 
(1)二进制数据类型
二进制数据包括 BinaryVarbinary Image.
Binary 数据类型既可以是固定长度的(Binary),也可以是变长度的。
Binary[(N)] n 位固定的二进制数据。其中,n 的取值范围是从 1 8000。其存储窨的大小是 n + 4 个字节。
Varbinary[(N)] n 位变长度的二进制数据。其中,n 的取值范围是从 1 8000。其存储窨的大小是 n + 4个字节,不是 n 个字节。
Image 数据类型中存储的数据是以位字符串存储的,不是由 SQL Server 解释的,必须由应用程序来解释。例如,应用程序可以使用 BMPTIEFGIF JPEG 格式把数据存储在 Image 数据类型中。

(2)字符数据类型
字符数据的类型包括 CharVarchar Text
字符数据是由任何字母、符号和数字任意组合而成的数据。
Varchar 是变长字符数据,其长度不超过 8KBChar 是定长字符数据,其长度最多为 8KB。超过 8KB ASCII 数据可以使用Text 数据类型存储。例如,因为 Html 文档全部都
ASCII 字符,并且在一般情况下长度超过 8KB,所以这些文档可以 Text 数据类型存储在 SQL Server 中。
(3)Unicode 数据类型
Unicode 数据类型包括 Nchar,Nvarchar Ntext
Microsoft SQL Server 中,传统的非 Unicode 数据类型允许使用由特定字符集定义的字符。在 SQL Server 安装过程中,允许选择一种字符集。使用 Unicode 数据类型,列中可以存储任何由Unicode 标准定义的字符。在 Unicode 标准中,包括了以各种字符集定义的全部字符。使用Unicode 数据类型,所战胜的窨是使用非 Unicode 数据类型所占用的窨大小的两倍。
SQL Server 中,Unicode 数据以 NcharNvarchar Ntext 数据类型存储。使用这种字符类型存储的列可以存储多个字符集中的字符。当列的长度变化时,应该使用 Nvarchar 字符类型,这时最多可以存储 4000 个字符。当列的长度固定不变时,应该使用 Nchar 字符类型,同样,这时最多可以存储 4000 个字符。当使用 Ntext 数据类型时,该列可以存储多于 4000 个字符。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。