代码改变世界

T-SQL

2015-07-07 19:12  F_Code  阅读(203)  评论(0编辑  收藏  举报

今天继续数据库知识的梳理。接下来的主要内容是T-SQL,针对的数据库是SQL Server 2008。

几个术语

  • 数据定义语言(DDL,Data Definition Language):用来建立数据库、数据库对象和定义其列,大部分是以CREATE开头的命令,如CREATE TABLE、CREATE VIEW 、DROP TABLE等。
  • 数据操纵语言(DML,Data Manipulation Language):用来操纵数据库中的数据的命令,如SELECT、INSERT、UPDATEE、DELETE、CURSOR等。
  • 数据控制语言(DCL,Data Control Language):用来控制数据库组件的存取许可、存取权限等的命令,如GRANT\REVOKE等。
  • 流程控制语言(Flow Control Language):用于设计应用程序的语句,如IF、WHILE、CASE等。

    SQL Server 数据类型

    Character 字符串:

    数据类型 描述 存储
    char(n) 固定长度的字符串。最多 8,000 个字符。 n
    varchar(n) 可变长度的字符串。最多 8,000 个字符。  
    varchar(max) 可变长度的字符串。最多 1,073,741,824 个字符。  
    text 可变长度的字符串。最多 2GB 字符数据。  

    Unicode 字符串:

    数据类型 描述 存储
    nchar(n) 固定长度的 Unicode 数据。最多 4,000 个字符。  
    nvarchar(n) 可变长度的 Unicode 数据。最多 4,000 个字符。  
    nvarchar(max) 可变长度的 Unicode 数据。最多 536,870,912 个字符。  
    ntext 可变长度的 Unicode 数据。最多 2GB 字符数据。  

    Binary 类型:

    数据类型 描述 存储
    bit 允许 0、1 或 NULL  
    binary(n) 固定长度的二进制数据。最多 8,000 字节。  
    varbinary(n) 可变长度的二进制数据。最多 8,000 字节。  
    varbinary(max) 可变长度的二进制数据。最多 2GB 字节。  
    image 可变长度的二进制数据。最多 2GB。  

    Number 类型:

    数据类型 描述 存储
    tinyint 允许从 0 到 255 的所有数字。 1 字节
    smallint 允许从 -32,768 到 32,767 的所有数字。 2 字节
    int 允许从 -2,147,483,648 到 2,147,483,647 的所有数字。 4 字节
    bigint 允许介于 -9,223,372,036,854,775,808 和 9,223,372,036,854,775,807 之间的所有数字。 8 字节
    decimal(p,s)

    固定精度和比例的数字。允许从 -10^38 +1 到 10^38 -1 之间的数字。

    p 参数指示可以存储的最大位数(小数点左侧和右侧)。p 必须是 1 到 38 之间的值。默认是 18。

    s 参数指示小数点右侧存储的最大位数。s 必须是 0 到 p 之间的值。默认是 0。

    5-17 字节
    numeric(p,s)

    固定精度和比例的数字。允许从 -10^38 +1 到 10^38 -1 之间的数字。

    p 参数指示可以存储的最大位数(小数点左侧和右侧)。p 必须是 1 到 38 之间的值。默认是 18。

    s 参数指示小数点右侧存储的最大位数。s 必须是 0 到 p 之间的值。默认是 0。

    5-17 字节
    smallmoney 介于 -214,748.3648 和 214,748.3647 之间的货币数据。 4 字节
    money 介于 -922,337,203,685,477.5808 和 922,337,203,685,477.5807 之间的货币数据。 8 字节
    float(n) 从 -1.79E + 308 到 1.79E + 308 的浮动精度数字数据。 参数 n 指示该字段保存 4 字节还是 8 字节。float(24) 保存 4 字节,而 float(53) 保存 8 字节。n 的默认值是 53。 4 或 8 字节
    real 从 -3.40E + 38 到 3.40E + 38 的浮动精度数字数据。 4 字节

    Date 类型:

    数据类型 描述 存储
    datetime 从 1753 年 1 月 1 日 到 9999 年 12 月 31 日,精度为 3.33 毫秒。 8 bytes
    datetime2 从 1753 年 1 月 1 日 到 9999 年 12 月 31 日,精度为 100 纳秒。 6-8 bytes
    smalldatetime 从 1900 年 1 月 1 日 到 2079 年 6 月 6 日,精度为 1 分钟。 4 bytes
    date 仅存储日期。从 0001 年 1 月 1 日 到 9999 年 12 月 31 日。 3 bytes
    time 仅存储时间。精度为 100 纳秒。 3-5 bytes
    datetimeoffset 与 datetime2 相同,外加时区偏移。 8-10 bytes
    timestamp 存储唯一的数字,每当创建或修改某行时,该数字会更新。timestamp 基于内部时钟,不对应真实时间。每个表只能有一个 timestamp 变量。  

    其他数据类型:

    数据类型 描述
    sql_variant 存储最多 8,000 字节不同数据类型的数据,除了 text、ntext 以及 timestamp。
    uniqueidentifier 存储全局标识符 (GUID)。
    xml 存储 XML 格式化数据。最多 2GB。
    cursor 存储对用于数据库操作的指针的引用。
    table 存储结果集,供稍后处理。