T-SQL数据类型
精华
小牛编辑
153浏览
2023-03-14
SQL Server 中的数据类型是一个属性,它生成对象的数据。每个变量、列和表达式都与 T-SQL 中的数据类型相关。创建表时将根据需要为基于列的表选择特定的数据类型。
SQL Server 有七大类,包括多种数据类型。
精确数字类型
类型 | 最小值 | 最大值 |
---|---|---|
Bigint | -9,223,372,036,854,775,808 | 9,223,372,036,854,775,807 |
Int | -2,147,483,648 | 2,147,483,647 |
Smallint | -32,768 | 32,767 |
Tinyint | 0 | 255 |
Bit | 0 | 1 |
Decimal | -10^38 +1 | 10^38 -1 |
Numeric | -10^38 +1 | 10^38 -1 |
Money | -922,337,203,685,477.5808 | +922,337,203,685,477.5807 |
small money | -214,748.3648 | +214,748.3647 |
数字和小数是固定精度和小数位数的数据类型。
数字类型
类型 | 值范围 | |
---|---|---|
实数 | -3.40E + 38 | -3.40E + 38 |
浮点数 | -1.79E + 308 | -1.79E + 308 |
日期和时间类型
类型 | 值范围 |
---|---|
datetime(3.3millisecondsaccuracy) | 1753 年 1 月 1 日至 9999 年 12 月 31 日 |
smalldatetime(1 分钟精度) | 1900 年 1 月 1 日至 2079 年 6 月 6 日 |
日期(1 天精度) | 9999 年 1 月 1 日至 12 月 31 日 |
datetimeoffset(100 纳秒精度) | 0001 年 1 月 1 日至 9999 年 12 月 31 日 |
datetime2(100 纳秒精度) | 0001 年 1 月 1 日至 9999 年 12 月 31 日 |
时间(SQL Server 2008 中引入的 100 纳秒精度) | 00:00:00.0000000 到 23:59:59.9999999 |
字符串
类型 | 描述 |
---|---|
Char | 非Unicode定长字符数据,长度为8000个字符。 |
varchar | 非Unicode 变长数据,最大8000 个字符。 |
Varchar (max) | 非Unicode变长数据,最大长度为231个字符。 |
text | 它是一个非Unicode 数据,范围为2,147,483,647 个字符。 |
Unicode字符串
类型 | 说明 |
---|---|
Nchar | 定长数据,最大范围为4000个字符。 |
nvarchar | 它是一种可变长度的Unicode 数据,最大长度为4,000 个字符。 |
Nvarchar(max) | Nvarchar 是 230 个字符的可变长度(在 SQL Server 2005 中引入)。 |
Ntext | 最大长度为 1,073,741,823 个字符,它是可变长度的。 |
二进制字符串
类型 | 说明 |
---|---|
Binary | Binary 是定长数据,最大长度为 8,000 字节。 |
Varbinary | Varbinary 二进制数据使用长度为 8,000 字节。 |
Varbinary(max) | Varbinary(max) 是可变长度的二进制数据,最大周期为 231 字节(在 SQL Server 2005 中引入)。 |
Image type | Image type数据类型中,可变长度的二进制数据,最大长度为2,147,483,647字节。 |
T-SQL中使用的其他数据类型
- Timestamp - 它存储了大量的数据库。每次更新一行时都会更新它。
- Sql_variant - 存储大多数SQL服务器的值,支持除ntext和timestamp数据类型之外的数据类型。
- Unique identifier —— 当它保存 XML 数据时,将 XML 实例存储在列中。
- Table - 它保存一段时间后处理的结果集。
- Cursor- 光标是一个参考。
- Hierarchy - 数据类型是可变长度的,用于表示层次结构中的位置。
T-SQL中流量控制的关键词
它有 BEGIN
和 END
、BREAK
、CONTINUE
、GOTO
、IF-ELSE
、WAITFOR
、RETURN
和 WHILE
关键字。IF
和 ELSE
允许条件执行。如果当前日期是周末日期,则批处理语句将打印“this is a weekend”,或者如果当前日期是工作日,则打印“this is a weekend weekday”。
注意:代码假定星期日是
@DATEFIRST
设置中一周的第一天。
IF DATEPART (DW, GETDATE ()) = 7 OR DATEPART (DW, GETDATE ()) = 1
PRINT 'This is the weekend.' /if GETDATE =7 then
ELSE
PRINT 'This is a weekday.' /otherwise
流程控制中的 BEGIN
和 END
生成语句块。