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;

你可能感兴趣的:(mysql,数据库)