数据库上机 能使用 Oracle 进行示例数据库的设计。掌握 Oracle(3)

2019-06-17 09:12

VALUES(STUNO_SQU.NEXTVAL, ' 孙庆 ','2', 630,1001,1002,'1');

INSERTINTO STUDENT( 编号 , 姓名 , 性别 , 总分 , 一志愿 , 二志愿 , 同意调剂 ) VALUES(STUNO_SQU.NEXTVAL, ' 王聪 ','1', 605,1003,1004,'0'); end;

SQL>commit;

经检查发现考生 10045 的成绩输入错误,不是 555 而应该为 553 ,通过以下查询予以修改。 SQL>updatestudent set 总分 =553 where 编号 =10045; SQL>commit;

(4 )、检查插入的数据 使用以下查询检查插入的数据: SQL>select * from student; (5) 、通过联合查询检查考生的志愿

由于填报志愿时,考生信息表中填写的是院校编号,需要通过相等连接才能显示院校名称。以一志愿为例,显示考生姓名和报考的一志愿院校名称:

SQL>select 姓名 , 总分 , 院校名称 from student s, college t where s. 一志愿 =t. 院校编号 ; 3 创建视图

一旦建立视图,通过直接对视图进行查询而不是对基表进行查询,可以实现对数据的保护,并简化操作。同时可建立视图的同义词,用于为复杂对象名生成一个简化和便于记忆的别名。考虑建立如表 3 所示的视图。 表 3 视 图

(1) .考生成绩视图 基表: student

结构:考生成绩 ( 编号,姓名,总分 ) ,只读视图。

功能:为了方便查看学生的成绩,建立学生成绩视图,显示全部学生的考号、姓名和成绩。 步骤 1 :创建视图:

SQL>create orreplace view 考生成绩 ( 编号 , 姓名 , 总分 )as select 编号 , 姓名 , 总分 from student with read only;

步骤 2 :生成考生成绩视图的同义词 score : SQL>CREATE SYNONYM SCORE FOR 考生成绩 ; (2) .录取考生视图 基表: student 和 college

结构:录取考生 ( 编号,姓名,院校名称 ) ,条件是只显示录取的考生信息,只读视图。需要通过建立相等连接来实现。

功能:为了方便查看学生的录取结果,建立录取学生的视图,显示被录取学生的考号、姓名和录取院校名称。 步骤 1 :建立视图:

SQL>create or replace view 录取考生 ( 编号 , 姓名 , 录取院校名称 )

as select 编号 , 姓名 , 院校名称 from student, college where 录取状态 ='1' and student. 录取院校 =college. 院校编号 withread only; 步骤 2 :生成录取考生视图的同义词 result: SQL> create synonym result for 录取考生 ; (3) .录取情况视图 基表: college

结构:录取情况 ( 院校编号,院校名称,状态,招生人数,缺额 ) ,只读视图。 功能:显示招生计划完成情况,计划招生人数和录取的缺额。 步骤 1 :创建视图:

SQL> create or replace view 录取情况 ( 院校编号 , 院校名称 , 状态 , 招生人数 , 缺额 ) as select 院校编号 , 院校名称 ,decode(sign( 招生人数 - 录取人数 ),1,' 未完成 ',' 完成 '), 招生人数 , 招生人数 - 录取人数 from college with read only;

步骤 2 :生成录取情况视图的同义词 status : SQL> create synonym status for 录取情况 ;

说明: sign 函数返回算术运算结果的符号,结果大于 0 返回 1 ,等于 0 返回 0 ,小于 0 返回 -1 。如果招生人数大于录取人数,则表达式 sign( 招生人数 - 录取人数 ) 的结果为 1 。此时, decode 函数返回 “ 未完成 ” ;否则返回 “ 完成 ” 。 五、 应用程序的设计和实现 1 .函数的创建

首先要建立一些函数,以便其他模块或查询引用。设计如表 4 所示的函数。 表 4 函数

(1) .返回考生姓名函数 get_student_name 函数名和参数: get_student_name(p_bh) 。

该函数的返回值类型为 VARCHAR2 。其中, p_bh 代表考生编号。 功能:通过考生的编号获得考生的姓名。 返回考生名称函数如下:

SQL> create or replace functionget_student_name (p_bh number) return varchar2 as v_name varchar2(10); begin

select 姓名 into v_name from student where 编号 =p_bh; returnv_name; exception whenothers then return ' 无 '; end;

(2) .返回考生成绩函数 get_score

函数名和参数: get_score(P_BH) 。

该函数的返回值类型为 number 。其中, p_bh 代表考生编号。 功能:通过考生的编号获得考生的总分。 返回考生成绩函数如下:

SQL> create or replace functionget_score(p_bh number) return number as

v_score number; begin

select 总分 into v_score from score where 编号 =p_bh; returnv_score; exception whenothers then return -1; end;

注意:分数直接从考生成绩视图中取得, score 为考生成绩视图的同义词。 (3) .返回院校名称函数 get_college_name 函数名和参数: get_college_name(p_bh)

该函数的返回值类型为 VARCHAR2 。其中, p_bh 代表院校编号。 功能:通过院校的编号获得院校名称。 返回院校名称函数如下:

SQL> create or replace functionget_college_name(p_bh number) return varchar2 as v_name varchar2(30); begin

select 院校名称 into v_name from college where 院校编号 =p_bh; returnv_name; exception whenothers then return ' 无 '; end;

2. 存储过程的创建

系统的功能通过存储过程来完成。考虑建立如表 5 所示的存储过程。 表 5 存储过程

(1) .插入院校存储过程 input_college 过程名和参数:

input_college(p_yxbh,p_yxmc,p_lqfsx,p_zsrs)

其中, p_yxbh 代表院校编号, p_yxmc 代表院校名称, p_lqfsx 表示录取分数线, p_zsrs 表示招生人数。

功能:该过程用于建立院校信息。每次执行时插入一个院校,部分字段的内容通过参数传递,没有指定参数的字段取字段的默认值。 插入院校程序如下:

步骤 1 :输入和调试以下存储过程:

SQL> create or replace procedureinput_college( v_yxbh in number, v_yxmc in varchar2, v_lqfsx in number, v_zsrs in number) as rnumber; begin


数据库上机 能使用 Oracle 进行示例数据库的设计。掌握 Oracle(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:java第二课知识介绍

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: