今天继续数据库知识的梳理。接下来的主要内容是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 存储结果集,供稍后处理。
  • T-SQL的更多相关文章

    1. 最近帮客户实施的基于SQL Server AlwaysOn跨机房切换项目

      最近帮客户实施的基于SQL Server AlwaysOn跨机房切换项目 最近一个来自重庆的客户找到走起君,客户的业务是做移动互联网支付,是微信支付收单渠道合作伙伴,数据库里存储的是支付流水和交易流水 ...

    2. SQL Server 大数据搬迁之文件组备份还原实战

      一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 解决方案(Solution) 搬迁步骤(Procedure) 搬迁脚本(SQL Codes) ...

    3. Sql Server系列:分区表操作

      1. 分区表简介 分区表在逻辑上是一个表,而物理上是多个表.从用户角度来看,分区表和普通表是一样的.使用分区表的主要目的是为改善大型表以及具有多个访问模式的表的可伸缩性和可管理性. 分区表是把数据按设 ...

    4. SQL Server中的高可用性(2)----文件与文件组

          在谈到SQL Server的高可用性之前,我们首先要谈一谈单实例的高可用性.在单实例的高可用性中,不可忽略的就是文件和文件组的高可用性.SQL Server允许在某些文件损坏或离线的情况下,允 ...

    5. EntityFramework Core Raw SQL

      前言 本节我们来讲讲EF Core中的原始查询,目前在项目中对于简单的查询直接通过EF就可以解决,但是涉及到多表查询时为了一步到位就采用了原始查询的方式进行.下面我们一起来看看. EntityFram ...

    6. 从0开始搭建SQL Server AlwaysOn 第一篇(配置域控)

      从0开始搭建SQL Server AlwaysOn 第一篇(配置域控) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://www.cnb ...

    7. 从0开始搭建SQL Server AlwaysOn 第二篇(配置故障转移集群)

      从0开始搭建SQL Server AlwaysOn 第二篇(配置故障转移集群) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://www ...

    8. 从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

      从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://w ...

    9. 从0开始搭建SQL Server AlwaysOn 第四篇(配置异地机房节点)

      从0开始搭建SQL Server AlwaysOn 第四篇(配置异地机房节点) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://www ...

    10. SQL Server on Linux 理由浅析

      SQL Server on Linux 理由浅析 今天的爆炸性新闻<SQL Server on Linux>基本上在各大科技媒体上刷屏了 大家看到这个新闻都觉得非常震精,而美股,今天微软开 ...

    随机推荐

    1. DSC配置

      #配置Remote Desktop Services服务为 自启动,并运行 Configuration Myservice{ # A Configuration block can have zero ...

    2. 什么是IDOC,以及IDOC的步骤

      创建IDOC:   第一步:WE31 创建IDOC所包含的字段.   第二步:WE30 创建IDOC 把Segment分配给IDOC   第三步:WE81  创建信息类型   第四步:WE82   把 ...

    3. 数据库升级ora-04063 DBMS_REGISTRY has error

      在做Oracle数据库从11.2.0.1.0升级到11.2.0.2.8时,软件升级没有问题,实例升级没有问题,升级psu的时候. 执行@?/rdbms/admin/catbundle psu appl ...

    4. 0703-APP-Notification-statue-bar

      1.展示显示textTicker和仅仅有icon的两种情况:当參数showTicker为true时显示否则不显示 // In this sample, we'll use the same text ...

    5. percona-toolkit -1

      http://blog.chinaunix.net/uid/16844903/cid-165634-list-1.html

    6. N个数字中随机取m个数子,不重复

      <script> function rand_nums(min,max,count){ var arr = []; for(var i=min;i<max;i++){ arr.pus ...

    7. javascript关闭浏览器窗口

      var opened=window.open('about:blank','_self'); opened.close(); window.open 不被阻止 .open('_blank') 然后 t ...

    8. [Effective C++ --009]确定对象被使用前已先被初始化

      在确保对象在使用前已先被初始化这一条款的编码实践中,作者为我们总结了三条经验,它们分别是: ------------------------------------------------------ ...

    9. 在javascript中关于submit和button提交表单区别

      submit是button的一个特例,也是button的一种,它把提交这个动作自动集成了,submit和button,二者都以按钮的形式展现,看起来都是按钮,所不同的是type属性和处发响应的事件上. ...

    10. 探索高效jQuery的奥秘

      讨论jQuery和javascript性能的文章并不罕见.然而,本文我计划总结一些速度方面的技巧和我本人的一些建议,来提升你的jQuery和javascript代码.好的代码会带来速度的提升.快速渲染 ...