• Oracle PL/SQL练习题总目录 hl3292


    Oracle PL/SQL练习题总目录
    2010-11-17 13:41

    第一章:Oracle概述(安装及常见对象)

    书面作业

    1、Oracle实例和数据库的概念和关系是什么?
    2、SGA的各个组成部分的名称和作用,PGA与它有什么区别?
    3、数据库的逻辑结构是什么?
    4、视图是什么,有什么作用?
    5、为什么要用同义词,与视图有什么区别?
    6、为什么要用,序列在Oracle中通常有什么用?
    7、dual是什么表,有什么作用?

    8、scott是什么,有什么用?

    9、谈谈对Oracle的认识(体系架构)?
    10、SGA三个部分为什么能够提高性能?


    代码作业

    1、使用scott用户登录以后,创建班级表和学生表,并用insert插入一些数据,学号要求用序列seqStu产生。

    2、创建查询各班男女人数的视图,并用select查询这个视图。

    3、为学生表创建私有同义词,使用以后再删除这个同义词。

    4、使用dual查询根据指定格式(年月日时分秒)今天的日期,以及当前的日期。(查询:sysdate,to_date,to_char)

    参考答案:第一章

    第二章:定义变量

    1、Oracle表有几种数据类型?其中CLOB,BLOB有什么用?
    2、Oracle脚本中变量有几种数据类型,哪些变量是表不能使用的类型?

    3、定义各种标量数据类型,并分别举例。

    4、替代变量是什么,它能保存数据吗?

    5‍、‍table类型有什么用,为什么它的索引可以负?
    6、根据员工编号打印:ename(员工姓名)、dname(部门名称)

    要求分别使用三种方法
    1、type
    2、rowtype (提示:视图%rowtype)
    3、record

    第二章参考答案

    第三章:流程控制及异常:

    1、分别写一个示例
    ·if..elsif..else..end if
    ·case when..end case
    ·case 变量 when..case

    2、打印99乘法表
    1*1=1
    2*1=2 2*2=4
    3*1=3 3*2=6 3*3=9
    ....
    9*1=9 …… …… …… ……9*9=81

    参考答案:流程控制
    异常

    1、什么是异常,为什么要用异常?异常有什么特点?
    2、异常是如何分类的,为什么要用分类?
    3、捕获异常、抛出异常和传播异常三者有什么区别,谈谈你的理解。

    4、根据工资查询员工姓名。如果此员工不存在,则打印相应的提示信息。

    已知:执行select..into时,如果查询没有返回数据,会抛出名为“no_data_found”的异常。

    5、输入“1250”,也会抛出一个异常。假设不知道这个异常的名字。如何捕获呢?

    参考答案:异常

    第4章作业:增删改和事务
    书面作业:
    ·在Oracle中,什么叫做DML操作?
    ·SQL对象是什么,有什么用?
    ·returning语法是什么,有什么用?

    代码作业:
    ·示例一:给指定员工增加工资500块。然后打印该员工的姓名和最新工资。
    ·示例二:添
    加员工,工号使用序列seq_emp。然后打印该员工的最新工号。
    ·示例三:根据工号删除员工。然后提示“**员工已经被删除”,**表示员工姓名。
    ·示例四、增加指定部门员工的工资10%。然后打印所有的最新工资,以及所有工资之和。

    思考作业:

    在java中完成,并思考:下面开发的代码有什么“大问题”?
    1、添加员工,工号要求在最大工号的基础上加1。
    select max(empno) from emp;
    insert into emp values(?,?,?,?);
    2、根据工号给指定员工增加工资。
    update emp set sal=? where empno=?

    第五章作业:在块中查询数据
    练习1:根据工号查询员工姓名,工作和工资。如果员工不存在,则提示之。
    练习2:查询指定部门名称的员工姓名和工作。要求部门名称不区别大小写。
    练习3:根据部门名称,按以下格式打印各部门人员姓名:
    部门名称:RESEARCH
    部门人员:SMITH,JONES,FORD
    要求:
    ·用字符串拼接出所要所有员工姓名以后再打印。
    ·使用游标for循环完成,其中sql语句要求用下面四种方法,并对比各自的优缺点
    1、多条最简单的sql语句   (优点: 缺点:)
    2、子查询 (优点: 缺点:)
    3、表连接 (优点: 缺点:)
    4、视图 (优点: 缺点:)
    ·再使用显式游标完成,sql语句不做限制。

    练习4:针对所有部门,按以下格式打印各部门人员姓名:
    部门名称:RESEARCH
    部门人员:SMITH,JONES,FORD

    部门名称:ACCOUNTING
    部门人员:CLARK,KING,MILLER
    ……
    提示
    ·只要求用FOR,可能会用到双重循环。
    ·用cursor比较复杂,有能力的同学可以选做。

    第六章作业:动态sql

    书面作业:
    ·什么情况下必须要使用动态sql?
    ·什么情况下可以用静态sql而不需要用动态sql?
    ·请总结:execute immediate的各种语法
    提示:DDL、增删改、查单行、查多行、绑定变量
    ·为什么要用绑定变量?
    ·在使用动态sql时,如何提升程序的执行效率?
    ·请对比动态sql和静态sql之间的区别
    ·查资料:早期绑定和晚期绑定、软解析和硬解析、软编码和硬编码

    ·(回顾)sql语句的执行过程是什么?
    ·‍(回顾)在执行DML操作(增删改)时,数据库后台可能会同时做几件事?
    ·(回顾)索引比较多,有什么优缺点?


    代码作业:
    ·添加100000员工以下信息:empno,ename,sal,job,hiredate
    要求:使用三种方法,并对比三种方法的执行效率。
    ·静态sql
    ·先拼接字符串
    ·绑定变量

    说明:原emp表的empno长度为4,所以需要使用“alter table 表名 modify 字段 数据类型”来扩大字段。

    答案参考:动态sql

    第七章:子程序(过程、函数、包)

    代码作业:

    练习:添加学生信息(学号,姓名,班级编号),如果班级不存在,则添加班级信息,新班名称暂时与班级编号相同。

    开发三个存储过程,分别完成下面三个需求。

     需求一(注册,reg): 创建用户表,判断email是否重复,用户帐号由程序生成,要求连续增长,注册成功,提示:您的帐号是666888! 如果注册失败,请给出适当的提示。

    需求二:(登录,login):判断帐号是否存在,密码是否正确,帐户是否锁定。

    需求三:(修改密码,update_pwd):要求在检查原用户名和密码以后再更新。 

    要求:

    1、准备一定的测试数据在PL/SQL块中完成4种测试(用户不存在,密码不对,帐户锁定,登录成功)

    2、编写web项目,在java中完成对上面三个过程的调用。

    附用户表结构及测试数据: 

     Create table T_USERS
    (
    U_ID    NUMBER(10) not null,--帐号
    U_NAME VARCHAR2(10),--用户名
    U_PWD   CHAR(6), --密码
    U_EMAIL VARCHAR2(30), --注册邮箱
    STATUS NUMBER(1) --锁定状态
    );

    insert into t_usersvalues (8, 8, 8, 8,0);
    insert into t_usersvalues (9, 9, 9, 9, 1);
    commit;
      

    开发函数:

    求1:打印某个部门下一个员工号,业务规则为:部门号+3位流水号。如20部门的员工工号分别是20001,20010,20100……
    需求2:添加员工的姓名、部门号。工号使用自动编号。工号的业务规则是:部门号+3位流水号。如20部门的员工工号分别是20001,20010,20100……

    函数要求:返回指定部门员工的人员姓名列表,姓名之间用;隔开。
    SELECT get_dept_info(10)  FROM dual;
    返回:
    ACCOUNTING;CLARK;KING。
     

     

    参考答案:第七章(子程序)

     

    第八章触发器

     1、编写触发器,要求员工编号能够连续增加  

    2、编写触发器,要求删除部门时,该部门员工的部门编号设置为空;更新某个部门的编号时,对应部门的部门同时更新。

    3、编写触发器,检查添加员工时,如果部门编号不存在,则给出友好提示:编号为**的部门不存在,请先到部门表中先添加。

    4、编写触发器,在每个员工增加、修改和删除时,记录工号、操作时间、以是哪一种操作。

  • 相关阅读:
    NX二次开发-Block UI C++界面Body Collector(体收集器)控件的获取(持续补充)
    NX二次开发-Block UI C++界面(表达式)控件的获取(持续补充)
    NX二次开发-常用lib库文件
    NX二次开发-如何在类外面定义一个结构体
    NX二次开发-bat脚本文件切换NX的环境变量(NX路径和语言)
    NX二次开发-相对路径环境变量和绝对路径环境变量
    NX二次开发-UFUN所有对象类型的宏定义
    NX二次开发-UFUN创建球UF_MODL_create_sphere1
    NX二次开发-UFUN获取球的参数UF_MODL_ask_sphere_parms
    NX二次开发-UFUN获取块的参数UF_MODL_ask_block_parms
  • 原文地址:https://www.cnblogs.com/hl3292/p/2130050.html
Copyright © 2020-2023  润新知