4.SQL数据库完整性约束的操作

本篇文章旨在帮助大家熟练掌握SQL数据库完整性约束的操作,加深大家对SQL数据库完整性约束的理解.

参考表格属性

在这里插入图片描述
在这里插入图片描述

创建表的时候设置完整性约束

参考代码

USE 创表完整性
CREATE TABLE 客户
(客户号 char(8) CONSTRAINT KH_NO PRIMARY KEY CHECK(客户号 like '[a-z]%'),
 客户名称 Varchar(40) NOT NULL,
 联系人 char(8) ,
 地址 Varchar(40),
 邮政编码 char(6) CHECK (邮政编码 LIKE '[0-9][0-9][0-9][0-9][0-9][0-9]'),
 电话 char(12)CHECK (电话 LIKE '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'))
CREATE TABLE 产品
(产品号 char(8) CONSTRAINT CP_NO PRIMARY KEY CHECK(产品号 LIKE '[a-z][a-z]%'),
 产品名称 Varchar(40) UNIQUE,
 规格说明 char(40) ,
 单价 smallmoney CHECK(单价>0)
)
CREATE TABLE 订购单
(客户号 char(8) CONSTRAINT DGKH_NO REFERENCES 客户(客户号) NOT NULL,
 订单号 char(8) CONSTRAINT DG_NO PRIMARY KEY,
 订购日期  datetime DEFAULT GETDATE()
)
 CREATE TABLE 订单明细
(
 订单号 char(8) CONSTRAINT DDMXDD_NO REFERENCES 订购单(订单号) ,
 序号 tinyint ,
 产品号 char(8) CONSTRAINT DDMXCP_NO REFERENCES 产品(产品号) NOT NULL,
 数量 smallint CHECK(数量>0 AND 数量<=1000),
 PRIMARY KEY(订单号,序号)
)

创建完表以后添加完整性约束

1.先创建简单表


CREATE TABLE 客户
(客户号 char(8) ,
 客户名称 Varchar(40),
 联系人 char(8) ,
 地址 Varchar(40),
 邮政编码 char(6) ,
 电话 char(12))
 
CREATE TABLE 产品
(产品号 char(8),
 产品名称 Varchar(40),
 规格说明 char(40) ,
 单价 smallmoney 
)

CREATE TABLE 订购单
(客户号 char(8) ,
 订单号 char(8),
 订购日期  datetime 
)


 CREATE TABLE 订单明细
(
 订单号 char(8)  ,
 序号 tinyint ,
 产品号 char(8)  ,
 数量 smallint ,
)

2.追加表一的约束

USE 添加完整性
ALTER TABLE 客户
ALTER COLUMN 客户号 char(8) NOT NULL
USE 添加完整性
ALTER TABLE 客户
ADD
CONSTRAINT KH_NO1 PRIMARY KEY(客户号),
CONSTRAINT KH_NO2 CHECK(客户号 like '[a-z]%'),
CONSTRAINT KH_YB CHECK (邮政编码 LIKE '[0-9][0-9][0-9][0-9][0-9][0-9]'),
CONSTRAINT KH_DH CHECK (电话 LIKE '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]')

3.追加表二的约束

USE 添加完整性
ALTER TABLE 产品
ALTER COLUMN 产品号 char(8) NOT NULL
USE 添加完整性
ALTER TABLE 产品
ADD
CONSTRAINT CP_NO1 PRIMARY KEY (产品号),
CONSTRAINT CP_NO2 CHECK(产品号 LIKE '[a-z][a-z]%'),
CONSTRAINT CP_CPMC UNIQUE(产品名称),
CONSTRAINT CP_DJ CHECK(单价>0)

4.追加表三的约束

USE 添加完整性
ALTER TABLE 订购单
ALTER COLUMN 客户号 char(8) NOT NULL
USE 添加完整性
ALTER TABLE 订购单
ALTER COLUMN 订单号 char(8) NOT NULL
USE 添加完整性
ALTER TABLE 订购单
ADD
CONSTRAINT DG_KHNO FOREIGN KEY (客户号)REFERENCES 客户(客户号),
CONSTRAINT DG_DDNO PRIMARY KEY(订单号),
CONSTRAINT DG_DGRQ DEFAULT GETDATE() FOR 订购日期

5.追加表四的约束

USE 添加完整性
ALTER TABLE 订单明细
ALTER COLUMN 订单号 char(8) NOT NULL
USE 添加完整性
ALTER TABLE 订单明细
ALTER COLUMN 序号 tinyint NOT NULL
USE 添加完整性
ALTER TABLE 订单明细
ALTER COLUMN 产品号 char(8) NOT NULL


USE 添加完整性
ALTER TABLE 订单明细
ADD 
CONSTRAINT DDMXDD_DDNO FOREIGN KEY (订单号)REFERENCES 订购单(订单号),
CONSTRAINT DDMXDD_CPNO FOREIGN KEY (产品号)REFERENCES 产品(产品号),
CONSTRAINT DDMXDD_NUM CHECK(数量>0 AND 数量 <=1000),
CONSTRAINT DDMXDD_LHZJ PRIMARY KEY(订单号,序号)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值