完整性约束 第三关和第四关

编程入门 行业动态 更新时间:2024-10-23 23:23:19

<a href=https://www.elefans.com/category/jswz/34/1763103.html style=完整性约束 第三关和第四关"/>

完整性约束 第三关和第四关

这里在补充之前第三关和第四关的解析其实在前面第二关的时候已经把所有的代码都掩饰了,只有聪明人才看地见

第3关:参照完整性约束


任务描述

本关任务:
1.订单拥有订单详情。订单表orders是主表,订单详情表lineitem是子表,外键是订单号orderid。为订单详情表lineitem定义外键orderid,通过外键参照订单表orders,并保证更新订单表时,订单详情表自动更新;只要某个订单在订单详情表中还存在记录时就拒绝删除对应的订单信息。
2.查看lineitem创建表的信息
####相关知识

为了完成本关任务,你需要掌握:参照完整性约束

语法

1.参照完整性约束通过外键实现。可以在创建表或修改表时定义一个外键声明。

定义外键的reference_definition语法格式如下:

REFERENCES 表名 [(列名 [(长度)] [ASC | DESC],...)]
[ON DELETE {RESTRICT | CASCADE | SET NULL | NO ACTION}]
[ON UPDATE {RESTRICT | CASCADE | SET NULL | NO ACTION}]
RESTRICT:当要删除或更新父表中被参照列上在外键中出现的值时,拒绝对父表的删除或更新操作。
CASCADE:从父表删除或更新行时自动删除或更新子表中匹配的行。
SET NULL:当从父表删除或更新行时,设置子表中与之对应的外键列为NULL。
NO ACTION:NO ACTION意味着不采取动作,就是如果有一个相关的外键值在被参考的表里,删除或更新父表中主要键值的企图不被允许,和RESTRICT一样。
SET DEFAULT:作用和SET NULL一样,只不过SET DEFAULT是指定子表中的外键列为默认值。
如果没有指定动作,两个参照动作就会默认地使用RESTRICT。

2.使用:"show create table 表名;"查看创建表的信息
####编程要求测试如下:

USE petstore;######### Begin #########
/*create table tmp(userid char (10)not null,fullname char(50) not null,phone char(11)not null ,primary key(userid)
);
desc tmp;
create table stock(shelfid char(10) not null,workerid char(10) not null ,productid char(50) not null,num int(8)not null,primary key(shelfid,productid)
);
desc stock;*/
/*create table checker(id char(10)not null,name char(50)not null,idcard char(18)not null unique,primary key(id)
);
desc checker;*/
#alter table orders foreign key(orderid) references lineitem(orderid);
#desc orders;##desc lineitem;
alter table lineitem add constraint lineitem_ibfk_1 foreign key (orderid)references orders(orderid)on update cascade;
show  create table lineitem;######### End ##########

很多东西还是要自己写哈!

 

第4关:Check


任务描述

本关任务:
1.为用户account表的性别sex列添加check约束,保证性别的值只能是男或女。
2.为订单详情lineitem表的订单号orderid列添加check约束,保证订单详情表中的订单号orderid列的值都来自订单orders表。
3.查看创建lineitem表的信息。
####相关知识

为了完成本关任务,你需要掌握:CHECK完整性约束

语法

1.CHECK完整性约束在创建表的时候定义。可以定义为列完整性约束,也可以定义为表完整性约束。
语法格式为:
CHECK(expr)
说明:expr是一个表达式,指定需要检查的条件,在更新表数据的时候,MySQL会检查更新后的数据行是否满足CHECK的条件。
2.使用:"alter table 表名 add check(...);"为表中的列添加check约束。
3.使用:"show create table 表名;"查看创建表的信息。

测试如下:

USE petstore;######### Begin #########
/*create table tmp(userid char (10)not null,fullname char(50) not null,phone char(11)not null ,primary key(userid)
);
desc tmp;
create table stock(shelfid char(10) not null,workerid char(10) not null ,productid char(50) not null,num int(8)not null,primary key(shelfid,productid)
);
desc stock;*/
/*create table checker(id char(10)not null,name char(50)not null,idcard char(18)not null unique,primary key(id)
);
desc checker;*/
#alter table orders foreign key(orderid) references lineitem(orderid);
#desc orders;##desc lineitem;
#alter table lineitem add constraint lineitem_ibfk_1 foreign key (orderid)references orders(orderid)on update cascade;
show  create table lineitem;

更多推荐

完整性约束 第三关和第四关

本文发布于:2024-03-23 18:18:08,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1741305.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:完整性   第三关

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!