今天继续数据库知识的梳理。接下来的主要内容是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. Upcase 将edit1中的每个字符串改为首字母大写

      //将edit1中的每个字符串改为首字母大写 procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);begin    with ...

    2. UVa 131 - The Psychic Poker Player

      题目:手里有五张牌,桌上有一堆牌(五张).你能够弃掉手中的k张牌,然后从牌堆中取最上面的k个. 比較规则例如以下:(按优先级排序) 1.straight-flush:同花顺.牌面为T(10) - A, ...

    3. sphinx配置文件继承

      # # Minimal Sphinx configuration sample (clean, simple, functional) # source mysql { type = mysql #数 ...

    4. android131 360 01 闪屏页和主页面

      主界面: 软件升级流程: 清单文件: <?xml version="1.0" encoding="utf-8"?> <manifest xml ...

    5. 文件和目录之umask函数

      本篇博文内容摘自<UNIX环境高级编程>(第二版),仅作个人学习记录所用.关于本书可参考:http://www.apuebook.com/. umask函数为进程设置文件模式创建屏蔽字,并 ...

    6. 信号之sigpending函数

      sigpending函数返回信号集,其中的各个信号对于调用进程是阻塞的而不能递送,因而也一定是当前未决的.该信号集通过set参数返回.(这些信号是已经产生的信号,但因为信号屏蔽字中对其设置了屏蔽位,从 ...

    7. Helpers\Cookie

      Helpers\Cookie The Cookie helper has the following methods: Cookie::exists($key); Returns true or fa ...

    8. 使用VisualSVN Server搭建SVN服务器

      工具: TortoiseSVN-1.8.4.24972-x64-svn-1.8.5(客户端) LanguagePack_1.8.4.24972-x64-zh_CN.msi Setup-Subversi ...

    9. struts2 CRUD 入门 配置

      本文介绍struts2在eclipse下的配置,实现一个具有CRUD功能的图书管理系统. 1         开发环境配置 1.1           在Eclipse中配置Struts2 1.1.1 ...

    10. Web安全测试周末公开班计划5月24、25日开课,欢迎报名参加!

      Web安全测试周末公开班计划5月24.25日开课,欢迎报名参加! 课程大纲参考: http://gdtesting.com/product.php?id=107 报名咨询: 黎小姐 QQ:241448 ...