ITPub博客

首页 > 数据库 > Oracle > 软件1111 Oracle答案参考 阿飞博客

软件1111 Oracle答案参考 阿飞博客

Oracle 作者:yequanyuqwert 时间:2013-12-16 23:15:06 0 删除 编辑

oracle上机练习题参考地址 http://blog.sina.com.cn/s/blog_8c1652b30101gl3g.html



1、创建一个名为zy_view的视图,该视图可以用来查看每个系名称和学生人数。查看视图。

 CREATE OR REPLACE VIEW zy_view(专业,人数)

 AS

 select zym ,count(xh) from xs group by zym;

 

 select * from zy_view;

 

2、创建一名为xs_view的视图,该视图可以用来查看每个学生的姓名、选修的课程名和成绩。查看视图。

 

 CREATE OR REPLACE VIEW xs_view(专业,课程名,成绩)

 AS

 select xm,kcm,cj from xs,xs_kc,kc where xs.xh=xs_kc.xh and xs_kc.kch=kc.kch;

 

 select * from xs_view;

 

3、创建一个名为kc_view的视图,该视图可以用来查看每门课的课程号,课程名,选修人数和平均成绩。

 

 CREATE OR REPLACE VIEW kc_view(课程号,课程名,选修人数,平均成绩)

 AS

select kc.kch,kcm,count(xh),avg(cj) from xs_kc,kc

where xs_kc.kch=kc.kch

group by kc.kch,kcm;

 

select * from kc_view;

 

4、利用kc_view视图,查看平均成绩最高的课程名。

 

 select 课程名 from kc_view where 平均成绩=(select max(平均成绩) from kc_view);

 

5、修改xs_view视图,将视图重定义为每个学生的姓名、选课门数和平均成绩。

 CREATE OR REPLACE VIEW xs_view(姓名,选课门数,平均成绩)

as

select xm,ms,pj from(

select xs.xh,xm,count(kch) ms,avg(cj) pj from xs_kc,xs

where xs.xh=xs_kc.xh

group by xs.xh,xm);

elect * from xs_view;

 

 

6、删除zy_view视图。

 

drop view zy_view;

 

 

PL/SQL编程

 

 

 

 

1.如果李明同学的年龄大于20岁,则显示“李明同学年龄为X岁”,否则打印“李明同学不符合条件”

set serveroutput on

declare

age number(2);

begin

select to_char(sysdate,'yyyy')-to_char(cssj,'yyyy')  into age from xs where xm='李明';

IF age>20 THEN dbms_output.put_line('李明同学年龄为'||to_char(age)||'岁');

ELSE dbms_output.put_line('李明同学不符合条件');

END IF;

end;

/

 

2.假设某个学生所有课程成绩的平均分小于60,那么设置奖学金类型为“三等奖”;如果大于或者等于90,则设置奖学金类型为“一等奖”,其余设置为“二等奖”。 已知该学生姓名为李明,显示“李明同学的奖学金等级为X等奖”。

set serveroutput on

declare

cj number(4,2);

jxj varchar2(10);

begin

select avg(cj)  into cj from xs,xs_kc where xs.xh=xs_kc.xh and xm='李明' group by xs.xh;

if cj<60 then jxj:='三等奖';

else if cj>=90 then jxj:='一等奖';

else jxj:='二等奖';

end if;

end if;

dbms_output.put_line('李明同学的奖学金等级为'||jxj);

end;

/

3.计算1+3+5+……+9的和,并显示结果。

set serveroutput on

         DECLARE

                n NUMBER:=0;

                   i NUMBER:=1;

         BEGIN

                   LOOP

                           n:=n+i;

                           i:=i+2;

                           IF i>9 THEN EXIT;

                           END IF;

                   END LOOP;

                   dbms_output.put_line(to_char(n));

         END;

/

4.编写一个函数f_age,可以在xs表中根据姓名求出某人的年龄。

         CREATE OR REPLACE FUNCTION f_age

      (   sname IN char      )

         RETURN number

         AS

                  age NUMBER;

         BEGIN

         select to_char(sysdate,'yyyy')-to_char(cssj,'yyyy')  into age

        from xs where xm='李明';

                   RETURN(age);

         END f_age;

/

 

 

5.改写第1题的程序块,调用函数f_age来求年龄。

set serveroutput on

declare

age number(2);

begin

 age:=f_age('李明');

IF age>20 THEN dbms_output.put_line('李明同学年龄为'||to_char(age)||'岁');

ELSE dbms_output.put_line('李明同学不符合条件');

END IF;

end;

 

<!-- 正文结束 -->

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/22512921/viewspace-1115978/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2009-09-11