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

本文详细介绍了SQL中的各种数据类型,包括字符串型、数值型、日期型、货币型、二进制型以及其他类型,并通过示例展示了不同类型的具体使用方法。

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

1: 字符串型

1.1 固定长度

1.1.1 unicode 类型

declare @char char ( 10)

set @char= 'tsql'

select len ( @char)

/*

-----------

4

(1 個資料列受到影響 )

*/

select datalength ( @char)

/*

-----------

10

(1 個資料列受到影響 )

*/

1.1.2 unicode 类型

declare @char nchar ( 10)

set @char= 'tsql'

select len ( @char)

/*

-----------

4

(1 個資料列受到影響 )

*/

select datalength ( @char)

/*

-----------

20

(1 個資料列受到影響 )

*/

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

1.2 可变长度

1.2.1 unicode 类型

declare @char varchar ( 10)

set @char= 'tsql '

select len ( @char)

/*

-----------

5

(1 個資料列受到影響 )

*/

select datalength ( @char)

/*

-----------

6

(1 個資料列受到影響 )

*/

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

1.2.2 unicode 类型

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 则视为 20 XX , 如果大于 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

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值