MySQL实验七 数据完整性

第1关:通过主索引设置实体完整性

本关任务:建立主索引可以保证数据的实体完整性。 即数据表的每行记录不与其他记录重复

 use library;
 #代码开始
 alter table book add primary key txm(txm) ;
 #代码结束
 insert into book(txm,sm) values("P0000001","苏东坡全集");

第2关:通过check设置域完整性

对于图书数据表book(已经建立并插入记录),对于价格字段sj设置约束sjgd,要求价格必须大于0且小于等于5000

 use library;
 #代码开始
 alter table book add constraint sjgd check (sj>0 and sj<=5000);
 #代码结束
 insert into book(txm,sm,sj) values("P0000099","四库全书一",8000);

第3关:设置借阅表和读者表的参照完整性

在借阅表和读者表设置参照完整性 当删除读者表的数据时,借阅表的相关记录一起删除 当修改读者表的读者证号时,借阅表的相关记录的读者证号一起被修改

 use library;
 #代码开始
 alter table borrow add constraint dzzh
 foreign key (dzzh) references reader(dzzh)
 on delete cascade on update cascade;
 #代码结束
delete from reader where dzzh="001";
update reader set dzzh="111" where dzzh="002";
select * from borrow;

第4关:设置借阅表和图书表的参照完整性

在借阅表和图书表设置参照完整性 当借阅表有某个条形码的记录,就不能删除图书表中相关的图书,也不能修改图书表中相关图书的条形码。

 use library
 #代码开始
 ALTER TABLE borrow ADD
 FOREIGN KEY (txm) REFERENCES book(txm) 
 ON DELETE RESTRICT ON UPDATE RESTRICT;
 #代码结束
 delete from book where txm="P0000001";

第5关:建立数据表并设置参照完整性

建立期刊qk数据表和期刊借阅qkjy数据表

在建立期刊借阅数据表时,与读者表建立关联。 当修改读者表的读者证号,借阅期刊表的相关会删除。当删除读者表的读者证号,借阅期刊表的相关记录会删除。 在建立期刊借阅数据表时,同时与期刊表建立关联。不允许修改和删除期刊数据表的相关数据。

use library;
#代码开始
CREATE TABLE qk (
  qktxm VARCHAR(10) PRIMARY KEY,
  qkmc VARCHAR(20) ,
  kh VARCHAR(10) ,
  jh VARCHAR(10) ,
  cbdw VARCHAR(20) ,
  jg DECIMAL(4,1) );
CREATE TABLE qkjy (
  dzzh TINYINT(3) UNSIGNED ZEROFILL,
  qktxm VARCHAR(10),
  jyrq DATE,
  hsrq DATE,
  FOREIGN KEY (dzzh) REFERENCES reader(dzzh) ON DELETE CASCADE ON UPDATE CASCADE,
  FOREIGN KEY (qktxm) REFERENCES qk(qktxm) ON DELETE RESTRICT ON UPDATE RESTRICT
) ;
#代码结束
show create table qkjy;

第6关:删除参照完整性

删除借阅数据表和图书数据表的外键,名字为borrow_ibfk_1

use library; 
#代码开始
ALTER TABLE borrow DROP FOREIGN KEY borrow_ibfk_1;
#代码结束
show create table borrow;

  • 8
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

howell(Python)

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

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

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

打赏作者

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

抵扣说明:

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

余额充值