收藏 分享(赏)

oracle基础知识.doc

上传人:hwpkd79526 文档编号:7126028 上传时间:2019-05-06 格式:DOC 页数:9 大小:64KB
下载 相关 举报
oracle基础知识.doc_第1页
第1页 / 共9页
oracle基础知识.doc_第2页
第2页 / 共9页
oracle基础知识.doc_第3页
第3页 / 共9页
oracle基础知识.doc_第4页
第4页 / 共9页
oracle基础知识.doc_第5页
第5页 / 共9页
点击查看更多>>
资源描述

1、数据库复习资料(仅供参考)1.选择:(各章都有。 。有一部分是课后习题) 。15个30分。2.判断:(类型未知) 5个10分。3.SQL 语句:4个20分(1).创建用户,指定默认表空间,临时表空间,以及在各个表空间的配额,设置口令到期,对用户进行锁定和解锁。.注释:下划线部分按要求自己输入创建用户create user 用户名identified by 初始密码Default tablespace 默认表空间名Temporary tablespace 临时表空间名Quota 10M on rsers /*指定允许使用的默认表空间配额为10M*/Quota 128K on users /*指定

2、允许使用的临时表空间配额为128K*/Alter user exercise account lock; /*锁定 exercise 用户*/(2).创建表空间设置空间大小,初始值。 。 。 。 。 。 。 。2.创建表空间创建永久性表空间Create tablespace exer_tabspaceDatafile D:oracledataexer_tabspace.dbf size 100M /*指定路径与大小*/Autoextend on next 10M maxsize 1000MExtent management local;创建临时表空间Create temporary table

3、space school_tempTempfiled:oracledataschool_temp.dbfSize 20M reuseAutoextend onMaxsize 100MExtent management local;(3)创建序列。修改序列最大值,增量,缓冲 是否循环。CREATE SEQUENCE dept_deptnoINCREMENT BY 1 /*表示序列的增量*/START WITH 91 /*序列的开始位置*/MAXVALUE 100 /*序列生成的最大值*/NOCACHE /*不缓冲*/NOCYCLE; /*不循环*/(4).导入一个表,导出存放的位置,是否按照直接

4、路径导出。EXPORT 导出三种方法1表方式Exp userid=vendition/vendition direct=y tables=(商品信息);file=e:oradatavendition_merchlog= e:oradatavendition_merch.log2用户方式Exp 用户名/密码 file=e:oradatavendition_2007_6_21log= e:oradatavendition.log3.数据库方式Exp userid=system/abc123direct=y full=yfile=e:oradatafull_database_2007_6_21 导出

5、路径log= e:oradatafull_database.log 日志路径direct=y 表示按照直接路径导出导入是 IMP。 。导出是 EXP4编程3个40分 创建对象类型,按照说明写对象的主体。成员函数和功能实现。参 考 课 件栈是一个有序集合。栈有一个栈顶和一个栈底。栈中的每一项都只能在栈顶添加或删除。所以,最后一个被加入栈的项会被最先删除。(可以把栈想象成自助餐厅中的盘子。) 压栈和退栈操作能够对栈进行后进先出(LIFO)更新。栈能应用在很多地方。例如,它们可以用在系统编程中控制中断优先级并对递归进行管理。最简单的栈实现就是使用整数数组,数组的一端代表了栈顶。PL/SQL 提供了

6、VARRAY 数据类型,它能让我们声明变长数组。要声明变长数组属性,必须先定义变长数组类型。但是,我们不能再对象说明中定义类型,所以,只能单独的定义变长数组类型,并指定它的最大长度,具体实现如下:CREATE TYPE IntArrayAS VARRAY(25)OF INTEGER;编写对象类型说明CREATE TYPE stack AS OBJECT(max_size INTEGER,top INTEGER,POSITION intarray,MEMBER PROCEDURE initialize,MEMBER FUNCTION FULLRETURN BOOLEAN,MEMBER FUNCT

7、ION emptyRETURN BOOLEAN,MEMBER PROCEDURE push(n IN INTEGER),MEMBER PROCEDURE pop(n OUT INTEGER);编写对象类型体CREATE TYPE BODY stack ASMEMBER PROCEDURE initialize ISBEGINtop := 0;POSITION := intarray(NULL);max_size := POSITION.LIMIT; POSITION.EXTEND(max_size - 1, 1); END initialize;MEMBER FUNCTION FULL RET

8、URN BOOLEAN ISBEGINRETURN(top = max_size); END FULL;MEMBER FUNCTION empty RETURN BOOLEAN ISBEGINRETURN(top = 0); END empty;MEMBER PROCEDURE push(n IN INTEGER) ISBEGINIF NOT FULL THENtop := top + 1; POSITION(top) := n;ELSE raise_application_error(-20101, stack overflow);END IF;END push;MEMBER PROCEDU

9、RE pop(n OUT INTEGER) ISBEGINIF NOT empty THENn := POSITION(top);top := top - 1; ELSEraise_application_error(-20102, stack underflow);END IF;END pop;END;对象类型实例:有理数有理数能够表现成两个整数相除的形式,一个分子和一个分母。编写对象说明CREATE TYPE rational AS OBJECT(num INTEGER,den INTEGER,MAP MEMBER FUNCTION CONVERTRETURN REAL,MEMBER PR

10、OCEDURE normalize,MEMBER FUNCTION reciprocalRETURN rational,MEMBER FUNCTION plus(x rational)RETURN rational,MEMBER FUNCTION LESS(x rational)RETURN rational,MEMBER FUNCTION times(x rational)RETURN rational,MEMBER FUNCTION divby(x rational)RETURN rational,PRAGMA RESTRICT_REFERENCES(DEFAULT, RNDS, WNDS

11、, RNPS, WNPS);PL/SQL 不允许操作符重载。所以我们必须定义方法 plus(),less()(minus 是保留关键字),times()和 divby()来替代操作符+、- 、*和/ 。创建下面的独立存储函数,它们会被方法 normalize()调用:CREATE FUNCTION gcd(x INTEGER, y INTEGER)RETURN INTEGER ASans INTEGER;BEGINIF (y =number2 thenDBMS_output.put_line(number1=number 2);ElseDBMS_output.put_line(number1W

12、hile s_salLoopFetch c1into e_eno,e_sal;exit inner when c1%not found;Update emp set sal=sal*1.1 where current of c1;S_sal :=s_sal+e_sal*0.1;Exit outer when s_sal500000;End loop;Close c1;End loop;End; 按要求编制程序: 根据 SCOTT 用户的 emp 表中数据,为职工涨工资。从最低工资涨,增加幅度为10%,涨完工资后,每月发放工资总额为50万元。Set serveroutput onCreate t

13、able tax(enpno number (4) not null, ename varchar2(10),Stax number(7,2),memssage varchar2(30);DeclareRecord emp% rowtype;Cursor emp_cursor is select * from emp;V_tax emp.sal%type;V_message varchar2(30);Over_sal exception;BeginOpen emp_cursor;Fetch emp_cursor into record;While emp_cursor%foundLoopBeg

14、inIf record sal4000 thenRaise over_sal;Elsev_tax :=record sal*0.1;end if;v_message :=;exceptionwhen over_sal thenv_tax :=record sal*0.2;v_massage :=sal is too high!;when others thennull;end;insert into tax(empno,ename,stax,memessage)values (record.empno,record.ename,v_tax,v_message);fetch empcursor

15、into record;end loop;close emp_cursor;commit;end; 按要求编制程序: 对 SCOTT 用户的 EMP 表中的每一个雇员按不同情况征收个人所得税。将各雇员的雇员号(empno)、姓名(ename)及所得税(stax)存放于名为 TAX 的表中。如果工资高于4000元,征收20%的税,并触发自定义的异常将该情况说明写入 TAX的备注(memo)字段。否则,均征收10%的税。Set serveroutput onCreate or repace procedure tempprocedure as tname emp.ename%type;BeginS

16、elect ename into tname from emp where empno=7788;DBMS_outpu.pu_line(tname);End; 按要求编制程序:创建一个过程,定义一个同 EMP 表中的 ENAME 相同类型的变量 tname,将 EMP 表中7788雇员的姓名送入变量 tname 中,然后输出结果。Create or replace function get_deptno w_emp_no inemp.empno%type;Return numberIsV_emp_deptno emp.deptno%type;BeginSelect deptno into v_

17、emp_deptno from emp where empno=v_emp_no;Return (v_emp_deptno); 按要求编制程序:创建一个函数,获取 EMP 表中某雇员的部门号。Create or replace function get_department (name in EMP.ename%type)Return departAsDepart EMP.edept%type;BeginSelect edept into depart from EMPwhere name=ename;Returnm(depart);End get_department;使用函数DeclareName varchar(10) :=XXXXX;BeginName :=get_department(name);DBMS_output.put_line(name);Edn;

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报