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