最新要闻
- 上海一特斯拉再现失控事故:成道路护栏“终结者”
- 全球实时:插混和增程路线谁更好?院士欧阳明高给出答案
- 上海中环内圈发生单车事故 官方通报:车辆起火翻滚地面 驾驶员死亡
- 全球新资讯:ChatGPT大火 马斯克批OpenAI违背初心:被微软控制 只顾赚钱
- 贵南高铁全线静态验收:时速350公里 南宁到贵阳时间缩短一半
- 世界观热点:蹲夜叉还有意外收获?变异蝴蝶直接就往脸上刷啊!
- 今日热讯:暴雪宣布《暗黑4》新雕像
- 43年的友情!马云低调现身墨尔本 与昔日好友相见
- 每日视点!男子将比亚迪海豚改装称房车:车内洗澡、看电影、吃火锅
- 精选!特斯拉前脸被完全撞烂 气囊没弹!车主:可以去维权吗?
- 当前聚焦:《地下城与勇士》大面积更改名称、美术素材 玩家喊话中消协:退钱
- 环球通讯!特斯拉创始人:自动驾驶是胡扯 汽车不应像iPhone
- 【天天新要闻】AMD、NV把显卡卖到万元 Intel成救星:下代能冲RTX 4080
- 手机预置软件影响用户体验 央媒揭秘幕后原因:厂商利益驱动
- 全球视点!苹果上新348元省电保护膜!网友:觉得贵的不是目标客户
- 如果我种一个橄榄核,它会长成一棵树吗?
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
【世界快播报】(数据库系统概论|王珊)第五章数据库完整性-第四、六、七节:约束命名子句、断言和触发器
- pdf下载:密码7281
- 专栏目录首页:【专栏必读】(考研复试)数据库系统概论第五版(王珊)专栏学习笔记目录导航及课后习题答案详解
一:完整性约束命名子句(CONSTRAINT)
SQL中还提供了完整性约束命名子句CONSTRAINT
用来对完整性约束条件进行命名,从而可以灵活地增加、删除一个完整性约束条件
- 还记得(数据库系统概论|王珊)第三章关系数据库标准语言SQL-第二、三节:数据定义这一节讲到修改基本表中,有些选项便是关于约束条件的,命名后后续修改时直接使用名字即可
(1)完整性约束命名子句
语法
(资料图片)
演示
例如, 建立学生登记表Student
,要求学号在90000~99999之间,姓名不能取空值,年龄小于30,性别只能是“男”或“女”
CREATE TABLE Student(Sno NUMERIC(6) CONSTRAINT C1 CHECK(Sno BETWEEN 90000 AND 99999),Sname CHAR(20) CONSTRAINT C2 NOT NULL,Sage NUMERIC(3) CONSTRAINT C3 CHECK(Sage < 30),Ssex CHAR (2) CONSTRAINT C4 CHECK(Ssex IN ("男","女")),CONSTRAINT StudentKey PRIMARY KEY(Sno));
- 因此在
Student
表上建立了StudentKey、C1、C2、C3、C4这5个约束条件
例如,建立教师表Teacher
,要求每个教师的应发工资不低于3000元。应发工资是工资列Sal
与扣除项Deduct
之和
CREATE TABLE Teahcer(Tno NUMERIC(4) PRIMARY KEY,TName CHAR(10),TSal NUMERIC(7,2),TDeduct NUMERIC(7,2),TDeptno NUMERIC(2),CONSTRAINT TeacherKey FOREIGN KEY(Tdeptno) REFERENCES DEPT(TDeptno),CONSTRAINT C1 CHECK(TSal+TDeduct >= 3000));
- 因此在
Teacher
表上建立了TeacherKey、C1这2个约束条件
(2)修改表中的完整性限制
语法:这一点,我们在(数据库系统概论|王珊)第三章关系数据库标准语言SQL-第二、三节:数据定义这一节中讲到过
ADD
:用于增加新列,新的列级完整性约束条件和新的表级完整性约束条件DROP COLUMN
:用于删除表中的列DROP CONSTRAINT
:用于删除指定的完整性约束条件ALTER COLUMN
:用于修改原有的列定义
演示
例如,去除Student
表中对性别的限制
ALTER TABLE StudentDROP CONSTRAINT C4;
例如, 修改Student
表中的约束条件,要求学号改为在0~100之间,年龄由小于30改为小于40
- 策略就是先删除再增加
ALTER TABLE Student DROP CONSTRAINT C1;ALTER TABLE Student ADD CONSTRAINT C1 CHECK(Sno BETWEEN 0 AND 100);ALTER TABLE Student DROP CONSTRAINT C3;ALTER TABLE Student ADD CONSTRAINT C3 CHECK(Sage < 40);
二:断言(ASSERTION)
- 在高级语言,例如C++、JAVA中就在经常使用断言
assert
,所以它的作用大家应该比较熟悉
在SQL中通过声明性断言可以指定更具一般性的约束(例如涉及多表、聚集操作等)。创建断言后,任何对断言中所涉及关系的操作都会触发DBMS对断言的检查,任何断言为FALSE
的操作都会被拒绝
(1)创建断言
语法:在SQL中,使用CREATE ASSERTION
语句来创建断言,格式如下
演示
例如,限制数据库课程最多60名学生选修
CREATE ASSERTION ASS_SC_DB_NUM CHECK(60 >= (SELECT count(*)FROM Cource,scWHERE sc.Cno=Course.Cno AND Course.Cname="数据库"));
例如,限制每一门课程最多60名学生选修
CREATE ASSERTION ASS_SC_CNUM CHECK(60 >=ALL(SELECT count(*)FROM SCGROUP BY Cno));
(2)删除断言
语法:
三:触发器(TRIGGER)
触发器(TRIGGER):是用户定义在关系表上的一类由事件驱动的特殊过程,在满足一定条件或达到一定阈值时会自动触发。可以进行更为复杂的检查和操作,具有更精细和更强大的数据控制能力
(1)定义触发器
触发器又叫做事件-条件-动作(event- condition-action)规则。当特定的系统事件(如对一个表的增、删、改操作,事务的结束等)发生时,对规则的条件进行检查,如果条件成立则执行规则中的动作,否则不执行该动作。规则中的动作体可以很复杂,可以涉及其他表和其他数据库对象,通常是一段SQL存储过程
- 就如同古老的VB语言就是一种以事件驱动为机制的语言,例如一些控件的
CLICK
(点击)事件等等
语法:SQL使用CREATE TRIGGER
语句定义触发器,其格式如下
- 只有表的创建者才可以在表上创建触发器,并且一个表上只能创建有限数量的触发器
- 触发器名:可以包含模式名,也可以不包含;同一模式下,触发器名必须是唯一的,并且触发器名和表名必须在同一模式下
- 表名:触发器只能定义在表上,不可在视图上。当基本表的数据发生变化时,将激活定义在该表上相应触发事件的触发器
- 触发事件:可以是INSERT、DELETE或UPDATE,也可以是它们的组合;同样也可以
UPDATE OF<列名,...,>
,也即进一步指明哪些列变化时需要激活触发器;AFTER/BEFORE
是触发时机 - 触发器类型:触发器按照所触发动作的间隔尺寸可以分为行级触发器(
FOR EACH ROW
)和语句级触发器(FOR EACH STATEMENT
);语句级会执行一次,行级执行的次数以表的具体行数而定 - 触发条件:触发器被激活时,只有当触发条件为真时触发动作体才执行,否则触发动作体不执行;如果省略WHEN触发条件,则触发动作体在触发器激活后立即执行
- 触发动作体:触发动作体既可以是一个匿名
PL/SQL
过程块,也可以是对已创建存储过程的调用。如果是行级触发器,用户可以在过程体中使用NEW
和OLD
引用UPDATE/INSERT
事件之后的新值和UPDATE/DELETE
事件之前的旧值;如果是语句级触发器,则不能在触发动作体中使用NEW
或OLD
进行引用。如果触发动作体执行失败,激活触发器的事件(即对数据库的增、删、改操作)就会终止执行,触发器的目标表或触发器可能影响的其他对象不发生任何变化
演示:
【例如】当对SC
表的Grade
属性进行修改时,若分数增加了10%,则将此次操作记录到另一个表SC_ U (Sno、Cno、 Oldgrade、 Newgrade)
中,其中Oldgrade
是修改前的分数,Newgrade
是修改后的分数
CREATE TRIGGER SC_T //触发器名字AFTER OF Grade ON SC //在对sc表的Grade更新后再触发REFERENCING OLDROW AS OldTuple NEWROW AS NewTupleFOR EACH ROW //行级触发器,也即每更新一次,下面规则就会执行一次WHEN (NewTuple.Grade >= 1.1*OldTuple.Grade) //触发条件为真才会执行INSERT INTO SC_U (Sno,Cno,OldGrade,NewGrade)VALUES(OldTuple.Sno,OldTuple.Cno,OldTuple.Grade,NewTuple.Grade)
- 在本例中
REFERENCING
指出引用的变量 - 如果触发事件是
UPDATE
操作并且有FOR EACH ROW
子句,则可以引用的变量有OLDROW
和NEWROW
,分别表示修改之前的元组和修改之后的元组 - 若没有
FOR EACH ROW
子句,则可以引用的变量有OLDTABLE
和NEW TABLE
,OLDTABLE
表示表中原来的内容,NEWTABLE
表示表中变化后的部分
【例如】将每次对Student
表的 插入操作所增加的学生个数记录到StudentInsertLog
中
CREATE TRIGGER Student_CountAFTER INSERT ON StudentREFERENCINGNEWTABLE AS DELTAFOR EACH STATEMENT //语句级INSERT INTO StudentInsertLog(Numbers)SELECT COUNT(*) FROM DELTA
DELTA
是一个关系名,其模式与Student
相同,包含的元组是INSERT
语句增加的元组
【例如】定义一个BEFORE
行级触发器,为教师表Teacher
定义完整性规则“教授的工资不得低于4000元,如果低于4000元,自动改为4000元
CREATE TRIGGER Insert_Or_Update_SalBEFORE INSERT OR UPDATE ON TeacherREFERENCING NEWROW AS NewTupleFOR EACH ROWBEGIN //这是一个PL/SQL过程快IF(NewTouple.Job="教授") AND (NewTouple.Sal < 4000)THEN NewTouple.Sal:=4000;END IFEND;
(2)激活触发器
触发器的执行是由触发器事件激活的,如果同一个表上有多个触发器,激活时会按照以下顺序执行
1. 执行该表上的BEFORE
触发器2. 激活触发器的SQL语句3. 执行该表上的AFTER
触发器
对于同一个表上的多个BEFORE(AFTER)
触发器,遵循“谁先创建谁先执行”的原则,即按照触发器创建的时间先后顺序执行
(3)删除触发器
语法:
-
【世界快播报】(数据库系统概论|王珊)第五章数据库完整性-第四、六、七节:约束命名子句、断言和触发器
pdf下载:密码7281专栏目录首页:【专栏必读】(考研复试)数据库系统概论第五版(王珊)专栏学习笔记目...
来源: 【世界快播报】(数据库系统概论|王珊)第五章数据库完整性-第四、六、七节:约束命名子句、断言和触发器
上海一特斯拉再现失控事故:成道路护栏“终结者”
全球实时:插混和增程路线谁更好?院士欧阳明高给出答案
上海中环内圈发生单车事故 官方通报:车辆起火翻滚地面 驾驶员死亡
每日速讯:F - 树状数组 2【GDUT_22级寒假训练专题五】
全球新资讯:ChatGPT大火 马斯克批OpenAI违背初心:被微软控制 只顾赚钱
贵南高铁全线静态验收:时速350公里 南宁到贵阳时间缩短一半
速看:05-python运算符
【全球聚看点】字节二面:10Wqps超高流量系统,如何设计?
全球快看:动态规划解决最值、有多少方案之类问题
[奶奶看了都会]ChatGPT接入企业微信成为聊天机器人
世界观热点:蹲夜叉还有意外收获?变异蝴蝶直接就往脸上刷啊!
今日热讯:暴雪宣布《暗黑4》新雕像
43年的友情!马云低调现身墨尔本 与昔日好友相见
每日视点!男子将比亚迪海豚改装称房车:车内洗澡、看电影、吃火锅
全球热点!仿豆瓣发布-编辑框自适应高度,自动滚动定位到焦点输入
今日热门!(数据库系统概论|王珊)第五章数据库完整性-第一、二、三节:数据库三大完整性
精选!特斯拉前脸被完全撞烂 气囊没弹!车主:可以去维权吗?
当前聚焦:《地下城与勇士》大面积更改名称、美术素材 玩家喊话中消协:退钱
环球通讯!特斯拉创始人:自动驾驶是胡扯 汽车不应像iPhone
【天天新要闻】AMD、NV把显卡卖到万元 Intel成救星:下代能冲RTX 4080
手机预置软件影响用户体验 央媒揭秘幕后原因:厂商利益驱动
全球视点!苹果上新348元省电保护膜!网友:觉得贵的不是目标客户
读Java实战(第二版)笔记14_CompletableFuture及反应式编程背后的概念
如果我种一个橄榄核,它会长成一棵树吗?
天天即时:全球第10 三星Galaxy S23 Ultra相机DXO等分140:不敌小米11 Ultra
《塞尔达传说:王国之泪》日本最新海报曝光:腐朽大师剑现身
讯息:《生化危机4:重制版》硬件要求出炉:开光追 A卡很受伤
仰望银河背后 吉利是真着急了
散片就是这么来的?男子腰缠155片CPU入境被海关查获
【全球热闻】SpringBoot中统一API返回格式的两种方式
焦点消息!C#两个特殊的集合类StringCollection与StringDictionary
每日聚焦:03-数据类型
快播:期末复习——虚拟内存
速讯:04-数据类型转换
当前报道:安卓机皇!三星Galaxy S23 Ultra下周首销:价格对标iPhone 14 Pro Max
环球热讯:蜜雪冰城门店没关音响扰民一宿 客服:门店整改 向周围居民送冰淇淋致歉
RTX 40系移动平台性能测试出炉:RTX 4080与RTX 4090差距极小
世界新消息丨日本新生儿数量首次跌破80万 创有统计以来最低值:789万老人还在打零工
全球快播:iPhone 14最高降1600元 苹果经销商贴本卖机:谁还买安卓?
九型性格系统_0型血女生的性格
世界快资讯丨首届中国非遗保护年会开幕 四川非遗项目精彩亮相
简讯:超过年限要报废!老人用高压锅炖肉脸部被重伤
女子网购奶粉4个月吃剩半罐退货:被店家吐槽似乞丐
官方称《狂飙》拍摄地拍照收费算勒索: “刀哥”回应不是我 行为不可取
头条焦点:伸展树(Splay)详解
当前简讯:期末复习——内存管理
报道:django连接ubuntu22下的mysql8
打造自己的ChatGPT:逐字打印的流式处理
从矩阵的谱半径到神经网络梯度消失
当前速读:女子厨房接水时速热水龙头突然爆炸冒白烟:爆炸声堪比雷响
【天天时快讯】特斯拉Model 3追尾公交1死1伤 事故已影响销售:网友关心刹车问题
全球快资讯丨女子屋内湿度表1年数值不变 好奇拆下检查后无语:还以为是坏的
世界时讯:【JS】Pug调用自定义JS函数
头条:Java正则匹配域名白名单
曾经很火但消失了的APP!网友第一个想到的是”腾讯微博“
环球即时:女子入住网红酒店发现床垫有尿渍:满房一股味
防AI越界!微软将出手:把必应聊天回复限制在5条以内
天天热文:全球最高安全标准 我国自研华龙一号技术:太平岭核电预计2025年投产发电
天天热资讯!挑战全网最土的“公主下午茶” 让人看饿:网友感慨羞辱多少爱装腔作势人
【新要闻】组合数学_第1章_排列与组合
每日消息!称霸意甲的非洲新一代神锋,奥斯梅恩正在征服足坛
让NV对30系显卡降价不可能!厂商清仓RTX 3080:2年后价格重回首发价
全球观速讯丨《文明6》已玩腻 等了7年的《文明7》官宣:主管大换血
环球关注:tui.editor一款功能强大的markdown编辑器
热消息:关于python中将字典的所有key组成一个列表的方式
【环球报资讯】Cesium CallbackProperty(十五)
【世界独家】全天候显示能掉多少电?iOS 16.4告诉你
环球观速讯丨公司回应要求员工扫厕所:这是福利 每月有几十元奖励
焦点日报:冲击40亿有望!《流浪地球2》累计票房已超38亿
女子情人节翻垃圾桶捡到金链:最后被前主人要回 网友热议
全球速读:【算法训练营day48】LeetCode198. 打家劫舍 LeetCode213. 打家劫舍II LeetCode337. 打家劫舍III
GitHub 入门 与 2023年2月18日10:29:02
观天下!假的!马斯克否认修改算法推荐自己帐号 将追责说谎员工
环球微动态丨颠覆性创新 潍柴全球首发大功率SOFC燃料电池:研发花了20亿
环球新资讯:学习笔记——尚好房项目的数据库建表文件
VirtualBox 配置虚拟机 Host-only 和 Nat
世界百事通!win系统提示请插入多卷集的最后一张磁盘解决方法
第三章 计算机进行小数运算时出错的原因
全球聚焦:北江纺织:拟冲刺上交所IPO上市,预计募资4.22亿元,近年综合毛利率逐年下降
【环球速看料】五菱会玩!城市玩乐潮品SUV悦也“小书包”是块屏:可自定义内容
天天看点:打造名族品牌!杨元庆:联想核心生产制造还是立足中国
天天快播:[数据结构] AVL树
全球头条:超越GPS主导国内导航定位 北斗日定位量超3000亿次
焦点简讯:努比亚Z50 Ultra保护壳泄漏:后置摄像模组巨大无比
全球快看:院士称我国已经具备ChatGPT算力基础 关键在如何爆发
全球新消息丨工作至死:日本789万老人还在打零工
资讯:菲律宾一飞机早上起飞后失联:近期第二起
(数据库系统概论|王珊)第四章数据库安全性:习题
快播:橙色奶油冰淇淋层蛋糕食谱
世界要闻:精装版吉利星越L?领克DX11最新谍照曝光:首上魅族车机
天天消息!秒美国资费!每月198 还能更便宜:我国千兆宽带将全面普及 第二批城市名单来了
焦点报道:java便捷的word导出工具(officejj)
当前观点:关于 The River All Red (Tr.许渊冲) 的一点感想
高尔夫美女参战《蚁人3》
网友曝光《狂飙》拍摄地有人竖牌“拍视频5元1次”:官方回应来了
天天精选!三亚去世侏儒抹香鲸被解剖:胃内有大量塑料/线虫 导致无法进食
4.打包子应用 投票
环球今日讯!极兔一面:10亿级ES海量搜索狂飙10倍,该怎么办?
一文让你彻底了解ChatGPT