T-SQL入门攻略之2-SQL数据类型

--> Title  : T-SQL入门攻略2-SQL数据类型

--> Author : wufeng4552

--> Date   : 2010-03-22

SQL语言是一种关系数据库语言是面向非过程化的第四代语言(4GL),与其他语言一样SQL 也有自己的数据类型下面分别简单介绍

1:字符串型

1.1固定长度

1.1.1unicode类型

declare @char char(10)

set @char='tsql'

select len(@char)

/*

-----------

4

(1 個資料列受到影響)

*/

select datalength(@char)

/*

-----------

10

(1 個資料列受到影響)

*/

1.1.2unicode类型

declare @char nchar(10)

set @char='tsql'

select len(@char)

/*

-----------

4

(1 個資料列受到影響)

*/

select datalength(@char)

/*

-----------

20

(1 個資料列受到影響)

*/

注意:从上面可以看出unicode都是以双字节存储

1.2可变长度

1.2.1unicode类型

declare @char varchar(10)

set @char='tsql'

select len(@char)

/*

-----------

5

(1 個資料列受到影響)

*/

select datalength(@char)

/*

-----------

6

(1 個資料列受到影響)

*/

注:以上可以发现汉字占2个字节,英文占1个字节

1.2.2unicode类型

declare @char nvarchar(10)

set @char='tsql'

select len(@char)

/*

-----------

5

(1 個資料列受到影響)

*/

select datalength(@char)

/*

-----------

10

(1 個資料列受到影響)

*/

注:以上可以发现不管是汉字还是英文都占2字节

2:数值型

按照不同的精确程度,可分为精确型与近似型

2.1精确型

declare @b bit,@t tinyint,@s smallint,@i int,

@bi bigint,@n numeric(18,2),@d decimal(18,2)

select @b=999,@t=255,@s=999,@i=999,@bi=999,@n=999,@n=999

select @b,@t,@s

select @i,@bi,@n,@n

具體范围查看联机帮助

2.1近似型

Real

Float

具體范围查看联机帮助

3:日期

Datetime

Smalldatetime

具體范围查看联机帮助

3.1常用日期输入格式

3.1.1英文+数字格式

在这种格式中月份可以是全名或者缩写,且不分大小写,且年份与月日之间不用逗号隔开,年份可以为4位或者2,如果使用2位若其值小50则视为20XX,如果大于50则视为19XX .

set language us_english

go

declare @dt datetime

set @dt='June 29 2008' --2008年月日

set @dt='June 29 08' --2008年月日

set @dt='June 29 99' --1999年月日

set @dt='2006 June 03' --2006年月日

select @dt

go

set language 繁體中文

3.1.2数字+分割符格式:允许把斜杠(/),连字符(-),小数点(.)作为用数字表示的年月日之间的分割符

declare @dt datetime

set @dt='2008/7/17' --2008年月日

set dateformat dmy

set @dt='3.5/2000' --2000年月日

set dateformat mdy

set @dt='3/5-2000' --2000年月日

select @dt

同时可以混合使用这些符号.如上,但是不提倡.

3.2常用时间输入格式

时间格式输入是固定的必须按照 小时:分钟:.毫秒

declare @dt datetime

set @dt='11:23:24.25'

set @dt='11:23:24.25AM' --12小時制AM上午

set @dt='11:23:24.25PM' --12小時制AM下午

select @dt

3.3设置系统的日期输入格式

系统默认的输入格式为M D Y 分表表示 --

具体看3.2.2示例

4:货币型

货币型是用来存储货币值数据,精确到小数点后面4,可以认为是numric(m,n)特列,smallmoney,money型数据在MSSQL中与bigint ,int有相同的存储格式

因此也可以归为整数型数据类型。

declare @money money

set @money=$123.45677

select @money

/*

---------------------

123.4568

*/

由上面可以看出只能精确到小数点后4,如果精度还不够只能用decimal()

Numeric()

5:二进制型

 Binary(n) 固定長度

 Varbinary(n) 可變長度

 Image

6:其它类型

6.1 sql_variant 通用数据类型 可以代表出了text,ntext,timestamp他和他自身以外的所有类型

declare @sql_variant sql_variant

set @sql_variant=123

set @sql_variant='147258'

set @sql_variant=0XFFFF

--以下表示sql_variant不能代替text ntext...

declare @t table(test ntext)

insert @t select 'abc'

select @sql_variant=test from @t

/*

訊息206,層級16,狀態2,行7

運算元類型衝突: ntext sql_variant 不相容

*/

6.2 timestamp

时间戳类型 每次更新时候会自动该类型的数据,通常证明某一项活动是在某一时刻完成的。可以用@@dbts返回当前时间戳

select @@dbts

/*

------------------

0x0000000000001770

(1 個資料列受到影響)

*/

6.3 uniqueidentitier 全球唯一标识 可以用 newid()返回

select newid()

/*

------------------------------------

0597B18D-0D06-43A2-91CE-436C83B6B348

(1 個資料列受到影響)

*/

6.4 XML 该类型具有其他类型的所有功能还可以添加子树,删除子树,更新标量值得等。后续会讲到。

7:自定义类型

create type SN

from varchar(10) not null

--varchar(10) not null SN等價

go

create table test(name sn)

go

insert test select 10

drop table test

drop type sn

 

 

你可能感兴趣的:(sql,table,BI,存储,语言,TSQL)