serversql中类型为bit应该插⼊什么值_SqlServer所有数据类型
详细说明
SQL所有的表都是由字段组成,每个字段都存储着不同的数据类型。那么SQL中所有的数据类型你真的理解吗?
今天我就给⼤家详细的说明⼀下SQL中的数据类型,
先介绍类型, 最后再给⼤家通过实例来理解它。
数据类型是⼀种属性,⽤于指定对象可保存的数据的类型,SQL Server中⽀持多种数据类型,包括字符类型、数值类型以及⽇期类型等。数据类型相当于⼀个容器,容器的⼤⼩决定了装的东西的多少,将数据分为不同的类型可以节省磁盘空间和资源。
Sql Server 还能⾃动限制每个数据类型的取值范围,例如定义了⼀个类型为int的字段,如果插⼊数据时插⼊的值的⼤⼩在smallint或者tinyint范围之内, Sql Server 会⾃动将类型转换为smallint 或者tinyint,这样⼀来,在存储数据时,占⽤的存储空间只有int的1/2或则1/4.
Sql Server数据库管理系统中的数据类型可以分为两类,分别是:
1:系统默认的数据类型
2:⽤户⾃定义的数据类型。下⾯分别介绍这两⼤类数据类型的内容.
系统默认的数据类型
1:整型
整型是数据中最基础的数据类型,主要⽤于存储数值,可以直接进⾏数据运算⽽不必使⽤函数转换。分别包括:
bigint,int,smallint,tinyint
bigint:长整型:占⽤了8个字节的存储空间,其中⼀个⼆进制位表⽰符号位,其它63个⼆进制位表⽰长度和⼤⼩,可以表⽰-2的63次⽅~2的63次⽅-1范围内的所有整数。
Int:int或者integer,占⽤了4个字节的存储空间,其中⼀个⼆进制位表⽰符号位,其它31个⼆进制位表⽰长度和⼤⼩,,可以表⽰-2的31次⽅~2的31次⽅-1范围内的所有整数。
SmallInt:占⽤了2个字节的存储空间,其中⼀个⼆进制位表⽰整数值的正负号,其它15个⼆进制位表⽰长度和⼤⼩,,可以表⽰-2的15次⽅~2的15次⽅-1范围内的所有整数。
tinyint:每个tinyint类型的数据占⽤了⼀个字节的存储空间,可以表⽰0~255范围内的所有整数.
2:浮点型
浮点数据类型存储⼗进制⼩数,⽤于表⽰浮点数值数据的⼤致数值数据类型。浮点数据为近似值;浮点数值的数据则Sql Server中采⽤了只⼊不舍的⽅式进⾏存储,即当且仅当要舍⼊的数是⼀个⾮零数时,对其保留数字部分的最低有效位上加1,并进⾏必要的近位。分别包括:real, float, decimal
real:占⽤了4个字节的存储空间,可以存储正的或者负的⼗进制数值,它的存储范围从-3.40E+38~-1.18E-38、0以及1.18E-
38~3.40E+38
float:占⽤的存储空间,取决于n的值。如果指定了n它必须是介于1和53之间的某个值。n的默认值为53。其范围从-1.79E+308~-
2.23E-308、0以及2.23E+308~1.79E-308。如果不指定数据类型float的长度,它占⽤8个字节的存储空间。float数据类型可以写成float(n)的形式,n为指定float数据的精度,n为1~53之间的整数值。当n取1~24时,实际上定义了⼀个real类型的数据,系统⽤4个⾃⼰存储它。
decimal,numeric:带固定精度和⼩数位数的数值数据类型。占⽤的存储空间,取决于存储精度。 decimal,numeric 在功能上相同。例如:decimal(10,5)表⽰共有10位数,其中整数5位,⼩数5位。如果存储的值超出精度,则四舍五⼊到相应精度, 使⽤最⼤精度时,有效值从-10^38+1~10^38-1。
3:字符数据类型
char(n):当⽤char数据类型存储数据时,每个字符和符号占⽤⼀个字节存储空间。n表⽰所有字符所占的存储空间,n的取值为1~8000,
如不指定n的值,系统默认n的值为1。若输⼊数据的字符串长度⼩于n,则系统⾃动在其后添加空格来填满设定好的空间;若输⼊的数据过
长,则会截掉其超出部分。
varhcar(n|max):n为存储字符的最⼤长度,其取值范围是1~8000,但可根据实际存储的字符数改变存储空间,max表⽰最⼤存储⼤⼩是
2的31次⽅-1个字节。存储⼤⼩是输⼊数据的实际长度加2个字节。所输⼊数据的长度可以为0个字符。如varchcar(20),则对应的变量最多
只能存储20个字符,不够20个字符的按实际存储
nchar(n):n个字符的固定长度Unicode字符数据。n值必须在1~4000之间(含),如果没有数据定义的或变量声明语句中指定n,默认长度
为1。此数据类型采⽤Unicode字符集,因此每⼀个存储单位占两个字节,可将全世界⽂字囊括在内(当然除了部分⽣僻字)
nvarchar(n|max):与varchar类似,存储可变长度Unicode字符数据。n值必须在1~4000之间(含),如果没有数据定义的或变量声明语
句中指定n,默认长度为1。max指最⼤存储⼤⼩为2的31次⽅-1字节。存储⼤⼩是输⼊字符个数的两倍+2个字节。所输⼊的数据长度可以
为0个字符.
4:⽇期和时间数据类型
date:存储⽤字符串表⽰的⽇期数据,占⽤3个字节的空间。可以表⽰0001-01-01~9999-12-31(公元元年1⽉1⽇到公元9999年12⽉
31⽇)间的任意⽇期值。数据格式为“YYYY-MM-DD”:
YYYY:表⽰年份的四位数字,范围为0001~9999;MM:表⽰指定年份中⽉份的两位数字,范围为01~12;DD:表⽰指定⽉份中某⼀天的两位数字,范围为01~31(最⾼
time:占⽤5个字节的空间。以字符串形式记录⼀天的某个时间,取值范围为00:00:00.0000000~23:59:59.9999999,数据格式
为“hh:mm:ss[.nnnnnnn]”:
hh:表⽰⼩时的两位数字,范围为0~23。mm:表⽰分钟的两位数字,范围为0~59。ss:表⽰秒的两位数字,范围为0~59。n*是0~7为数字,范围为0~9999999,它表⽰
decimal是整数数据类型datetime:⽤于存储时间和⽇期数据,占⽤8个字节的空间。从1753年1⽉1⽇到9999年12⽉31⽇,默认值为1900-01-01 00:00:
00,当插⼊数据或在其它地⽅使⽤时,需⽤单引号或双引号括起来。可以使⽤“/”、“-”和“.”作为分隔符。精确度为3.33毫秒
datetime2:⽤于存储时间和⽇期数据,占⽤6-8个字节的空间。从0001年1⽉1⽇到9999年12⽉31⽇。精确度为100纳秒
smalldatetime:与datetime类型相似,占⽤了4个字节的存储空间。只是其存储范围是从1900年1⽉1⽇到2079年6⽉6⽇,当⽇期时间
精度较⼩时,刻印使⽤smalldatetime
datetimeoffset:占⽤了10个字节的存储空间。⽤于定义⼀个采⽤24⼩时制与⽇期相组合并可识别时区的时间。
默认格式是:“YYYY-MM-DD hh:mm:ss[.nnnnnnn][{+|-}hh:mm]”:hh:两位数,范围是-14~14mm:两位数,范围为00~59;
这⾥hh是时区偏移量,该类型数据中保存的是世界标准时间(UTC)值,eg:要存储北京时间2011年11⽉11⽇12点整,存储时该值将是
2011-11-11 12:00:00+08:00,因为北京处于东⼋区,⽐UTC早8个⼩时
5:⽂本和图形数据类型
text:⽤于存储⽂本数据,服务器代码页中长度可变的⾮Unicode数据,最⼤长度为2的31次⽅-1(2147 483 647)个字符。当服务器代码
页使⽤双字节字符时,存储仍是2147 483 647字节。
ntext:与text类型作⽤相同,为长度可变的⾮Unicode数据,最⼤长度为2的30次⽅-1(1073 741 283)个字符。存储⼤⼩是所输⼊字符
个数的两倍(以字节为单位)
6.货币数据类型
money: ⽤于存储货币值,占⽤了8个字节的存储空间,money数据类型中整数部分包含19个数字,⼩数固定包含4个数字,因此money
数据类型的精度是19,存储时占⽤8个字节的存储空间。
smallmoney
money:占⽤了8个字节的存储空间,固定为四位⼩数精度
smallmoney:占⽤了4个字节的存储空间,固定为四位⼩数精度
与money类型相似,取值范围为214 748.346 8之间,smallmoney存储时占⽤4个字节存储空间。输⼊
数据时在前⾯加上⼀个货币符号,如⼈民币为¥或其它定义的货币符号。
7.位数据类型
bit:称为位数据类型,占⽤了1个字节的存储空间,只取0或1为值。bit值经常当作逻辑值⽤于判断true(1)或false(0),输⼊⾮0值时系统将其替换为1。
8.⼆进制数据类型
binary(n):长度为n个字节的固定长度⼆进制数据,其中n是从1~8000的值。存储⼤⼩为n个字节。在输⼊binary值时,必须在前⾯带0x,可以使⽤0xAA5代表AA5,如果输⼊数据长度⼤于定于的长度,超出的部分会被截断。
varbinary(n|max):可变长度⼆进制数据。其中n是从1~8000的值,max指⽰存储⼤⼩为2的31次⽅-1字节。存储⼤⼩为所输⼊数据的实际长度+2个字节。
在定义的范围内,不论输⼊的时间长度是多少,binary类型的数据都占⽤相同的存储空间,即定义时空间,⽽对于varbinary类型的数据,在存储时实际值的长度使⽤存储空间.
image:长度可变的⼆进制数据,范围为:0~2的31次⽅-1个字节。⽤于存储照⽚、⽬录图⽚或者图画,
容量也是2147 483 647个字节,由系统根据数据的长度⾃动分配空间,存储该字段的数据⼀般不能使⽤insert语句直接输⼊。
9.其他数据类型
rowversion: 占⽤了8个字节的存储空间,每个数据都有⼀个计数器,当对数据库中包含rowversion列的表执⾏插⼊或者更新操作时,该计数器数值就会增加。此计数器是数据库⾏版本。⼀个表只能有⼀个rowversion列。每次修改或者插⼊包含rowversion列的⾏时,就会在rowversion列中插⼊经过增量的数据库⾏版本值。
公开数据库中⾃动⽣成的唯⼀⼆进制数字的数据类型。rowversion通常⽤作给表⾏加版本戳的机制。rowversion数据类型只是递增的数字,不保留⽇期或时间。
timestamp:时间戳数据类型,timestamp的数据类型为rowversion数据类型的同义词,提供数据库范围内的唯⼀值,反映数据修改的唯⼀顺序,是⼀个单调上升的计数器,此列的值被⾃动更新。
timestamp与 rowversion区别:创建表中, 如果有 timestamp类型,Sql Server数据库引擎将⽣成timestamp列名;但rowversion不具备这样的⾏为,在使⽤rowversion时,必须指定列名。⽐如
CREATE TABLE db_tempone
(id INT PRIMARY KEY IDENTITY,
timestamp --这个不需要列名,字段名就叫 timestamp ,但rowversion⼀定要指定列名
)
同时⼀个表中,timestamp与 rowversion 只能有⼀个。
uniqueidentifier:占⽤了16个字节的存储空间,GUID(Globally Unique Identifier,全球唯⼀标识符),是Sql Server根据⽹络适配器地址和主机CPU时钟产⽣的唯⼀号码,其中,每个为都是0~9或a~f范围内的⼗六进制数字。例如:6F9619FF-8B86-D011-B42D-
00C04FC964FF,此号码可以通过newid()函数获得,在全世界各地的计算机由次函数产⽣的数字不会相同。
cursor:游标数据类型,该类型类似与数据表,其保存的数据中的包含⾏和列值,但是没有索引,游标⽤来建⽴⼀个数据的数据集,每次处理⼀⾏数据。
sql_variant:⽤于存储除⽂本,图形数据和timestamp数据外的其它任何合法的Sql Server数据,可以⽅便Sql Server的开发⼯作。
table:⽤于存储对表或视图处理后的结果集。这种新的数据类型使得变量可以存储⼀个表,从⽽使函数或过程返回查询结果更加⽅便、快捷。
xml:存储xml数据的数据类型。可以在列中或者xml类型的变量中存储xml实例。存储的xml数据类型表⽰实例⼤⼩不能超过2GB。
整理成⼀张表格就是:
实例
IF OBJECT_ID('db_tempone','u') IS NOT NULL DROP TABLE db_tempone
CREATE TABLE db_tempone
(id INT PRIMARY KEY IDENTITY,
Adecimal DECIMAL(16,4), --数量
Afloat FLOAT,
Adate DATE,
AChar CHAR(3),
AVarchar VARCHAR(5),
AdateTime DATETIME,
Amoney MONEY,
AdatetimeOffSet DATETIMEOFFSET,
--Arowversion rowversion, 两种类型只能是⼀个Atimestamp timestamp
)
GO
--ID是⾃增长
--Atimestamp 时间戳,不需要赋值
INSERT INTO db_tempone
( Adecimal,Afloat,Adate,AChar,AVarchar,AdateTime,amoney,AdatetimeOffSet ) VALUES
( 123.456789, 123.456789, GETDATE(),'11','aat',GETDATE(),123.456789,GETDATE() )
go
SELECT * FROM db_tempone
--说明:
1:指定字符长度是 Char(5),在插⼊数据的时候,如果超出长度,会提⽰
--消息 8152,级别 16,状态 14,第 3 ⾏--将截断字符串或⼆进制数据。
2:DECIMAL(16,4), 指定4位⼩数,如果插⼊的⼩数位数超出,则四舍五⼊截取4位
3:Float 没有指定⼩数位数时,不会截取
4:DateTime,及Date 它们带时间,区别从图中可以看出
5:Money:固定四位⼩数,超出也四舍五⼊截取4位
6:Timestamp:时间戳类型,系统⾃动赋值,⽆论是插⼊或是修改都会不同,代表有改动。
以前就是所有数据类型的⼀些说明,希望对您有所帮助。谢谢

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