T-SQL 数据类型
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 |
Numeric 和 Decimal 是固定精度和比例的数据类型。
数值类型
类型 | 范围 |
---|---|
REAL | -3.40E+38 ~ 3.40E+38 |
FLOAT | -1.79E+308 ~ 1.79E+308 |
日期和时间类型
类型 | 范围 |
---|---|
DATETIME(3.3毫秒精度) | 1753年1月1日至9999年12月31日 |
SMALLDATETIME(1分钟精度) | 1900年1月1日至2079年6月6日 |
DATE(1天精度) | 1年1月1日至9999年12月31日 |
DATETIMEOFFSET(100纳秒精度) | 0001年1月1日至9999年12月31日 |
DATETIME2(100纳秒精度) | 0001年1月1日至9999年12月31日 |
TIME(100纳秒精度,引入于SQL Server 2008) | 00:00:00.0000000 至 23:59:59.9999999 |
字符字符串
序号 | 类型 | 描述 |
---|---|---|
1 | CHAR | 它是长度为8,000个字符的非Unicode定长字符数据。 |
2 | VARCHAR | 它是最大长度为8,000个字符的非Unicode可变长度数据。 |
3 | VARCHAR (MAX) | 它是最大长度为231个字符的非Unicode可变长度数据。 |
4 | TEXT | 它是一个范围为2,147,483,647个字符的非Unicode数据。 |
Unicode 字符串
序号 | 类型 | 描述 |
---|---|---|
1 | NCHAR | 它是具有最大范围为4,000个字符的定长数据。 |
2 | NVARCHAR | 它是具有最大范围为4,000个字符的可变长Unicode数据类型。 |
3 | NVARCHAR(MAX) | Nvarchar是一个引入于SQL Server 2005的长度可变、最大为230个字符的数据类型。 |
4 | NTEXT | Unicode数据,最大长度为1,073,741,823个字符,是变长的。 |
二进制字符串
序号 | 类型 | 描述 |
---|---|---|
1 | BINARY | 二进制是具有最大长度为8,000个字节的定长数据。 |
2 | VARBINARY | Varbinary二进制数据与长度为8,000字节一起使用。 |
3 | VARBINARY(MAX) | Varbinary(max)是一种二进制数据类型,其长度可变,最大为231字节(引入于SQL Server 2005)。 |
4 | IMAGE类型 | 在Image类型数据类型中,二进制数据是可变长度的,最大长度为2,147,483,647字节。 |
T-SQL 中使用的其他数据类型
- Timestamp – 它存储了大量数据库。每次更新行时都会更新它。
-
Sql_variant – 它存储了大多数SQL服务器的值,支持除ntext和timestamp数据类型之外的数据类型。
-
唯一标识符 – 当我们保存XML数据时,我们将XML实例存储在列中。
-
Table – 它保存一个结果集,以便稍后进行处理。
-
Cursor – Cursor是一个引用。
-
Hierarchy – 数据类型是可变长度的,用于表示层次结构中的位置。
T-SQL 流程控制关键字
它具有BEGIN和END、BREAK、CONTINUE、GOTO、IF-ELSE、WAITFOR、RETURN和WHILE关键字。
IF和ELSE允许条件执行。如果当前日期是周末日期,则批处理语句将打印“This is the weekend”,否则将打印“This is a 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在流程控制中生成语句块。