SQL语句(九)用户自定义完整性

1.用户自定义完整性

       SQL Server支持的用户自定义完整性主要有NOT NULL(不为空)、UNIQUE(唯一)、NULL(空)、CHECK(检查是否在某一范围之内)。

2.实例

1.定义NULL/NOT NULL约束
CREATE TABLE nation2(/*国家表*/
  nationkey INTEGER PRIMARY KEY,           /*国家编号*/
  name CHAR(25)NOT NULL,                   /*国家名称*/
  regionkey INTEGER REFERENCES region(regionkey),/*地区编号*/
  comment VARCHAR(152)NULL                 /*备注*/
);
2.定义属性的缺省值
定义零件基本表的制造厂的缺省值为,表示其他厂商
CREATE TABLE part2(/*零件基本表*/
  partkey INTEGER PRIMARY KEY,             /*零件编号*/
  name VARCHAR(100),                       /*零件名称*/
  mfgr CHAR(50)DEFAULT '0',                /*制造厂*/
  brand VARCHAR(50),                       /*品牌*/
  type VARCHAR(25),                        /*零件类型*/
  size INTEGER,                            /*尺寸*/
  container CHAR(10),                      /*包装*/
  retailprice REAL,                        /*零售价格*/
  comment VARCHAR (23)                     /*备注*/
);
3.定义属性UNIQUE约束
定义地区表的地区名称必须唯一的约束
CREATE TABLE region2(/*地区表*/
  regionkey INTEGER PRIMARY KEY,           /*地区编号*/
  name CHAR(25)UNIQUE,                     /*地区名称*/
  comment CHAR(152)                        /*备注*/
);
4.使用CHECK
使用CHECK定义订单表中某些属性应该满足的约束
CREATE TABLE orders2(/*订单表*/
   orderkey INTEGER PRIMARY KEY,/*订单编号*/
   custkey INTEGER,/*顾客编号*/
   
   /*订单状态有中,0表示尚未处理,1表示已经处理*/
   orderstatus CHAR(1)CHECK(orderstatus IN('0','1')),/*订单状态*/
   totalprice REAL,/*订单总金额*/
   orderdate DATE,/*订单日期*/
   
   /*订单优先级有三等,0表示最高,1次之,2表示最低*/
   orderpriority CHAR(15)CHECK (orderpriority IN('0','1','2')),/*订单优先级别*/
   clerk CHAR(15),/*记账员*/
   shippriority INTEGER ,/*运输优先级别*/
   comment VARCHAR(79),/*备注*/
  );
5.插入orders2中的一条记录,验证是否违反CHECK 约束
INSERT
INTO orders2
VALUES(1,2,'0',200,'2017-11-19','1','lllllll',2,'fast');

SELECT *
FROM orders2;

UPDATE orders2
SET orderpriority='3'
WHERE orderkey=1;

3.注意

       任何关系数据库系统都应该支持实体完整性和参照完整性,此外,不同关系数据库根据应用环境的不同,往往还需要一些特殊的条件,用户定义的完整性就是针对某一具体关系数据库的约束条件,它反映某一具体数据必须满足的语义要求,个人认为正是有了用户完整性,数据才会更加严谨,使用起来也会更加方便。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LiuHui*n

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值