数据库5关系数据库完整性实验
更新时间:2023-11-20 02:23:01 阅读量: 教育文库 文档下载
数据库系统原理 实验报告
实验名称:关系数据库完整性实验
任课教师:霍纬刚
学号:100341324
姓名:汪何媛
完成日期:2012.11.28
一、 实验目的
通过ORACLE的完整性,理解关系数据库的完整性
二、 实验内容与步骤
ORACLE环境中通过触发器可以定义为更复杂的完整性约束 例1:通过触发器产生主键值
create sequence ql minvalue 010341416;
create table student(sno number(9) primary key ,sname varchar2(20)); create or replace trigger add_student before insert on student for each row
begin
select ql.nextval into :new.sno from dual; end;
验证触发器:
SQL>insert into student (sname)values(‘刘辉’); SQL>insert into student (sname)values(‘刘俊波’);
例2:创建一个行级触发器,记录下给个用户对数据库的表进行数据操纵的次数 create or replace trigger audit_student after delete or insert or update on student for each row begin
if deleting then
update audit_student set del =del+1
where user_name=user and table_name='student'; end if;
if inserting then
update audit_student set ins=ins+1
where user_name=user and table_name='student'; end if;
if updating then
update audit_student set upd=upd+1;
where user_name =user and table_name='student'; end if ; end;
要求:1)定义基本表:
Audit_student(user_name,table_name,del,ins,upt) 2)输入元组,例“SCOTT”,“student”,0,0,0
3)以SCOTT身份登录,对student表进行增加删除和修改操作,之后查看audit_student表的内容变化。
例3、为教师表Teacher定义完整性规则:“职称(pos)为教授时其工资(sal)不得低于1000元,如果低于1000元,自动改为1000元”。 create or replace trigger update_sal
before insert or update of sal,pos on teacher for each row
when(new.pos='教授') begin
if :new.sal<1000 then :new.sal :=1000; end if;
end;
要求1)建立教师表Teacher。提示:必须包含pos,sal等属性; 2)输入必要的数据; 3 )定义上述触发器
4)更新职称为教授的元组的工资,按照大于1000和小于1000分别进行操作。 5)插入职称为教授的数据行,按照大于1000和小于1000分别进行操作。 6)理解并解释触发器定义的完整性约束。
三、 实验结果与结论
例1、 通过触发器产生主键值
SQLWKS> create sequence ql minvalue 010341416; 语句已处理。
SQLWKS> create table student(sno number(9) primary key,sname varchar2(20)); 语句已处理。
SQLWKS> create or replace trigger add_student 2> before insert on student 3> for each row 4> begin
5> select ql.nextval into:new.sno from dual; 6> end;
7> 语句已处理。
SQLWKS> insert into student(sname) values('汪何媛'); 处理了 1 行。
SQLWKS> insert into student(sname) values('刘明杭'); 处理了 1 行。
SQLWKS> insert into student(sname) values('李昕'); 处理了 1 行。
SQLWKS> insert into student(sname) values('刘俊'); 处理了 1 行。
SQLWKS> insert into student(sname) values('蒋帆'); 处理了 1 行。 验证触发器:
SQLWKS> select * from student 2>
SNO SNAME ---------- --------------------
10341416 汪何媛
10341417 10341418 10341419 10341420
刘明杭 李昕 刘俊 蒋帆
已选择5行。
例2、 创建一个行级触发器,记录下给个用户对数据库的表进行数据操纵的次数 定义基本表:
SQLWKS> create table audi_student(user_name varchar2(20) primary key,table_name varchar2(20),del number(9),ins number(9),upd number(9)); 语句已处理。
定义触发器:
SQLWKS> create or replace trigger audi_student 2> after delete or insert or update on student 3> for each row 4> begin
5> if deleting then
6> update audi_student set del=del+1
7> where user_name=user and table_name='student'; 8> end if;
9> if inserting then
10> update audi_student set ins=ins+1
11> where user_name=user and table_name='student'; 12> end if;
13> if updating then
14> update audi_student set upd=upd+1
15> where user_name=user and table_name='student'; 16> end if; 17> end; 18> 语句已处理。 验证触发器:
SQLWKS> select * from audi_student 2>
USER_NAME TABLE_NAME DEL INS UPD
-------------------- -------------------- ---------- ---------- ---------- 已选择0行。 输入元组:
SQLWKS> insert into audi_student values('SCOTT','student',0,0,0); 处理了 1 行。
SQLWKS> insert into audi_student values('Scott','汪何媛',0,0,0);
处理了 1 行。 显示:
SQLWKS> select * from audi_student 2>
USER_NAME TABLE_NAME DEL INS UPD
-------------------- -------------------- ---------- ---------- ----------
SCOTT student 0 0 0 Scott 汪何媛 0 0 0 已选择2行。 添加操作:
SQLWKS> insert into audi_student values('WHY','李昕',1,1,2); 处理了 1 行。
SQLWKS> select * from audi_student
2>
USER_NAME TABLE_NAME UPD
-------------------- -------------------- ---------- ---------- ----------
SCOTT student 0 Scott 汪何媛 0 WHY 李昕 2
已选择3行。
SQLWKS> insert into student(sname) values('凯莉') 2>
处理了 1 行。
SQLWKS> insert into student(sname) values('戴安娜') 2>
处理了 1 行。
SQLWKS> insert into student(sname) values('维多利亚') 2>
处理了 1 行。
SQLWKS> insert into student(sname) values('大卫') 2>
处理了 1 行。
SQLWKS> select * from student 2>
SNO SNAME ---------- --------------------
10341416 汪何媛 10341417 刘明杭 10341418 李昕 10341419 刘俊 10341420 蒋帆
DEL INS 0 0 0 0
1 1
正在阅读:
数据库5关系数据库完整性实验11-20
我家的猫作文800字07-08
学生日记:我爱春天10-29
2015-2016新人教版初中英语八年级英语上册全套期末复习题精选含03-19
X小学X学校落实双减五项管理—管理制度08-01
免费打印策划书10-15
思维训练题12-13
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 数据库
- 完整性
- 实验
- 关系
- “十三五”重点项目-分析测试中心项目可行性研究报告 - 图文
- 国美电器控股有限公司治理结构分析
- 浅析流量调节阀的选型设计
- 临床路径奖惩办法
- 2012.物理化学复习题
- 乙酸乙酯皂化反应动力学研究
- Excel理论练习题一
- 2013春西南大学数据库技术第一次作业 -
- 物流
- 斯大林的思想政治教育理论研究2修改
- 分解质因数的练习题
- 麦当劳和华莱士的世纪比拼 - 图文
- 北京化工大学仪器分析答案之光谱
- Gmail发不出去邮件也不能接收邮件的解决办法
- 《重点用能单位能源计量管理用表图》填写与说明
- 高校图书馆的未来发展
- 南充市防御雷电灾害管理办法
- 什么是同理心
- 自由への进撃 - 红莲之弓矢 - 自由之翼 - 进击的巨人OP - 歌词翻译 - 中日歌词
- Cobol基本语法