今天继续数据库知识的梳理。接下来的主要内容是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. 网页标签图片如何保存&下载?

      最简单的方法就是鼠标右键,查看网页源代码,ctrl+f输入favicon.ico,一般网站都是这个

    2. java--静态的应用(工具类)

      ArrayTool.java文件 /** 静态的应用. 每一个应用程序中都有公行动的功能,可以将这些功能进行抽取,独立封装以便复用 由于ArrayTool中并没有封装特有数据,而且数组的每一个方法也没 ...

    3. ubuntu下查看文件md5

      终端输入md5sum --help: md5sum --help用法:md5sum [选项]... [文件]...显示或检查 MD5(128-bit) 校验和.若没有文件选项,或者文件处为" ...

    4. Flash 无法输入中文的修正方法

      在某些运行模式或运行时环境中,Flash 有一个 Bug,文本框与键盘的交互模式会无法输入中文(包括日文等带有输入法状态栏的输入模式),只要对 TextField 文本框实例的 FocusEvent. ...

    5. 逗号分隔字符串转换为一张表--解决查询in(逗号分隔字符串)出错问题

      CREATE PROCEDURE [dbo].[Pro_TEST] AS BEGIN ) ) SET @split=',' SET @c='025,023,014,015' )) ) BEGIN IN ...

    6. nonce和timestamp在Http安全协议中的作用

      前段时间给客户网站做新浪微博账号登录功能,对OAuth协议以及相关的一些安全协议做了一些研究,顺便就记录一下学习心得吧.在这里就不打算具体讲OAuth的协议流程了,而是针对OAuth请求头里的nonc ...

    7. [MODx] 6. Cache '!' with login package

      1. Install login package. 2. Create a Template called 'login': [[!Login? &loginResourceId=`13` / ...

    8. (转)如何在JavaScript与ActiveX之间传递数据3

      本文研究如何在JS等脚本语言与ActiveX控件之间通信,如何传递各种类型的参数,以及COM的IDispatch接口.使用类似的方法,可以推广到其他所有脚本型语言,如LUA,AutoCad等.本文将研 ...

    9. php开启新的进程或者线程

      开启线程: $php_cli_path = '/usr/bin/php';$dir_path = dirname(__FILE__)."/".'CheckTaskState.she ...

    10. 零门槛!ZBLibrary仿微信朋友圈自定义View,就是这么简单!

      传统方法是继承现有View再重写方法,这种方式缺点很多: 1.往往不能在xml编辑器中预览效果: 2.比较难实现预期效果,比如设置宽度为wrap_content,实际显示为match_parent等: ...