T-SQL 数据类型
  SQL Server 中,每个列、局部变量、表达式和参数都具有一个相关的数据类型。特别是列,数据类型是列(字段)最重要的属性之一,代表了数据的格式。数据类型的出现是为了规范存储和使用数据。SQL Server 的数据类型可以分为系统数据类型和用户自定义数据类型两种。
(1) 系统数据类型
  不同的数据库管理系统支持的数据类型略有差别,SQL Server 2008 提供的数据类型分为数字类型、货币类型、日期和时间类型、字符串数据类型、CLR数据类型、空间数据类型和其他数据类型。我们只介绍几种常用的数据类型。
A. 数字数据类型
  数字数据包括正数、小数、分数和整数。在SQL Server 2008中,数字数据类型分为整型数字类型和非整型数字类型。非整型数子类型又分为精确数字类型和近似数字类型。数字数据类型说明如表4-1所示。
数据类型
描述
整型数字
bigint
长度为8个字节的大整型数字
int
长度为4个字节的标准整型数字
smallint
长度为2个字节的小整型数字
tinyint
长度为1个字节的微整型数字
非整型数字
精确数字
decimal[(p[,s])]
p为精度,指定小数点左边和右边可以存储的十进制数字的最大个数。精度必须是从1到最大精度之间的值。最大精度为38 p的默认值为18s为小数位数,指定小数点右边可以存储的十进制数字的最大个数。s的默认值是0ps必须遵循规则:0≤s≤p
例如:decimal(6,2) 表示小数点后有2位数字,小数点前4位数字的定点小数。
numeric [(p[,s])]
decimal
近似数字
float[(n)]
其中n为用于存储float数值尾数的位数(以科学计数法表示),如果指定了n,则它必须是介于13之间的某个值。n的默认值为53。不过,SQL Server 并不是直接将n 用于确定float 的存储长度,而是将n 进行如下对应:如果 1 ≤n ≤24 ,则将n 视为24,存储大小为4个字节。如果 25≤ n ≤53 ,则将n 视为53,存储大小为8个字节。
real
长度为4字节的浮点数字。
数字数据类型常量不需要用单引号括起来。例如,268 int 型常量,198.25 decimal numeric 型常量,101.5E 56.5E-2 float real型常量。
B. 货币数据类型
SQL Server2008 中可以使用money smallmoney 两种数据类型能够存储货币数据或货币值,这些数据类型可以使用常用的货币符号,如美元符号($)、人民币符号(¥)等。货币数据存储的精度固定为4位小数,它实际上是带有4位小数的decimal类型的数据。货币类型说明如表4-2所示。
数据类型
描述
money
smallmoney
长度为8字节的定点小数,精确到货币单位的千分之十
长度
长度为4个字节的定点小数,精确到货币单位的千分之十
货币类型常量可以包含小数点,但不能使用引号。如,$18$542365.16 都是money 型常量。
C. 日期和时间数据类型
SQL Server2008 提供的日期时间类型包括datetime datetime2datedatetimeoffsetsmalldatetime time 。常用的日期时间型数据类型说明如4-3表所示。
数据类型
描述
datetime
8个字节。定义了结合24小时制时间的日期,其格式为YYYY-MM-DD hh:mm:ss[.nnn]。其中 YYYY4位年份数字,MM2位的月份数字,DD2位的天数数字,hh 2位的小时数,mm2位的分钟数,ss 2位的秒钟数字,[.nnn]表示秒的小数部分。
smalldatetime
4个字节。定义了范围和精度都相对较小的日期和时间类型,秒始终为零(:00),并且不带秒的小数部分。但这足以满足一般的记录日期和时间的需要,而且它比datetime 更节省空间。其格式为YYYY-MM-DD hh:mm:ss 。秒数小于或等于29.998秒的值向下舍入为最接近的分钟数;大于或等于29.999秒的值向上舍入为最接近的分钟数。精确度为1分钟。
date
3个字节。保存日期数据的数据类型,默认格式为YYYY-MM-DD
time[(n)]
5个字节。保存时间数据的数据类型,它的精度可以达到100纳秒。其格式为 hh:mm:ss[.nnnnnnn]n 为秒的小数部分指定数字的位数,可以是从07的整数。默认小数精度是7100ns
日期和时间数据类型常量使用特定格式的字符日期值表示,并用单引号括起来。例如,’April 15 2000’ , ‘04/15/2009’ , ‘2013’-05-20 19:34:28’,20120527’
例:将带秒数的字符串文字转化为 smalldatetime
SELECT  CAST'2007-05-08 12:35:29’  AS  smalldatetime,
          CAST'2007-05-08 12:35:30’  AS  smalldatetime,
    CAST'2007-05-08 12:59:59.998’  AS  smalldatetime,
执行结果如图所示
              执行结果
D. 字符串数据类型
    字符串数据由字母、符号和数字组成。在SQL Server中,字符的编码方式有两种:ASCII码(普通编码)和Unicode码(统一编码)。 ASCII码指的是不同国家或地区的编码
长度不一样,比如,英文字母的编码是1个字节(8位),中文汉字的编码是2个字节(16位)。Unicode码是指不管哪个地区、哪种语言均采用双字节(16位)编码。常用的字符串数据类型的说明如表4-4所示。   
    数据类型
  描述
ASCII
(普通编码)
char[(n)]
长度为n 个字节的固定长度的非Unicode字符串数据类型。n的取值范围为18000n的默认值为1。存储大小为 n个字节。当输入字符所占的空间小于n个字节时,系统自动在后边为其空格。
varchar[(n|max)]
长度为n 个字节的可变长度的非Unicode字符串数据类型。n的取值范围为18000n的默认值为1Max指示最大存储大小是231-1个字节。在SQL Server2008中可以使用varcharmax)类型代替早期版本中的text类型存储大型文本数据。存储大小为输入数据的字节的实际长度,而不是n个字节。所输入的字符数据长度可以为0
Unicode
(统一编码)
nchar[(n)]
包含n个字符的固定长度的Unicode字符串数据类型。n的取值范围为1-4000n的默认值为1。存储大小为2n个字节。当输入字符所占的空间小于2n个字节时,系统自动在后边为其补空格。
nvarchar[(n|max)]
包含n个字符的固定长度的Unicode字符串数据类型。n的取值范围为1-4000n的默认值为1max指示最大存储大小是231-1字节。在SQL Server2008中可以使用nvarcharmax)类型代替早期版本中的ntext类型存储大型文本数据。存储大小为输入字符个数的两倍。
二进制
binary[(n)]
n 个字节固定长度的二进制字符数据。n的取值范围为18000
varbinay[(n|max)]
n 个字节可变长度的二进制字符数据。n的取值范围为18000max指示最大存储大小是unicode文件格式231-1字节。
image
可用来存储超过8000字节大小的可变长度的二进制字符数据,如Microfoft word文档,Microfoft Excel电子表格、位图图像、GIF文件和JPEG文件。
字符串数据类型常量要用单引号括起来,例如,‘BOHAI University’。如果字符串包含单引号,则使用两个单引号表示该字符串中的单引号,例如,字符串I’m Tom  可以表示为 ‘I’’m Tom’ ,空字符串用中间没有任何字符的两个单引号表示 ‘’

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