1. 精确数据类型( 整数)
数据类型 | 范围 | 存储字节数 |
tinyint | 0~255 | 1 |
Smallint | -32768~32677 | 2 |
Int | -2147483648(10-31 ~2747483647) | 4 |
Numeric(p,s) | -10-38 ~1038 -1 | 2~17 |
Decimal(p,s) | -10-38 ~1038 -1 | 2~17 |
2. 精确数据类型( 十进制小数)
l Sql server 提供numeric 和decimal 提供带十进制小数点的精确数据使用这两种据, 使用这两数据类型几乎上是相同的, 在使用上只有一点区别, 只有标度为0 的numeric 型 数据( 整数) 才 能用于具有IDENTITY 性质的列
l 十进制小数的精度和标度: 精确数值和标度用括号括起来并用逗号隔开numeric(p,s) 和decimal(p,s)p 为精度, 它指定了能存储在列中的最大十进制数字位数包括小数点左边和右边十进制位数之和,s 为标度它指定了能被存储的小数点右边最大数字位数( 小 数位数), 并必须S 当S=0 时与整数兼容, 例如NUMERIC(10,3) 表明该列数值 的精度为10, 标度为3 即存储在该列中的数至多有10 个, 十进制数字位, 其 中包括3 个小数位( 小 数点右3 位) 3. 近似数值数据类型
数据类型 | 取值 | 存储字节数 |
FLOAT(P) | 浮点数 | 4 或8 |
DOUBLE PRECISION | 浮点数 | 8 |
REAL | 浮点数 | 4 |
4. 指定精度
只有FLOAT 数据类型允许用户指定用 户浮点的精度, 例如FLOAT(6) 指定了列的浮点值可以有6 位数 字的精度, 但不能像numeric 那样和decumal 数据类型那 样指定浮点数的小数位置( 小数位数)
5. 货币数据类型
数据类型 | 取值范围 | 存储字节数 |
Money | -922,337,203,685,477.58088~922,337,203,685,447.5807 | 8 |
Smallmoney | -214,748.3648~214,748.3647 | 4 |
6. 日期时间数据类型
数据类型 | 范围 | 精确到 |
Datetime | January,1,1753~decemember31,9999 | 1/300 秒 |
Smalldatetime | January1,1900~june62076 | 分钟 |
日期显示格式默认为 mon dd yyyy hh:mm am/pm
输入格式 14:30 apr 15,1997 14:30:40:9999 april 15,1997
4am 15 apr 97 4/15/97
15/4/1997
7. 字符数据类型
数据类型 | 取值 | 范围存储 | 字节数 |
CHAR(N) NCHAR(N) | 固定字符串 | 最多255 个 字符 | N |
Varchar(n) nvarchar(n) | 固定字符串 | 最多255 个 | 实际输入长度最多N |
Text | 固定字符串 | 最多231 -1 个 字符 | 16 字节 地址+2K 倍数 |
l 对单字节的字符集, 如英语可使用char(n) 或varchar(n),
l 多字节字符集, 如日语、汉语可使用nchar(n) 或nvarchar(n)
l 超过255 字符的字符串应使用text
l 当字符数据是可预辞呈或长度较短时,如小于5个 字符,一般使用固定升序的char(n) 或nchar(n) ,否则使用varchar(n) 或nvarchar(n)
多字节字符串
Sybase sql server 允 许使用多国语言。在有些国家语言中,一个字符由多个字节组成。为此sybase sql server 提供多字节的字符数据类型包括:
l Nchar(n)
可存放长度固定的多字节字符,到多为255 个 字符,存储要求的字节数是n*@@ncharsize
l Nvarchar(n)
可存放长度可变的多字节字符,至多255 字 符其存储要求的字节数是:@@ncharsize* 实际输入字符的个数,这里 的@@ncharsize 是组成多字节字符个数,是一个可设置的全局变量。
字符数据类型的输入
字符数据类型的数据输入时,必须使用章引号(‘’) 或 双引号(“”) 括起来
为在屏幕的下一行可继续一个字符串,可在进入下一行之前,键入一个反斜杠(/ )
8. 二进制数据类型
数据类型 | 取值 | 范围 | 存储字节数 |
BIT | BIT | 0 或1 | 每字节8BIT |
BINARY(N) | 定长二进数 | 最多255 字 节 | N |
VARBINARY(N) | 变长二进数 | 最多255 字 节 | 实际输入长度# 最 多 |
IMAGE | 二进制 | 最长231 -1 字 节 | 16 字节 地址+2K 的倍数 |
Sybase sql server 的二进制数据类型,除bit 数据类型外,用类似十六进制的表示来存储,二进制 数据以”0x” 开始,后跟数字或大小写字母A 到F 的任务 组合。
使用准则
l 对只有两个状态(例如YES 或NO,ON 或OFF )的列,可使用BIT 数 据类型,但必须指定列性质为NOTNULL
l 对至多255 字节的原始二进制数据,使用binary(n) 或varbinary(n)
l Image 数据类型用于存放大块的二进制数据,例如:相片、图纸、图画等。
9. 用户定义数据类型
ü 利用用户定义数据类型可使用在不同的表中重复出 现的各列具有相同特性
ü 如果把规则和缺省捆绑到一个用户定义的数据类型 上,那么该规则和缺省也适用于采用此用户定义数据类型的每个列
一个用户定义数据类型(user-defined datatype )
l 是数据库的对象之一
l 可以用于系统数据类型可使用的地方
l 由名字、系统数据类型、列性质{NULL|NOT NULL|IDENTITY }组成,如果不指定列的性持,其缺省为NOT NULL
l 可以与规则(RULE )和缺省(DEFAULT) 相捆绑
1) 定义:用户定义数据类型使用系统存 储过程SP_ADDTYPE 定义(增加一个用户定义数据类型)定义语法为:
Sp_addtype type_name,phystype[(length)|(precision[,scale])]
[,nulltype|identity]
其中
l Type_name 是用户定义数据类型的名字
l Phystype 是用户定义数据类型所基于的系统数据类型,可以包括长度、精度、标度。当系统数据类型中包含标点符号字符 (例如括号’()’ 、逗号’,’ )时,系统数据类型应该用引号(‘’ 或””) 括起来。
l Nulltype 指定该用户定义数据类型是否可接收null 值
l Identity 指定该用户定义数据类型具有ideneity 性 质。关于ideneity 性质。
2) 关于用户定义数据类型命名的约定
Sybase sql server 建议命名用户定义数据类型时使用如下格式
Typ_ss_xxxx….
l Typ 是常量,指出这个是对象是用户定义的数据类型
l Ss 是该用户定义数据类型所基于的系统数据类型代码。
l Xxxx… 是该用户定义数据类型的描述名字
3) 使用
用户定义数据类型一旦建立,就可以在任何使用系统数据类型的地方使用它。
在CREATE TABLE 或ALTER TABLE 语句中使用,为列定义数据类型和列性质
例如 exec sp_addtype typ_ch_pic,”char(4)”
Exec sp_addtype typ_ch_tid, “char(6)”
在建表的时候使用
Create table titles(title_id typ_ch_tid…,title varchar(80)…,pub_id typ_ch_pid…,…)
在局部变量,参数的数据类型声明中使用。
还可以与规则、缺省相捆绑,为该用户定义数据类型指定一个规则缺省值。
4) 查看、重命名和删除用户定义数据类型
l 查看
可以使用系统存储过程sp_help 来 查看系统或用户定义的数据类型的特征。例如
Exec sp_help typ_ch_tid
l 重新命名(改名)
可以使用系统存储过程sp_rename 来 重新命名一个用户定义数据类型。例如,将用户定义数据类型typ_ch_tid 改 名为typ_ch_titleid:
Exec sp_renme typ_ch_tid,typ_ch_titleid
l 删除
可以使用系统存储过程sp_droptype 来 删除一个已经定义且示在使用的用户定义数据类型。例如 exec sp_droptype typ_dh_tid
必须注意,不能删除正在被表或其它数据库对象物用户定义数据类型