SQLsever数据库数据类型
在设计程序和编写程序中信息和数据都是存放在数据库中的
那么什么属于数据
数字 属于数据的⼀种,⽂字 属于数据的⼀种,影剧 属于数据的⼀种,照⽚ 属于数据的⼀种
数据包含了数字、⽂字、影剧、照⽚……………
不同的数据信息存放在数据库中,都是要设定不同的数据类型的。
那么数据类型:就是不同⼤⼩的数据容器。
(⼀)整数
整数型数据包括bigint型、int型、smallint型和tinyint型。
(1)bigint型数据的存储⼤⼩为8个字节,共64位,数值范围是-263~263-1。
(2)int型数据的存储⼤⼩为4个字节,共32位,数值范围是-231~231-1.
(3)smallint型数据的存储⼤⼩为2个字节,共16位, 的数值范围是-215~215-1.
(4)tinyint型数据的存储⼤⼩只有1个字节,共8位, 数值范围是-27~27-1.
(⼆)浮点型也可以理解为⼩数型
浮点数据类型包括real型、float型、decimal型和numeric型。
(1)real型数据的存储⼤⼩为4个字节,可以精确到⼩数点后第7位数字。
存储范围为从-3.40E+38 ~-1.18E-38,0和1.18E-38 ~ 3.40E+38。
在SQL Server中,real的同义词为float(24)。
(2)float型的数据存储⼤⼩为8个字节,可精确到⼩数点后第15位数字。
存储范围为从-1.79E+308 ~-2.23E-308,0和2.23E+308 ~ 1.79E+308。
float型的数据可写成float[(n)]的形式。其中n是1~15之间的整数值,
当 n是1~15之间的整数值,指定float型数据的精度。
当n为1~7时,实际上定义了⼀个real型的数据,系统⽤4个字节存储;
当n为8~15时,系统认为它是个float型的数据,⽤8个字节存储它。
(3)decimal数据类型和numeric数据类型的功能完全⼀样,它们都可以提供⼩数 。
其存储数据取值范围是-1038+1 ~1038-1。
decimal型数据和numeric型数据的定义格式为decimal[(p,[s])]和numeric[(p,[s])],
decimal和numeric。都有两个参数:p(精度)和s(⼩数位数)。
p指定⼩数点左边和右边可以存储的⼗进制数字的最⼤个数。
s指定⼩数点右边可以存储的⼗进制数字的最⼤个数,默认⼩数位数是0。
参数之间的关系是0≤s≤p。
例如:decimal(15,5)表⽰共有15位数,其中整数10位,⼩数5位。
(三)⼆进制数据类型
⼆进制数据类型⽤于存储⼆进制数据,包括binary型、varbinary型和image型。
(1)Binary 数据类型既可以是固定长度的(Binary),也可以是变长度的,
Binary[(n)] 是 n位固定的⼆进制数据。其中,字符默认值占1个字节,
n 的取值范围是从 1 到 8000。其存储窨的⼤⼩是 n + 4 个字节。
在输⼊数据时必须在数据前加上字符“0X”作为⼆进制标识。 例如:要输⼊“abc”则应输⼊“0Xabc”。
若输⼊的数据位数为奇数,则系统会⾃动在起始符号“0X”的后⾯添加⼀个0。 如上述输⼊“0Xabc”后,系统会⾃动变为“0X0abc”。
(2)varbinary型是可变长度的⼆进制数据类型,其定义形式为varbinary(n),
其中n表⽰数据的长度,取值为1~8 000。
如果输⼊的数据长度超出n的范围, 则系统会⾃动截掉超出部分。
当binnary型数据允许null值时,将被视为varbinary型的数据。
⼀般情况下,由于binary型的数据长度固定,因此它⽐varbinary型的数据处理速度快。sql server 2000是一种
(3)·image型的数据也是可变长度的⼆进制数据,通常⽤于存储图⽚
Image 数据类型中存储的数据是以位字符串存储的,不是由 SQLServer 解释的,
必须由应⽤程序来解释。
例如,应⽤程序可以使⽤BMP、TIEF、GIF 和 JPEG 格式把数据存储在 Image
数据类型
(四)逻辑型(所谓的逻辑即就只有两种情况,真或假)
逻辑数据类型只有⼀种bit型。bit数据类型只占⽤1个字节的存储空间,
其值为0 fasle(假)和1 true(真)。bit型不能定义为null值。
(五)字符型
  字符数据是由任何字母、符号和数字任意组合⽽成的数据。
字符数据类型包括char型、nchar型、varchar型和nvarchar型。
Unicode—统⼀的字符编码标准
1)·char型是固定长度的⾮Unicode字符数据类型, 存储时每个字符和符号占⽤⼀个字节的存储空间。
其定义形式为char[(n)],其中n表⽰所有字符所占的存储空间,取值为1~8 000, 默认值为1。
若输⼊数据字符数⼩于n定义的范围,则系统⾃动在其后添加空格来填满设定好的空间;
若输⼊数据字符数超过n定义的范围,则系统⾃动截掉超出部分。
(2)·nchar型是固定长度的Unicode字符数据类型,
由于Unicode标准规定在存储时每个字符和符号占⽤2个字节的存储空间,
因此nchar型的数据⽐char型数据多占⽤⼀倍的存储空间。其定义形式为nchar[(n)],
其中n表⽰所有字符所占的存储空间,取值为1~4 000,默认值为1。
使⽤Unicode标准字符集的好处是由于它使⽤两个字节作存储单位,使得⼀个存储单位的容量⼤⼤增加,
这样就可以将全世界的语⾔⽂字都囊括在内。
当⽤户在⼀个数据列中同时输⼊不同语⾔的⽂字符号时,系统不会出现编码冲突。
(3)·varchar型也是可变长度的⾮Unicode字符数据类型。其定义形式为varchar[(n)]。
它与char型类似,n的取值范围是1~8 000。
但由于varchar型具有可变长度的特性,所以varchar型数据的存储长度为实际数值的长度。
如果输⼊数据的字符数⼩于n定义的长度,系统也不会像char型那样在数据后⾯⽤空格填充;
但是如果输⼊的数据长度⼤于n定义的长度,系统会⾃动截掉超出部分。
⼀般情况下,由于char型的数据长度固定,因此它⽐varchar型数据的处理速度快。
(4)·nvarchar型也是可变长度的Unicode字符数据类型,其定义形式为nvarchar[(n)]。
由于它采⽤了Unicode标准字符集,因此n的取值范围是从1~4 000。
nvarchar型的其他特性与varchar类型相似。
(六)⽂本和图形
⽂本和图形数据类型是⽤于存储⼤量的⾮Unicode和Unicode字符以及
⼆进制数据的固定长度和可变长度数据类型,包括text型、ntext型和image型。
(1)·text型是⽤于存储⼤量⾮Unicode⽂本数据的可变长度数据类型,
其容量理论上为231-1(2 147 483 647)个字节。在实际应⽤时需要视硬盘的存储空间⽽定。
(2)·ntext型是⽤于存储⼤量Unicode⽂本数据的可变长度数据类型,
其理论容量为230-1(1 073 741 823)个字节。
(3)·image型是⽤于存储⼤量⼆进制数据的可变长度数据类型,
其理论容量为2^31-1个字节。
Image型数据的存储模式与text型数据相同,通常⽤来存储图形等OLE对象。
在输⼊数据时,与输⼊⼆进制数据⼀样,必须在数据前加上起始符号“0X”作为⼆进制标识。
(4)此外还有⼀种: ·table型⽤于存储对表或视图处理后的结果集。table数据类型不适⽤于表中的列,
(七)⽇期和时间
⽇期和时间数据类型代表⽇期和⼀天内的时间,包括datetime型和smalldatetime型。
(1)·datetime型是⽤于存储⽇期和时间的结合体的数据类型。
datetime:从1753年1⽉1⽇到9999年12⽉31⽇的⽇期和时间数据,精确到百分之三秒。
datetime型数据所占⽤的存储空间为8个字节, 其中前4个字节⽤于存储1900年1⽉1⽇以前或以后的天数,数值分正负,正数表⽰在此⽇期之后的⽇期,负数表⽰在此⽇期之前的⽇期;
(2)smalldatetime:从1900年1⽉1⽇到2079年6⽉6⽇的⽇期和时间数据,精确到分钟。
smalldatetime型数据所占⽤的存储空间为4个字节。
(⼋)货币
货币数据类型⽤于存储货币或现⾦值,包括money型和smallmoney型。
(1)·money型是⼀个有4位⼩数的decimal值,其取值从-2^63 ~2^63-1, 精确到货币单位的千分之⼗。存储⼤⼩为8个字节。
31~+2
(2)·smallmoney型货币数据值介于-231 -1间,精确到货币单位的千分之⼗。 存储⼤⼩为 4 个字节。
(九)特定
SQL Server 2000中包含了⼀些⽤于数据存储的特殊数据类型,
包括timestamp型和 uniqueidentifier型。
(1)·timestamp数据类型提供数据库范围内的惟⼀值,它相当于binary(8)或varbinary(8),
但当它所定义的列在进⾏更新或插⼊数据⾏操作时,此列的值会⾃动更新。
每个数据库表中只能有⼀个timestamp型数据列。
如果表中的列名为“timestamp”,则该列的类型将被⾃动定义为timestamp型。
(3)·uniqueidentifier数据类型⽤于存储⼀个16位的⼆进制数据,
此数据称为全局惟⼀标识符(Globally Unique Identifier,GUID)
(⼗)⽤户⾃定义
sysname数据类型是系统提供给⽤户的,便于⽤户⾃定义的数据类型。
该数据类型被定义为NVARCHAR(128),即它可以存储128个Unicode字符或256个⼀般字符。
其语法形式如下:
sp_addtype {type},[,system_data_bype][,'null_type']
其中,type 是⽤户定义的数据类型的名称。 system_data_type 是系统提供的数据类型,
例如Decimal、Int、Char等等。
null_type 表⽰该数据类型是如何处理空值的,必须使⽤单引号引起来, 例如’NULL’、‘NOT NULL’或者’NONULL’。
(⼗⼀)SQL Server 特殊
(1)·sql_variant型是⼀种存储SQL Server⽀持的各种数据类型(text、ntext、timestamp
和sql_variant除外)值的数据类型。 (2)Unicode 数据类型 Unicode—统⼀的字符编码标准 Unicode
数据类型包括 Nchar,Nvarchar 和Ntext Unicode数据类型,字符所占的存储空间是⾮ Unicode 数据类型的两倍。 
char、varchar、text和nchar、nvarchar、ntext 前三种是⾮ Unicode
数据类型,后三种是Unicode数据类型,唯⼀区别多了个字母"n" 在字符中,英⽂字符只需要⼀个字节存储就⾜够了,但汉字需要两个字节存储,
当英⽂与汉字同时存在时容易造成混乱,Unicode字符集就是为了解决字符集这种不兼容的问题⽽产⽣ (3)特殊数据类型
特殊的数据类型有3种,即 Timestamp、Bit 和 Uniqueidentifier。
1,Timestamp ⽤于表⽰SQL
Server 活动的先后顺序,以⼆进投影的格式表⽰。 Timestamp 数据与插⼊数据或者⽇期和时间没有关系。
2,Bit 由 1 或者0 组成。当表⽰真或者假、ON 或者 OFF 时,使⽤ Bit 数据类型。 
3,Uniqueidentifier 由 16
字节的⼗六进制数字组成,表⽰⼀个全局唯⼀的。 当表的记录⾏要求唯⼀时,GUID是⾮常有⽤。
例如,在客户标识号列使⽤这种数据类型可以区别不同的客户。
此外SQL Server为⼤多数数据类型只提供了两种索引类型——聚簇和⾮聚簇。SQL Server也⽀持全⽂检索索引和XML索引,但这些只对特定的数据类型。
理解资料:源于⽼师的上课和所给资料

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