char、varchar、text、ntext、bigint、int、smallint、tinyint和bit的区别及数据库的数据类型分类:数据库2008-11-16 14:44 381人阅读评论(0) 收藏举报基础: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数据类型时不用担心输入的字符是英文还是汉字,较为方便,但在存储英文时数量上有些损失。
进一步学习:char、varchar、text、ntext、bigint、int、smallint、tinyint和bit的区别及数据库的数据类型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:从0到255的整数数据,存储大小为1 字节。
bit:1或0的整数数据,存储大小为1 字节。
Unicode 数据在Microsoft® SQL Server™ 2000 中,传统上非Unicode 数据类型允许使用由特定字符集定义的字符。
字符集是在安装SQL Server 时选择的,不能更改。
使用Unicode 数据类型,列可存储由Unicode 标准定义的任何字符,包含由不同字符集定义的所有字符。
Unicode 数据类型需要相当于非Unicode 数据类型两倍的存储空间。
Unicode 数据使用SQL Server 中的nchar、varchar 和ntext 数据类型进行存储。
对于存储来源于多种字符集的字符的列,可采用这些数据类型。
当列中各项所包含的Unicode 字符数不同时(至多为4000),使用nvarchar 类型。
当列中各项为同一固定长度时(至多为4000 个Unicode 字符),使用nchar 类型。
当列中任意项超过4000 个Unicode 字符时,使用ntext 类型。
说明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)二进制数据类型二进制数据包括Binary、Varbinary 和Image.Binary 数据类型既可以是固定长度的(Binary),也可以是变长度的。
Binary[(N)] 是n 位固定的二进制数据。
其中,n 的取值范围是从1 到8000。
其存储窨的大小是n + 4 个字节。
Varbinary[(N)] 是n 位变长度的二进制数据。
其中,n 的取值范围是从1 到8000。
其存储窨的大小是n + 4个字节,不是n 个字节。
在Image 数据类型中存储的数据是以位字符串存储的,不是由SQL Server 解释的,必须由应用程序来解释。
例如,应用程序可以使用BMP、TIEF、GIF 和JPEG 格式把数据存储在Image 数据类型中。
(2)字符数据类型字符数据的类型包括Char,Varchar 和Text。
字符数据是由任何字母、符号和数字任意组合而成的数据。
Varchar 是变长字符数据,其长度不超过8KB。
Char 是定长字符数据,其长度最多为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 数据以Nchar、Nvarchar 和Ntext 数据类型存储。
使用这种字符类型存储的列可以存储多个字符集中的字符。
当列的长度变化时,应该使用Nvarchar 字符类型,这时最多可以存储4000 个字符。
当列的长度固定不变时,应该使用Nchar 字符类型,同样,这时最多可以存储4000 个字符。
当使用Ntext 数据类型时,该列可以存储多于4000 个字符。
(4)日期和时间数据类型日期和时间数据类型包括Datetime 和Smalldatetime 两种类型。
日期和时间数据类型由有效的日期和时间组成。
例如,有效的日期和时间数据包括"4/01/98 12:15:00:00:00 PM"和"1:28:29:15:01 AM 8/17/98"。
前一个数据类型是日期在前,时间在后一个数据类型是霎时间在前,日期在后。
在Microsoft SQL Server 中,日期和时间数据类型包括Datetime 和Smalldatetime 两种类型时,所存储的日期范围是从1753 年 1 月 1 日开始,到9999 年12 月31 日结束(每一个值要求8 个存储字节)。
使用Smalldatetime数据类型时,所存储的日期范围是1900 年 1 月1日开始,到2079 年12 月31 日结束(每一个值要求4 个存储字节)。
日期的格式可以设定。
设置日期格式的命令如下:Set DateFormat {format | @format _var|其中,format | @format_var 是日期的顺序。
有效的参数包括MDY、DMY、YMD、YDM、MYD 和DYM。
在默认情况下,日期格式为MDY。
例如,当执行Set DateFormat YMD 之后,日期的格式为年月日形式;当执行Set DateFormat DMY 之后,日期的格式为日月有年形式(5)数字数据类型数字数据只包含数字。
数字数据类型包括正数和负数、小数(浮点数)和整数。
整数由正整数和负整数组成,例如39、25、0-2 和33967。