适合Oracle新手练手,Oracle老鸟温故而知新的一套题目!

295 阅读5分钟

学习有一段时间Oracle,今天发一个关于Oracle数据库的练习题。觉得不错,今天分享给大家。大家检测下自己Oracle水平。题目内容比较全面,适合初学者练习,或者是老手温故而知新。答案近期发给大家!

  • ATM机的需求,注意本例主要是用来锻炼和强化oracle水平,强调的是一个在oracle中使用存储过程,触发器,函数设计和实现功能,而不是一个界面程序的开发。如果有时间也建议可以做成C/S或B/S的项目。

步骤一:创建表,并为各表添加约束

用户表:用户ID,姓名,身份证,联系电话,联系地址

要求:
  • 1.根据身份证号码创建散列分区
  • 2.用户ID为主键
  • 3.身份证号码唯一,15或18位
  • 4.为用户ID创建序列,用于用户ID自增

银行卡信息表:卡号,币种(人民币),存储类型(定期,活期),开户时间,开户金额,当前账目余额,密码,是否挂失,用户的ID

要求:
  • 1.根据开户日期创建表分区
  • 2.卡号主键,卡号必须是0-9的数字,格式xxxx xxxx xxxx xxxx以1010 3576开头
  • 3.存储类型只能是下面三种之一:活期,定期,活定两便
  • 4.开户金额必须大于1元
  • 5.密码必须大于6位
  • 6.是否挂失只能是下面两种之一:是,否
  • 7.用户的ID是外键,关联用户表的主键。
  • 8.币种默认”RMB”
  • 9.开户时间默认当前时间
  • 10.密码默认888888
  • 11.是否挂失默认:否
  • 12.根据卡号创建银行卡信息表的索引优化表查询。

交易信息表:交易日期,卡号,交易类型,交易金额,备注

要求:
  • 1.根据交易时间创建表分区
  • 2.卡号为外键,关联银行卡信息表主键
  • 3.交易类型只能是下面两种之一:存入,支取
  • 4.交易金额必须大于0
  • 5.交易时间默认为当前时间

注意:对于三张表都要创建公有同义词,便于以后的查询。

测试:分别添加两条用户表,银行卡信息表

步骤二:创建视图,要求如下:

  • 1.创建 用户表表视图
  • 2.创建银行卡信息表视图
  • 3.创建交易信息表视图
  • 4.创建查询挂失的客户信息视图
  • 5.创建 查询本周开户的卡号 显示相关信息视图
  • 6.创建 查询本月交易金额最高的卡号 的视图

测试:分别测试上面个视图是否显示正常

步骤三:创建触发器,要求如下:

  • 1.不允许修改卡号:当更新的是银行卡信息表的卡号时提示“此列不允许修改”
  • 2.当交易信息表有插入或者修改记录,银行卡信息表跟随改变:如交易信息表新增一条支取,那么对应的银行信息卡余额应该减少对应支取的金额。同理如交易信息表新增一条存入,那么对应的银行信息卡余额应该增加对应存入的金额。注意:如果支取先判断余额,不足则提示。如交易成功打印恭喜信息。

测试:分别针对交易信息表做支取和存入的操作。

步骤四:创建针对用户信息的程序包及程序包主体内容

  • 1.创建函数:卡号随机生成,注意卡号的格式1010 3576 XXXX XXXX
  • 2.创建开户的存储过程:注意卡号调用上面函数,开户过程包含插入信息到用户表及银行卡信息表
  • 3.创建修改密码的存储过程
  • 4.创建挂失账号的存储过程

测试:执行开户的存储过程,执行修改密码的存储过程,执行挂失的存储过程

步骤五:创建针对银行卡信息表的程序包及程序包主体内容

  • 1.创建支取和存入的存储过程,注意只需要操作交易表,而银行卡信息表的余额由上面步骤三中的触发器维护
  • 2.创建查询余额存储过程
  • 3.创建转账存储过程,注意:判断要转账及要转入的账户是否都存在,转账金额是否充足,发生异常交易失败要回滚
  • 4.创建汇总存储过程(对于银行来说流通余额=所有存入-所有取出)(对于银行来说盈利结算=所有存入0.003-所有支取0.008),
  • 5.创建销户存储过程,注意销户要删除用户信息表,银行卡信息表,交易信息表中于之相关的所有记录 测试:执行取钱和存钱的存储过程,执行查询余额的存储过程,执行转账的存储过程,执行汇总的存储过程,执行销户的存储过程

总结:

作为一个新生程序猿,Damon希望能够与大家一同进步。文章或者描述有所不足的地方,希望大家多多提出来,一同进步。

Damon会继续发掘一些有用的咨询,知识以及新工具,与大家一同分享,谢谢!