您好,欢迎来到帮我找美食网。
搜索
您的当前位置:首页北邮数据库实验三——关系数据库的高级SQL练习

北邮数据库实验三——关系数据库的高级SQL练习

来源:帮我找美食网
北京邮电大学

实验报告

班级姓名学号

课程名称数据库

关系数据库的高级SQL练习

指导老师 成绩_________

实验名称

年月日

实验三

.1. 实验目的

结合数据库系统原理教学的理论知识,通过实验让学生熟悉高级SQL的用法,掌握SQL语言的数据定义,触发器等高级功能。

.2. 实验内容

在IBM DB2 v8.1 数据库管理系统中创建自己的数据库模式、表、视图等数据库对象;

练习数据库触发器的定义和使用。

.3. 实验环境

普通PC、Windows系列操作系统、IBM DB2 v8.1 数据库管理系统

.4. 实验步骤、结果与分析

使用触发器提供账户透支保护

一个银行客户有一个储蓄账户和一个支票账户。当客户从支票账户中取款的金额超过支票账户的余额时,如果储蓄账户的余额能够抵消产生的透支,则发生一次自动转账,即自动从客户的储蓄账户将透支的金额转账到支票账户;否则,拒绝该操作。

列名 SSN Name SavingBalance CheckingBalance

数据类型 Varchar(18) Varchar(20) Decimal(7,2) Decimal(7,2) 是否空 NO NO NO NO 其它 非负数 非负数 要求:在DB2命令行处理器中,用SQL完成如下操作: 创建数据库BNKDB

db2create database bnkdb

连接到数据库BNKDB

db2connect to bnkdb user db2admin using rjxy

创建表ACCT

db2create table acct(ssnvarchar(18) not nullprimary key,

namevarchar(20) not null , savingbalance

decimal(7,2)

not

null,

checkingbalancedecimal(7,2) not null

向表中插入两条记录

(‘111111111111111111’,’张三’,1500.00,1000.00) (‘222222222222222222’,’李四’,500.00,4000.00)

insert into acct values(‘111111111111111111’,’张三’,1500.00,1000.00) insert into acct values(‘222222222222222222’,’李四’,500.00,4000.00)

触发器创建完成后,执行测试语句:

Update acct set checkingbalance=-500

wheressn=’111111111111111111’; Update acct set checkingbalance=-1000

wheressn=’222222222222222222’;

在控制中心中,创建触发器OVERDRAFT,在对ACCT表的CHECKINGBALANCE字段执行UPDATE操作之前激活触发器完成自动转账。要求保存创建触发器的SQL语句。

参考触发条件:

NEWROW.CHECKINGBALANCE<0 参考触发器内容为: Declare overage decimal(7,2);

Set overage=(NEWROW.CHECKINGBALANCE*(-1)); If overage > OLDROW.SAVINGBALANCE then

SIGNAL SQLSTATE ‘70001’(‘Overdraft Protection Unsuccessful’);

Else

set NEWROW.SAVINGBALANCE = OLDROW.SAVINGBALANCE-overage,

NEWROW.CHECKINGBALANCE=0; End if;

补充:SIGNAL语句的用法

SIGNAL语句可以回滚触发事件和触发器造成的变化,并返回SQLCODE。如, SIGNAL SQLSTATE ‘70001’(‘Overdraft Protection Unsuccessful’);

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- banwoyixia.com 版权所有 湘ICP备2023022004号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务