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

2023-11-11 16:50

本文主要是介绍完整性约束 第三关和第四关,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

第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;

这篇关于完整性约束 第三关和第四关的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/391482

相关文章

SQL中的外键约束

外键约束用于表示两张表中的指标连接关系。外键约束的作用主要有以下三点: 1.确保子表中的某个字段(外键)只能引用父表中的有效记录2.主表中的列被删除时,子表中的关联列也会被删除3.主表中的列更新时,子表中的关联元素也会被更新 子表中的元素指向主表 以下是一个外键约束的实例展示

poj 3159 (spfa差分约束最短路) poj 1201

poj 3159: 题意: 每次给出b比a多不多于c个糖果,求n最多比1多多少个糖果。 解析: 差分约束。 这个博客讲差分约束讲的比较好: http://www.cnblogs.com/void/archive/2011/08/26/2153928.html 套个spfa。 代码: #include <iostream>#include <cstdio>#i

poj 3169 spfa 差分约束

题意: 给n只牛,这些牛有些关系。 ml个关系:fr 与 to 牛间的距离要小于等于 cost。 md个关系:fr 与 to 牛间的距离要大于等于 cost。 隐含关系: d[ i ] <= d[ i + 1 ] 解析: 用以上关系建图,求1-n间最短路即可。 新学了一种建图的方法。。。。。。 代码: #include <iostream>#include

POJ 1364差分约束

给出n个变量,m个约束公式 Sa + Sa+1 + .... + Sa+b < ki or > ki ,叫你判断是否存在着解满足这m组约束公式。 Sa + Sa+1   +   .+ Sa+b =  Sum[a+b] - Sum[a-1]  . 注意加入源点n+1 。 public class Main {public static void main(Strin

创建表时添加约束

查询表中的约束信息: SHOW KEYS FROM 表名; 示例: 创建depts表包含department_id该列为主键自动增长,department_name列不允许重复,location_id列不允许有空值。 create table depts(department_id int primary key auto_increment,department_name varcha

项目实战系列三: 家居购项目 第四部分

购物车 🌳购物车🍆显示购物车🍆更改商品数量🍆清空购物车&&删除商品 🌳生成订单 🌳购物车 需求分析 1.会员登陆后, 可以添加家居到购物车 2.完成购物车的设计和实现 3.每添加一个家居,购物车的数量+1, 并显示 程序框架图 1.新建src/com/zzw/furns/entity/CartItem.java, CartItem-家居项模型 /***

非空约束(Not Null)

修改表添加非空约束 使用DDL语句添加非空约束 ALTER TABLE 表名 MODIFY 列名 类型 NOT NULL; 示例: 向emp表中的salary添加非空约束。 alter table emp modify salary float(8,2) not NULL; 删除非空约束 使用DDL语句删除非空约束 ALTER TABLE 表名 MODIFY 列名 类型 NULL;

C语言深度剖析--不定期更新的第四弹

哈哈哈哈哈哈,今天一天两更! void关键字 void关键字不能用来定义变量,原因是void本身就被编译器解释为空类型,编译器强制地不允许定义变量 定义变量的本质是:开辟空间 而void 作为空类型,理论上不应该开辟空间(针对编译器而言),即使开辟了空间,也只是作为一个占位符看待(针对Linux来说) 所以,既然无法开辟空间,也无法作为正常变量使用,既然无法使用,干脆编译器不让它编译变

机器学习模型中的因果关系:引入单调约束

单调约束是使机器学习模型可行的关键,但它们仍未被广泛使用欢迎来到雲闪世界。 碳ausality 正在迅速成为每个数据科学家工具包中必不可少的组成部分。 这是有充分理由的。 事实上,因果模型在商业中具有很高的价值,因为它们为“假设”情景提供了更可靠的估计,特别是在用于做出影响业务结果的决策时。 在本文中,我将展示如何通过简单的更改(实际上添加一行代码)将传统的 ML 模型(如随机森林、L

javaweb-day01-3(XML 的 dtd 约束)

XML 的约束方式有两种:dtd 和 schema  DTD约束: Document Type Definition    文档类型定义、文档类型界定。 入门示例: book.xml : <?xml version="1.0" encoding="gb2312"?><!DOCTYPE 书架 SYSTEM "book.dtd"><书架><书><书名>J