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

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值