SQL Server数据库技术(13)[MSSQL防范]
本文“SQL Server数据库技术(13)[MSSQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
在计算机中数占据两种特点:范例和长度.所谓数据范例就是以数据的表现方法和存储方法来划分的数据的种类.
在sql server 中每个变量、参数、表达式等都有数据范例.系统供应的数据范例分为几大类,如表4-2 所示.
此中,BIGINT、 SQL_VARIANT 和TABLE 是SQL Server 2000 中新增添的3 种数据范例.下面分类报告各种数据范例.
4.3.1 整数数据范例
整数数据范例是最常用的数据范例之一.
1、INT (INTEGER)
INT (或INTEGER)数据范例存储从-2的31次方 (-2 ,147 ,483 ,648) 到2的31次方-1 (2 ,147 ,483,647) 之间的全部正负整数.每个INT 范例的数据按4 个字节存储,此中1 位表示整数值的正负号,别的31 位表示整数值的长度和大小.
2、SMALLINT
SMALLINT 数据范例存储从-2的15次方( -32, 768) 到2的15次方-1( 32 ,767 )之间的全部正负整数.每个SMALLINT 范例的数据占用2 个字节的存储空间,此中1 位表示整数值的正负号,别的15 位表示整数值的长度和大小.
3、TINYINT
TINYINT数据范例存储从0 到255 之间的全部正整数.每个TINYINT范例的数据占用1 个字节的存储空间.
4、BIGINT
BIGINT 数据范例存储从-2^63 (-9 ,223, 372, 036, 854, 775, 807) 到2^63-1( 9, 223, 372, 036 ,854 ,775, 807) 之间的全部正负整数.每个BIGINT 范例的数据占用8个字节的存储空间.
4.3.2 浮点数据范例
浮点数据范例用于存储十进制小数.浮点数值的数据在SQL Server 中采取上舍入(Round up 或称为只入不舍)方法举行存储.所谓上舍入是指,当(且仅当)要舍入的数是一个非零数时,对其保存数字部份的最低有效位上的数值加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. 每个FLOAT 范例的数据占用8 个字节的存储空间. FLOAT数据范例可写为FLOAT[ n ]的情势.n 指定FLOAT 数据的精度.n 为1到15 之间的整数值.当n 取1 到7 时,实际上是定义了一个REAL 范例的数据,系统用4 个字节存储它;当n 取8 到15 时,系统认为其是FLOAT 范例,用8 个字节存储它.
3、DECIMAL
DECIMAL数据范例可以供应小数所需求的实际存储空间,但也有一定的限制,您可以用2 到17 个字节来存储从-10的38次方-1 到10的38次方-1 之间的数值.可将其写为DECIMAL[ p [s] ]的情势,p 和s 肯定了切确的比例和数位.此中p 表示可供存储的值的总位数(不包含小数点),缺省值为18; s 表示小数点后的位数,缺省值为0. 比方:decimal (15 5),表示共有15 位数,此中整数10 位,小数5. 位表4-3 列出了各切确度所需的字节数之间的关系.
4、NUMERIC
NUMERIC数据范例与DECIMAL数据范例完好相同.
注意:SQL Server 为了和前端的开辟工具配合,其所支持的数据精度默许最大为28位.但可以通过利用号令来履行sqlserver.exe程序以启动SQL Server,可改变默许精度.号令语法以下:SQLSERVR[/D master_device_path][/P precisim_leve1]
例4-4: 用最大数据精度38 启动SQL Server
sqlservr /d c:\ Mssql2000\data\master.dat /p38
/*在利用了/P 参数后,假如后来没有指定具体的精度数值,则默许为38 位./*
4.3.3 二进制数据范例
1、BINARY
BINARY 数据范例用于存储二进制数据.其定义情势为BINARY( n), n 表示数据的长度,取值为1 到8000 .在利用时必须指定BINARY 范例数据的大小,至少应为1 个字节.BINARY 范例数据占用n+4 个字节的存储空间.在输入数据时必须在数据前加上字符"0X" 作为二进制标识,如:要输入"abc "则应输入"0xabc ".若输入的数据太长将会截掉其超越部份.若输入的数据位数为奇数,则会在起始标记"0X "后增添一个0,如上述的"0xabc "会被系统自动变成"0x0abc".
2、VARBINARY
VARBINARY数据范例的定义情势为VARBINARY(n). 它与BINARY 范例类似,n 的取值也为1 到8000, 若输入的数据太长,将会截掉其超越部份.差别的是VARBINARY数据范例具有变更长度的特点,因为VARBINARY数据范例的存储长度为实际数值长度+4个字节.当BINARY数据范例答应NULL 值时,将被视为VARBINARY数据范例.
普通情形下,由于BINARY 数据范例长度固定,因此它比VARBINARY 范例的处理速度快.
4.3.4 逻辑数据范例
BIT: BIT数据范例占用1 个字节的存储空间,其值为0 或1 .假如输入0 或1 以外的值,将被视为1. BIT 范例不能定义为NULL 值(所谓NULL 值是指空值或无意义的值).
4.3.5 字符数据范例
字符数据范例是利用最多的数据范例.它可以用来存储各种字母、数字标记、特别标记.普通情形下,利用字符范例数据时须在其前后加上单引号’或双引号" .
1 CHAR
CHAR 数据范例的定义情势为CHAR[ (n) ]. 以CHAR 范例存储的每个字符和标记占一个字节的存储空间.n 表示全部字符所占的存储空间,n 的取值为1 到8000, 便可包容8000 个ANSI 字符.若不指定n 值,则系统默许值为1. 若输入数据的字符数小于n,则系统自动在后来增添空格来填满设定好的空间.若输入的数据太长,将会截掉其超越部份.
2、NCHAR
NCHAR数据范例的定义情势为NCHAR[ (n) ]. 它与CHAR 范例类似.差别的是NCHAR数据范例n 的取值为1 到4000. 因为NCHAR 范例采取UNICODE 尺度字符集(CharacterSet). UNICODE 尺度规定每个字符占用两个字节的存储空间,所以它比非UNICODE 尺度的数据范例多占用一倍的存储空间.利用UNICODE 尺度的好处是因其利用两个字节做存储单位,其一个存储单位的包容量就大大增添了,可以将全世界的语言文字都包括在内,在一个数据列中便可以同时呈现中文、英文、法文、德文等,而不会呈现编码冲突.
3、VARCHAR
VARCHAR数据范例的定义情势为VARCHAR [ (n) ]. 它与CHAR 范例类似,n 的取值也为1 到8000, 若输入的数据太长,将会截掉其超越部份.差别的是,VARCHAR数据范例具有变更长度的特点,因为VARCHAR数据范例的存储长度为实际数值长度,若输入数据的字符数小于n ,则系统不会在后来增添空格来填满设定好的空间.
普通情形下,由于CHAR 数据范例长度固定,因此它比VARCHAR 范例的处理速度快.
4、NVARCHAR
NVARCHAR数据范例的定义情势为NVARCHAR[ (n) ]. 它与VARCHAR 范例类似.差别的是,NVARCHAR数据范例采取UNICODE 尺度字符集(Character Set), n 的取值为1 到4000.
4.3.6 文本和图形数据范例
这类数据范例用于存储大量的字符或二进制数据.
1、TEXT
TEXT数据范例用于存储大量文本数据,其容量理论上为1 到2的31次方-1 (2, 147, 483, 647)个字节,在实际利用时需求视硬盘的存储空间而定.
SQL Server 2000 从前的版本中,数据库中一个TEXT 对象存储的实际上是一个指针,它指向一个个以8KB (8192 个字节)为单位的数据页(Data Page). 这些数据页是动态增添并被逻辑链接起来的.在SQL Server 2000 中,则将TEXT 和IMAGE 范例的数据直接存放到表的数据行中,而不是存放到差别的数据页中. 这就削减了用于存储TEXT 和IMA- GE 范例的空间,并呼应削减了磁盘处理这类数据的I/O 数目.
2 NTEXT
NTEXT数据范例与TEXT.范例类似差别的,是NTEXT 范例采取UNICODE 尺度字符集(Character Set), 因此其理论容量为230-1(1, 073, 741, 823)个字节.
3 IMAGE
IMAGE数据范例用于存储大量的二进制数据Binary Data. 其理论容量为2的31次方-1(2,147,483,647)个字节.其存储数据的情势与TEXT 数据范例相同.普通用来存储图形等OLE Object Linking and Embedding,对象衔接和嵌入)对象.在输入数据时同BINARY数据范例一样,必须在数据前加上字符"0X"作为二进制标识
[1] [2] 下一页
4.3.7 日期和时间数据范例
1 DATETIME
DATETIME 数据范例用于存储日期和时间的结合体.它可以存储从公元1753 年1 月1 日零时起到公元9999 年12 月31 日23 时59 分59 秒之间的全部日期和时间,其切确度可达三百分之一秒,即3.33 毫秒.DATETIME 数据范例所占用的存储空间为8 个字节.此中前4 个字节用于存储1900 年1 月1 日从前或今后的天数,数值分正负,正数表示在此日期之后的日期,负数表示在此日期之前的日期.后4 个字节用于存储此后日零时起所指定的时间经过的毫秒数.假如在输入数据时省略了时间部份,则系统将12:00:00:000AM作为时间缺省值:假如省略了日期部份,则系统将1900 年1 月1 日作为日期缺省值.
2 SMALLDATETIME
SMALLDATETIME 数据范例与DATETIME 数据范例类似,但其日期时间范围较小,为从1900 年1 月1 日到2079 年6 月6:日精度较低,只能切确到分钟,其分钟个位上为按照秒数四舍五入的值,即以30 秒为界四舍五入.如:DATETIME 时间为14:38:30.283
时SMALLDATETIME 认为是14:39:00 SMALLDATETIME 数据范例利用4 个字节存储数据.此中前2 个字节存储从底子日期1900 年1 月1 日以来的天数,后两个字节存储此日零时起所指定的时间经过的分钟数.
下面介绍日期和时间的输入格局
日期输入格局
日期的输入格局很多大致可分为三类:
- 英文+数字格局
此类格局中月份可用英文全名或缩写,且不辨别大小写;年和月日之间可不用逗号;
年份可为4 位或2 位;当其为两位时,若值小于50 则视为20xx 年,若大于或等于50 则
视为19xx 年;若日部份省略,则视为当月的1号.以下格局均为精确的日期格局:
June 21 2000 Oct 1 1999 January 2000 2000 February
2000 May 1 2000 1 Sep 99 June July 00 - 数字+脱离符格局
答应把斜杠(/)、衔接符(-)和小数点(.)作为用数字表示的年、月、日之间的分
隔符.如:
YMD:2000/6/22 2000-6-22 2000.6.22
MDY:3/5/2000 3-5-2000 3.5.2000
DMY:31/12/1999 31-12-1999 31.12.2000 - 纯数字格局
纯数字格局是以持续的4 位6、位或8 位数字来表示日期.假如输入的是6 位或8 位
数字,系统将按年、月、日来辨认,即YMD 格局,并且月和日都是用两位数字来表示:
假如输入的数字是4 位数,系统认为这4 位数代表年份,其月份和日缺省为此年度的1 月
1 日.如:
20000601---2000 年6 月1 日 991212---1999 年12 月12 日 1998---1998 年
时间输入格局
在输入时间时必须按"小时、分钟、秒、毫秒"的次序来输入.在其间用冒号":"离隔.但可将毫秒部份用小数点"." 分,隔后来第一位数字代表非常之一秒,第二位数字代表百分之一秒,第三位数字代表千分之一秒.当利用12 小时制时用AM.am 和PM(pm)辨别指按时间是午前或午后,若不指定,系统默许为AM.AM 与PM 均不辨别大小写.如:
3:5:7.2pm---下午3 时5 分7 秒200 毫秒
10:23:5.123Am---上午10 时23 分5 秒123 毫秒
可以利用SET DATEFORMAT 号令来设定系统默许的日期-时间格局.
4.3.8 钱币数据范例
钱币数据范例用于存储钱币值.在利用钱币数据范例时,应在数据前加上钱币标记,系统才能辨识其为哪国的钱币,假如不加钱币标记,则默许为"¥".各钱币标记如图4-2所示.
1 MONEY
MONEY 数据范例的数据是一个有4 位小数的DECIMAL 值,其取值从-2的63次方(-922,337,203,685,477.5808到2的63次方-1(+922,337,203,685,477.5807),数据精度为万分之一钱币单位.MONEY 数据范例利用8个字节存储.
2 SMALLMONEY
SMALLMONEY数据范例近似于MONEY 范例,但其存储的钱币值范围比MONEY数据范例小,其取值从-214,748.3648到+214,748.3647,存储空间为4 个字节.
4.3.9 特定数据范例
SQL Server 中包含了一些用于数据存储的特别数据范例.
1 TIMESTAMP
TIMESTAMP数据范例供应数据库范围内的惟一值此范例相当于BINARY8或VARBINARY(8),但当它所定义的列在更新或插入数据行时,此列的值会被自动更新,一个计数值将自动地增添到此TIMESTAMP数据列中.每个数据库表中只能有一个TIMESTAMP数据列.假如成立一个名为"TIMESTAMP"的列,则该列的范例将被自动设为TIMESTAMP数据范例.
2 UNIQUEIDENTIFIER
UNIQUEIDENTIFIER 数据范例存储一个16 位的二进制数字.此数字称为(GUIDGlobally Unique Identifier ,即环球惟一辨别号).此数字由SQLServer 的NEWID函数产生的环球惟一的编码,在环球各地的计算机经过此函数产生的数字不会相同.
4.3.10 用户自定义数据范例
SYSNAME SYSNAME 数据范例是系统供应利用户的,便于用户自定义数据范例.它被定义为NVARCHAR(128),即它可存储128个UNICODE字符或256个普通字符.其具体利用办法请拜见第7章"管理数据库表"中的"自定义数据范例"章节.
4.3.11 新数据范例
SQL Server 2000 中增添了3 种数据范例:BIGINT、SQL_VARIANT和TABLE.此中BIGINT数据范例已在整数范例中介绍,下面介绍别的两种:
1 SQL_VARIANT
SQL_VARIANT数据范例可以存储除文本、图形数据(TEXT、NTEXT、IMAGE)和TIMESTAMP范例数据外的别的任何合理的SQL Server数据.此数据范例大大便利了SQL Server的开辟工作.
2 TABLE
TABLE 数据范例用于存储对表或视图处理后的后果集.这一新范例使得变量可以存储一个表,从而使函数或历程返回查询后果越发便利快、捷其、利用请拜见第13章"游标、视图和自定义函数".
上一页 [1] [2]
以上是“SQL Server数据库技术(13)[MSSQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:本文地址: | 与您的QQ/BBS好友分享! |