
上QQ阅读APP看书,第一时间看更新
4.8 实验指导——冰箱信息维护
本章详细介绍了通过约束来实现数据完整性的维护,结合本章内容,创建冰箱信息表和冰箱主人信息表并对其字段进行完整性分析,约束的创建和修改,要求如下。
创建冰箱信息表refrigerator,有字段rid、brand、model和owner。对其各个字段分析如下。
(1)rid字段数据类型为INT,有主键约束、非空约束和自增约束。
(2)brand字段数据类型为VARCHAR,有非空约束和默认值“海尔”。
(3)model字段数据类型为VARCHAR。
(4)owner字段数据类型为INT,有非空约束。
创建冰箱主人信息表owners,有字段oid、name、sex、age和phone,数据类型分别为INT、VARCHAR、VARCHAR、INT和VARCHAR。对其各个字段分析如下。
(1)oid字段有主键约束和非空约束。
(2)name字段有非空约束。
(3)sex字段有默认值“男”。
(4)age字段值为整数。
(5)phone字段有非空约束。
由于refrigerator表中的每一条冰箱记录都对应owners表中的一个冰箱拥有者,因此表refrigerator表中的owner字段需要与owners表中的oid对应。因此需要为refrigerator表设置外键约束。
实现上述操作,步骤如下。
(1)创建冰箱信息表refrigerator,有字段rid、brand、model和owner,并设置它们的约束,代码如下。
CREATE TABLE 'fruitshop'.'refrigerator' ( 'rid' INT NOT NULL AUTO_INCREMENT, 'brand' VARCHAR(45) NOT NULL DEFAULT '海尔', 'model' VARCHAR(45) NULL, 'owner' INT NULL, PRIMARY KEY ('rid'));
(2)创建冰箱主人信息表owners,有字段oid、name、sex、age和phone,并设置它们的约束,代码如下。
CREATE TABLE 'fruitshop'.'owners' ( 'oid' INT NOT NULL, 'name' VARCHAR(45) NOT NULL, 'sex' VARCHAR(45) NULL DEFAULT '男', 'age' INT UNSIGNED NULL, 'phone' VARCHAR(45) NOT NULL, PRIMARY KEY ('oid'));
(3)为refrigerator表设置外键约束,使owner字段对应owners表中的oid字段,代码如下。
ALTER TABLE 'fruitshop'.'refrigerator' ADD INDEX 'owner_idx' ('owner' ASC); ALTER TABLE 'fruitshop'.'refrigerator' ADD CONSTRAINT 'owner' FOREIGN KEY ('owner') REFERENCES 'fruitshop'.'owners' ('oid') ON DELETE NO ACTION ON UPDATE NO ACTION;