SQL Server(5)
时间:2010-10-20 来源:zwt7610
SQL Server(5)
Transact-SQL语言基础(二) 数据类型详解
一、整数数据类型
1、 TINYINT TINYINT数据类型存储0——255之间的所有正整数。每个TINYINT类型的数据占用1个字节的存储空间。
2、 SMALLINT SMALLINT数据类型存储 -2^15(-32768)到2^15-1(32767)之间的所有正负整数。每个SMALLINT类型的数据占用2个字节的存储空间,其中,用1位表示整数值的正负号,其它15位表示整数值的长度和大小。
3、INT INT数据类型存储 -2^31(-2 147 486 648)到2^31-1(2 147 483 647)之间的所有正负整数。每个INT类型的数据占
用4个字节的存储空间,其中,用1位表示整数值的正负号,其它31位表示整数值的长度和大小。
4、BIGINT BIGINT数据类型存储 -2^63到2^63-1之间的所有正负整数。每个INT类型的数据占用8个字节的存储空间。
二、浮点数据类型(近似数类型)
浮点数据类型用于存储十进制小数。它在SQL SERVER中采用上舍入方式进行存储。上舍入是指当且仅当要舍入的数是一个非零的数时,对其保留数字部分,最低有效位上的数值加1,并进行心要的进位。例如3.14159265358979分别进行2位和12位的舍入,结果为3.15和3。141592653590。
1。REAL REAL数据类型可精确到第7位小数,其范围为从 -3.40E-38到3.40E+38。每个REAL类型的数据占用4个字节的存储空间。
2. FLOAT FLOAT数据类型可精确到第15位小数,其范围为从 -1.79E-308到1.79E+308。每个REAL类型的数据占用8个字节的存储空间。FLOAT数据类型可写为FLOAT[(n)]的形式。n为指定FLOAT数据的精度,n在1到15之间的整数。当n取1到7时,实际上定义了一个REAL类型的数据,系统用4个字节存储它;当n取8到15时,系统认为是FLOAT类型,用8个字节存储它。
三、 DECIMAL和NUMERIC(小数类型)
DECIMAL 提8供小数所需要的实际存储空间,但也有一定的限制,可以用2到17个字节来存储。DECIAML可以写为DECIAML(p,s)的形式,其中,P表示可供存储的值的总位数{精度}(不包括小数点),默认值为18;s表示小数点后的位数,默认值为0。例如DECIMAL(18,5),表示共有15位数,整数13位,小数5位。
四、字符数据类型
使用字符数据类型时,要加上单引号或双引号。例如:'JAFJA1548' "我的朋友"。一个汉字要占用两个字符的空间,也就是16bit。一个字母和数字占用一个字符的空间。
char数据类型的定义形式为char(n),以char类型存储的每一个字符和符号占一个字节的存储空间。n表示所有字符所占的存储空间,n的取值范围为1到8000,即可以容纳8000个ANSI字符。若不指定N值,默认是1。若指定了N,输入的数据小于N,则系统自动在其后添加空格来填满设定好的空间;输入的数据超出N,系统会自动截掉其超出的部分。
2、NCHAR
nchar数据类型的定义形式为char(n),它与CHAR类型相似,不同的是NCHAR数据类型的取值为1到4000,因为NCHAR采用UNICODE标准字符集。UNICODE规定每个字符使用两个字节的存储单位,因此一个存储单位的容纳量就大大增加了,可以将全世界的语言文字包括在内,在一个数据列中就可以同时出现中文、英文、法文、等等,而不会出再编码冲突。
3、VARCHAR
VARCHARchar数据类型的定义形式为VARCHAR(n),n的取值范围为1到8000。与CHAR一样,不同的是,VARCHAR数据类型具有可变动长度的特性,因为VARCHAR类型的存储长度为实际数值长度,若输入数据的字符数小于N,则系统不会在其后添加空格来填满设定好的空间。
4、NVARCHAR
NVARCHARchar数据类型的定义形式为NVARCHAR(n)。它与VARCHAR类型相似。不同的是,NVARCHAR数据类型采用的UNICODE标准字符集,N的取值范围为1到4000。
CHAR 、 NCHAR 与VARCHAR 、NVARCHAR的优劣:CHAR 、NCHAR长度固定,因此,它比VARCHAR、NVARCHAR类型的处理速度快,但是VARCHAR、NVARCHAR节省存储空间,各有优劣,应用中根据实际情况选择。
五、TEXT
TEXT数据类型用于存储大量文本数据,其容量理论上为1到2^31-1(2 147 483 647)个字节,实际应用中需要根据硬盘空间而定。
六、NTEXT
与TEXT相似,不同的是,NTEXT类型采用UNICODE字符集,因此容量为2^30-1(1 073 741 823)。
七、IMAGE
用于存储大量的二进制(BINARY DATA)。理论容量为2^31-1个字节。通常用来存储图形等OLE对象,输入数据时,必须在数据前加上字符“0X”作为二进制标识。
八、日期和时间数据类型
上节已说过了,现在就说一下它的输入格式。
日期格式
1、英文+数字
英文可以用全名或缩写,且不区分大小写。
2008 MAY 1 2008 1 MAY
2、数字+分隔符
允许使用“/”、连接符“-”、小数点“.”。例如:
YMD:2008/8/28 2008-8-28 2008.8.28
DMY:28/08/2008 28-08-2008 28.08.2008
MDY:3/5/2008 03-05-2008 03.05.2008
时间格式
输入时间格式必须按照“小时:分钟:秒.毫秒“的顺序来输入。也可用12小时制,AM午前,PM午后。例如:
2:15:7.9 pm
九、特定数据类型
TIMESTAMP
它所定义的列在更新或插入数据时,此列的值会自动更新。每个数据库表中只能有一个TIMESTAMP数据列。
UNIQUEIDEDENTIFIER
存储一个16位的二进制数字,此数字称为GUID(Globally Unique Identifier)全球惟一标识府。此数字由SQL SERVER的NEWID()函数产生全球惟一的编码,在全球各地的计算机经由此函数产生的数字不会相同。
十、用户自定义数据类型
它被定义为NVARCHAR(128)。用于用户自定义的数据类型。
十一、SQL_variant
可以存储除文本、IMAGE和TIMESTAMP以外的其它任合法的SQL SERVER数据类型。
十二、TABLE
用于存储对表或视图处理后的结果集。它可以使得变量可以存储一个表,从而使函数或过程返回值查询结果更加方便、快捷。
十三、BIT
只有两个值0和1。如果输入0和1以外的值,将被视为1。
十四、BINARY和NBINARY