数据库基础-基本定义3

        本文章基于<njust-数据库基础-贾修一 >课件制作 主体部分由贾老师ppt构成

目录

第七章 约束和触发器

约束(constraint)

-外键

-维护引用完整性

-基于属性的check约束

-基于元组的check约束

-修改约束

-断言

-约束的比较

触发器(triggers)

-事件-条件-动作规则

视图

索引(index)


第七章 约束和触发器

约束(constraint)

  • 表示元素之间关系的表达式
  • 保存在数据库中,由dbms管理检查
  • 特定事件引发的主动元素

-外键

        定义:引用另一个关系的属性或属性组

        ps:可以自己引用自己 可以有null值

create table department
(    deptid integer primary key,
     name char(40) not null,
     foreign key headerid references salesman(emipd)
);

-维护引用完整性

        对被引用关系,有三种策略

                1⃣️默认的策略:拒绝违法更新

                2⃣️级联策略:随着其中一个表更新

                3⃣️置空值策略:空的地方设置为null

                语法:on {update/delete}{restrict/cascade/set null}

属性和元组上的约束

非空值约束:not null

-基于属性的check约束

custid int check(custid>0)

在元组建立时、update或者instert操作时被检查

-基于元组的check约束

(先检查基于属性,再检查基于元组)

-修改约束

//命名约束
gender int constraint noAndro check (gender in (0,1))
//drop约束
alter table moviestar drop constraint noAndro

-断言

        定义:一种sql逻辑表达式,且永真

        创建断言 create assertion<断言名>check(<条件>)

        删除断言 drop assertion<断言名>

-约束的比较


触发器(triggers)

  • 特定事件引发的主动元素
  • 比复杂的约束要更容易理解和实现

-事件-条件-动作规则

create trigger name time event
on table-name
referencing [old {row|table} as old-name]
            [new {new|table} as new-name]
for each row
when

//time:before/after
//event:delete/insert/update/update of column-list

一个触发器不能直接调用另一个触发器,但可以通过动作来“调用另一个触发器”

视图

  • 虚拟的关系
  • 不在数据库中进行存储,但可以对其进行查询,在某些情况可以修改视图

-视图的创建

        create view [owner] view-name as select-without-order-by

-视图的查询 和查询真实关系的语法相同

drop view viewname;
alter view viewname  as select

-可更新视图

        把对视图的更新转变为一个等价对基本表的更新

        select子句中的属性必须包含基表的所有属性,没有group by\聚集操作符\union\distinct

-视图中的替换触发器

        当视图上定义了一个触发器时,可以用instead of 代替before or after

        当一个时间唤醒触发器时,触发器的操作将会取代事件本身而被执行

索引(index)

  • 是一种能够提高对关系元组访问效率的数据结构
  • 可以是一颗二叉树上的键-值对
create index salesmanind on salesman(name)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值