sqlserver 进阶(六)使用补充

1、sqlserver 中基本数据类型

第一大类: 整数数据

bit:bit 数据类型代表 0,1 或 NULL, 就是表示 true,false. 占用 1byte.

int: 以 4 个字节来存储正负数. 可存储范围为:-2^31 至 2^31-1.

smallint: 以 2 个字节来存储正负数. 存储范围为:-2^15 至 2^15-1

tinyint: 是最小的整数类型, 仅用 1 字节, 范围:0 至此 ^8-1

第二大类: 精确数值数据

numeric: 表示的数字可以达到 38 位, 存储数据时所用的字节数目会随着使用权用位数的多少变化.

decimal: 和 numeric 差不多

第三大类: 近似浮点数值数据

float: 用 8 个字节来存储数据. 最多可为 53 位. 范围为:-1.79E+308 至 1.79E+308.

real: 位数为 24, 用 4 个字节, 数字范围:-3.04E+38 至 3.04E+38

第四大类: 日期时间数据

datatime: 表示时间范围可以表示从 1753/1/1 至 9999/12/31, 时间可以表示到 3.33/1000 秒. 使用 8 个字节.

smalldatetime: 表示时间范围可以表示从 1900/1/1 至 2079/12/31. 使用 4 个字节.

第五大类: 字符串数据

char: 长度是设定的, 最短为 1 字节, 最长为 8000 个字节. 不足的长度会用空白补上.

varchar: 长度也是设定的, 最短为 1 字节, 最长为 8000 个字节, 尾部的空白会去掉.

text: 长宽也是设定的, 最长可以存放 2G 的数据.

第六大类:Unincode 字符串数据

nchar: 长度是设定的, 最短为 1 字节, 最长为 4000 个字节. 不足的长度会用空白补上. 储存一个字符需要 2 个字节.

nvarchar: 长度是设定的, 最短为 1 字节, 最长为 4000 个字节. 尾部的空白会去掉. 储存一个字符需要 2 个字节.

ntext: 长度是设定的, 最短为 1 字节, 最长为 2G. 尾部的空白会去掉, 储存一个字符需要 2 个字节.

第七大类: 货币数据类型

money: 记录金额范围为:-92233720368577.5808 至 92233720368577.5807. 需要 8 个字节.

smallmoney: 记录金额范围为:-214748.3648 至 214748.36487. 需要 4 个字节.

第八大类: 标记数据

timestamp: 该数据类型在每一个表中是唯一的! 当表中的一个记录更改时, 该记录的 timestamp 字段会自动更新.

uniqueidentifier: 用于识别数据库里面许多个表的唯一一个记录.

第九大类: 二进制码字符串数据

binary: 固定长度的二进制码字符串字段, 最短为 1, 最长为 8000.

varbinary: 与 binary 差异为数据尾部是 00 时,varbinary 会将其去掉

image: 为可变长度的二进制码字符串, 最长 2G.

2、类型模糊的变量定义

-- 学生数据类型

Create type student (

    Stud_first_name    varchar(30),

    Stud_last_name     varchar(30),

    Stud_gender        char(1),

    Stud_address       ref(address)  scope tb_addr)

-- 地址类型

Create type address (

    addr_street        varchar(30),

    addr_city          varchar(20),

    addr_Province      varchar(20),

    addr_Postcode      varchar(6) )

-- 创建地址表

create talbe tb_addr (

    addr_id        bigint,

    addr_address    address)
3、用户定义类型也称之为别名类型,可以用如下方法创建。

-- 创建用户定义类型方法一:

CREATE TYPE SSN

FROM varchar(11) NOT NULL ;

-- 删除用户定义类型

drop type ssn;

-- 定义两个用户定义类型方法二:

exec sp_addtype iq, 'float', 'null'

exec sp_addtype shoesize, 'float','null'

-- 指定约束条件


create rule iq_range as @range between 1 and 200

create rule shoesize_range as @range between 1 and 20

-- 绑定约束类型

exec sp_bindrule 'iq_range','iq'

exec sp_bindrule 'shoesize_range','shoesize'

-- 删除用户定义类型

exec sp_droptype iq

exec sp_droptype shoesize