ProOut VALUES('2006-3-3','002','00003',20) Go
徐人凤 共 26 页 第 26 页 5/19/2015 26 26
单元7(实施数据完整性)
1.根据你的理解,请在实训5_2的表1-4的备注栏中标出主键、外键。
表1 Customer(客户表)结构
列名 数据类是否允备注 型及长度 许为空 CusNo nvarcharNOT (3) NULL 客户编号 主键 CusNamnvarcharNOT e (10) NULL 客户姓名 Address nvarchar(20) NULL 地址 Tel nvarchar(20) NULL 联系电话
表2 Product(产品表)结构
列名 数据类是否允型及长度 许为空 备注 ProNo nvarcharNOT (5) NULL 产品编号 主键 ProNamnvarcharNOT e (20) NULL 产品名 Price DecimalNOT (8,2) NULL 单价 Stocks DecimalNOT (8,0) NULL 库存数量
表3 ProIn(入库表)结构
列名 数据类是否允备注 型及长度 许为空 InputDate DateTime NOT NULL 入库日期 ProNo NvarcharNOT 产品编号 外键 徐人凤
共 27 页 第 27 页
5/19/2015 27
27
(5) NULL Quantity DecimalNOT (6,0) NULL 入库数量
表4 ProOut(销售表)结构
列名 数据类是否允备注 型及长度 许为空 SaleDate DateTime NOT NULL 销售日期 CusNo nvarcharNOT (3) NULL 客户编号 外键 ProNo nvarchar NOT r(5) NULL 产品编号 外键 Quantity DecimalNOT (6,0) NULL 销售数量
--该题适用于创建表时没有创建主键、外键的情况 /* Customer表的主键为CusNo*/ ALTER TABLE Customer
ADD CONSTRAINT PK_Customer PRIMARY KEY (CusNo) GO
/* Product表的主键为ProNo*/ ALTER TABLE Product
ADD CONSTRAINT PK_Product PRIMARY KEY (ProNo) GO
/*外键:ProOut 表的ProNo*/
徐人凤
共 28 页 第 28 页
5/19/2015 28
28
ALTER TABLE ProOut
ADD CONSTRAINT FK_ProOut_Product FOREIGN KEY (ProNo)
REFERENCES Product (ProNo)
/*外键:ProOut 表的CusNo*/ ALTER TABLE ProOut
ADD CONSTRAINT FK_ProOut_Customer FOREIGN KEY (CusNo)
REFERENCES Customer(CusNo)
/*外键:ProIn 表的ProNo*/ ALTER TABLE ProIn
ADD CONSTRAINT FK_ProIn_Product FOREIGN KEY (ProNo)
REFERENCES Product(ProNo)
--3.约束客户表Customer的CusNo列值长度为3;产品表Product的ProNo列值长度为5。 ALTER TABLE Customer
ADD CONSTRAINT CK_Customer_CusNo CHECK (LEN(CusNo)=3)
徐人凤
共 29 页 第 29 页
5/19/2015 29
29
GO
ALTER TABLE Product
ADD CONSTRAINT CK_Product_ProNo CHECK (LEN(ProNo)=5) GO
--测试: INSERT INTO
Product VALUES('000071','平板电脑',3000.00,800) GO
--系统会自动截断为长度5位。 --测试: INSERT INTO
Product VALUES('009','DVD',3000.00,800) GO
4.对产品表Product的Stocks列、Price列、入库表ProIn的Quantity列、销售表ProOut的Quantity列值进行约束,使其值必须大于0。 ALTER TABLE Product
ADD CONSTRAINT CK_Product_Stocks CHECK (Stocks>0) GO
徐人凤
共 30 页 第 30 页
5/19/2015 30
30