数据库复习⑧

2016年6月18日

21:23

Main Integrity Constraints 实体完整性约束

1.各种约束

Keys

Foreign-key 外键 引用完整性约束

Value-based constraints 值约束

Tuple-based constraints 元组约束

Assertions 断言

2.Key Constrains

Primary Key:

CREATE TABLE branch(

bname CHAR(15) PRIMARY KEY,

bcity CHAR(20),

assets INT);

or

CREATE TABLE depositor(

cname CHAR(15),

acct_no CHAR(5),

PRIMARY KEY(cname, acct_no));

Candidate Keys:

CREATE TABLE customer (

ssn CHAR(9) PRIMARY KEY,

cname CHAR(15),

address CHAR(30),

city CHAR(10),

UNIQUE (cname, address, city);

3.Attribute Constraints

4.Foreign Keys外键

主键、外键和索引的区别?

 
主键


外键


索引


定义:


唯一标识一条记录,不能有重复的,不允许为空


表的外键是另一表的主键, 外键可以有重复的, 可以是空值


该字段没有重复值,但可以有一个空值


作用:


用来保证数据完整性


用来和其他表建立联系用的


是提高查询排序的速度


个数:


主键只能有一个


一个表可以有多个外键


一个表可以有多个惟一索引

1、外键引用的是需要其它表的主键,或者候选键。

2、外键创建之后并不会自动创建索引,这个是有开发人员自己考虑在外键上建相关索引是否能获取到查询效率上的提升

3、默认的情况下如果在引用表插入不存在的外键值或者在主表删除了一个被引用的数据,数据库都会报错。

5.Global Constraint: Assertions 全局限制 断言

CREATE ASSERTION <name>

CHECK ( <condition> );

6.Trigger 触发器

语法:

DELIMITER |

CREATE TRIGGER `<databaseName>`.`<triggerName>`

< [ BEFORE | AFTER ] > < [ INSERT | UPDATE | DELETE ] >

ON [dbo]<tableName> //dbo代表该表的所有者

FOR EACH ROW

BEGIN

--do something

END |

触发器(trigger)是SQL server 提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作( insert,delete, update)时就会激活它执行。触发器经常用于加强数据的完整性约束和业务规则等。

DML触发器

当数据库中表中的数据发生变化时,包括insert,update,delete任意操作,如果我们对该表写了对应的DML触发器,那么该触发器自动执行。DML触发器的主要作用在于强制执行业 务规则,以及扩展Sql Server约束,默认值等。因为我们知道约束只能约束同一个表中的数据,而触发器中则可以执行任意Sql命令。

DDL触发器

它是Sql Server2005新增的触发器,主要用于审核与规范对数据库中表,触发器,视图等结构上的操作。比如在修改表,修改列,新增表,新增列等。它在数据库结构发生变化时执行,我们主要用它来记录数据库的修改过程,以及限制程序员对数据库的修改,比如不允许删除某些指定表等。

举例:

插入时:

create trigger tri_insert

on student

for insert

as

declare @student_idchar(10)

select @student_id=s.student_id from students

inner join insertedion s.student_id=i.student_id

if @student_id=‘0000000001‘

begin

raiserror(‘不能插入1的学号!‘,16,8)

rollbacktran

end

go

更新时:

create trigger tri_update

on student

for update

as

if update(student_id)

begin

raiserror(‘学号不能修改!‘,16,8)

rollbacktran

end

go

删除时:

create trigger tri_delete

on student

for delete

as

declare @student_idvarchar(10)

select @student_id=student_id from deleted

if @student_id=‘admin‘

begin

raiserror(‘错误‘,16,8)

rollbacktran

End

时间: 2024-07-31 21:22:25

数据库复习⑧的相关文章

数据库复习7——恢复

数据库复习 CH14 恢复 13.1 恢复的概念 数据库系统中恢复是指让数据库从发生某些"失败"后的不一致的状态恢复到正常的一致状态的行为,恢复的基础是冗余(物理上冗余,非逻辑上) 这些失败包括了: 事务失败:包括逻辑错误(事务不满足某些条件不能执行)和系统错误(DBMS强制终止事务,如事务发生死锁) 系统崩溃:断电.物理硬件损坏.软件系统(如OS)崩溃,本章假设系统崩溃不会改变非易失存储器 磁盘失败:磁盘存储发生错误,本章假设可利用检查和监测磁盘失败 大体上,恢复策略分成两个步骤:

数据库复习5——安全性

数据库复习 CH7 安全性 7.1 数据库安全性介绍 如果说完整性是针对授权用户的数据库保护措施,那么安全性就是针对非授权用户的数据库保护措施 安全性问题涉及的层面很多,非法用户可以从以下各层面对数据库的窃取或篡改: 层面 窃取或篡改行为 应对措施 数据库系统 获取高级用户数据库权限 身份验证,权限和可获取数据对等 操作系统 获取操作系统root权限想干啥就能干啥,不仅仅限于对数据库的操作了 提升操作系统安全级别 网络 通过网络窃听和身份伪装也能窃取线上机密数据 身份验证和加密传输 物理 物理上

数据库复习10——PL/SQL

数据库复习 CH10 PL/SQL 10.1 PL/SQL简介 PL/SQL是Oracle对SQL的过程化的扩展,PL/SQL可以实现SQL相关的过程化程序,并且能够以存储过程和函数的方式让一段SQL业务逻辑驻留在SQL服务器中,以便减少客户机计算任务并减少网络I/O 10.2 PL/SQL编程基础 (1)简介 PL/SQL编程框架为: DECLARE <Variable List> BEGIN <Extented SQL Execution> EXCEPTION <Exce

数据库复习6——事务

数据库复习 CH13 事务 13.1 事务的概念 事务是作为单个逻辑工作单元执行的一系列数据库操作,这些操作可能会修改多个表中的多个元组 事务正常执行的结构是: begin; SQL execution 1 SQL execution 2 ... SQL execution N commit; begin标志开始一个事务,多个SQL语句就是事务逻辑工作单元,commit(提交)是结束当前事务并提交事务内数据变更,让其生效 数据库一致性在事务上表现的比较特殊,具体来说:事务执行的过程中可以让数据库

数据库复习4——视图

数据库复习 CH6 视图 6.1 视图的概念 视图是从一个或多个表(或视图)导出的虚表,DBMS仅在数据字典中存放视图的定义,而视图的数据仍然实际存储于导出它的基表中 Tutorial D中定义视图的基本语句如下: VAR <view_name> VIEW (<relational_condition>) {<property_list>}; 那么视图有什么作用呢? 为hidden data提供安全性,即屏蔽某些不希望外界用户看到的机密数据 提供一种简写的方式,有了视图

数据库复习1——数据库体系结构和关系系统

数据库复习 CH2 数据库体系结构 2.1 数据库体系结构层次 数据库体系结构可以分成3个层次: 外部层次 概念层次 内部层次 外部层次是指每个用户用不同的高级语言来访问数据库所面对的接口,概念层次数据库信息的表示以及模的式定义(包括安全性和完整性约束等等),而内部层次就是的存储表示(非物理记录也非机器相关),数据库的设计需要保证这三个层次之间的独立性: 概念层和内部层之间物理数据的独立性 外部层和概念层之间逻辑数据的独立性 2.2 DBA和DBMS DBA(数据库管理员)必须很好的了解企业的数

数据库复习笔记(一)

为了解决冗余 这个地方一直有问题,不知道是什么原因?敲on primary老是出错 把数据库保存到某个磁盘的某个目录下的某个文件,下次可以用记事本打开这个.sql的文件,要运行则需要将这些内容拷贝到新建的 "新建查询"中 切换数据库using School 在特定的数据库中建表,注意有时需要人为的选择 都没有数据的脚本 生成数据库的脚本 生成表的脚本 在每一段的后面加一个go,是批处理的意思 这是什么意思? 若有重复的行则会自动去除,所以只会增加3行 修改数据类型的两种方法 先删除表,

数据库复习笔记(二)

update语句 备份的两种方法 1.把数据库脱机分离,然后拷贝出来 2 备份完之后需要还原才可以用备份的数据库 具体要做的时候再参考视频资料. 替换语句 即使表中的内容全部删掉,插入的时候还是继续编号 数据库复习笔记(二)

数据库复习2——SQL基础

数据库复习 CH4 SQL SQL(Structured Query Language,结构化查询语言)是通用的关系数据库系统操作语言,下面从几个方面来复习SQL基础 4.1 DDL SQL语句可根据其操作性质分成三类: DDL(Data Definition Language) DCL(Data Constraint Language) DML(Data Manipulation Language) DCL完成完整性和安全性的约束,也可以看作从属于DDL,下面介绍DCL除外的DDL部分SQL语

数据库复习11——关系模式与范式

数据库复习 CH11 关系模式与范式 11.1 关系模式的设计 数据库模式(Schema)是数据库中全体数据的逻辑结构和特征的描述,关系型数据库的模式又叫关系模式,我所理解的关系模式就是数据库中表结构的定义以及多张表之间的逻辑联系 关系模式的设计就是根据一个具体的应用,把现实世界中的关系用表的形式来表示的逻辑设计过程,不规范的关系模式设计会带来以下的问题: 数据冗余 更新异常 插入异常 删除异常 举ppt中例子说明四种问题,如下表中描述了老师信息(一个老师一个地址,可以教多门课,一门课只有一名老