【JSU】LJDragon's Oracle course notes In the first semester, junior year

Oracle考前复习

试题结构分析:

1.选择题2x10,共20分(Oracle基本概念,基本SQL语句)

2.判断题2x5,共10分(Oracle基本概念,基本SQL语句)

3.填空题2x10,共20分(Oracle基本概念,基本SQL语句)

4.简答题4x5,共20分(事务的四大特性;游标的四大特性)

5.代码编程30分(PL/SQL编程:游标)

 

1.选择题2x10,共20分(Oracle基本概念,基本SQL语句)

 

参考1-4章:http://www.cnblogs.com/anstoner/p/6227837.html

2.判断题2x5,共10分(Oracle基本概念,基本SQL语句)

参考1-4章:http://www.cnblogs.com/anstoner/p/6227837.html

3.填空题2x10,共20分(Oracle基本概念,基本SQL语句)

事务四大特性(简称ACID) (这个地方扣了我6分,考前忘记看了)

1、原子性(Atomicity):事务中的全部操作在数据库中是不可分割的,要么全部完成,要么均不执行

2、一致性(Consistency):几个并行执行的事务,其执行结果必须与按某一顺序串行执行的结果相一致。

3、隔离性(Isolation):事务的执行不受其他事务的干扰,事务执行的中间结果对其他事务必须是透明的。

4、持久性(Durability):对于任意已提交事务,系统必须保证该事务对数据库的改变不被丢失,即使数据库出现故障。

参考1-4章:http://www.cnblogs.com/anstoner/p/6227837.html

4.简答题4x5,共20分(事务的四大特性;游标的四大特性)

1.说下char(),varchar2(),nchar(),nvarchar2()的区别:

2.说下rowid,rownum,row_number()的区别:

位长的字符

5.主要用于分页(好像上课说过)

5.待补充.....

3.说下union, union all的区别

不会排序

3.合并速度会比较慢

3.合并速度比较快

4.说下 delete ,truncate 区别

Delete

truncate

1.可以带条件删除

1.不可以带条件删除,是清空整个表的记录

2.记录日志

2.不记录日志

3.不删除表空间

3.删除表空间

4.可以回滚数据

4.不可以回滚数据

5.是DML语句

5.是DDL语句

6.删除速度比较慢

6.删除速度比较

5.说下 主键,唯一索引的区别

主键

唯一索引

1.一个表只有一个主键

1.一个表可以有多个唯一索引

2.主键字段要非空

2.唯一索引可以为空值

3.主键可以作为其他表的外键

3.待补充....

exsits和in 的区别

1.exist,not exist一般都是与子查询一起使用. In可以与子查询一起使用,也可以直接in (a,b.....)。

2.exist会针对子查询的表使用索引. not exist会对主子查询都会使用索引. in与子查询一起使用的时候,只能针对主查询使用索引. not in则不会使用任何索引. 注意,一直以来认为exists比in效率高的说法是不准确的。

3.in 是把外表和内表作hash 连接,而exists是对外表作loop循环,每次loop循环再对内表进行查询

显示游标的四个基本步骤

1.定义游标 cursor 游标变量名 is 查询语句;

2.打开游标 open 游标变量名;(可以重复打开)

3.提取游标 fetch 游标变量名 into 变量名;

4.关闭游标 close 游标变量名;

游标的四个属性

1.游标变量名%FOUND 布尔型属性,当最近一次读记录时成功返回,则值为TRUE;

2.游标变量名%NOTFOUND 和%found相反

3.游标变量名%ISOPEN 布尔型属性,当游标已打开时返回 TRUE;

4.游标变量名%ROWCOUNT 数字型属性,返回已从游标中读取的记录数

ddl,dml,dcl,tcl分别是什么语言,并举例说明

(1)数据查询语言(DQL:)eg: select

(2)数据操纵语言(DML:Data Manipularion Language)eg:modify,delete

(3)事务控制语言(TCL) eg:commit,rollback

(4)数据定义语言(DDL:Data Definition Language) eg:create,truncate

(5)数据控制语言(DCL:Data Control Language)eg: GRANTDENYREVOKE

在默认状态下,只有sysadmin、dbcreator、db_owner或db_securityadmin等角色的成员才有权利执行数据控制语言

5.代码编程30分(PL/SQL编程:游标)

树状结构查询的语法

  1. select * from emp;

--树状结构的表设计

--两个关键字段:id ,parenid

--parenid引用自己表的主键

--树查询,递归查询,分级查询

--分两个方向

--起始节点

--向上

--向下

--查询7566下所有的员工

  1. select * from emp
  2. start with empno = 7566--起始位置
  3. connect
    by
    prior empno = mgr--方向(向下)

--查询7566上面所有的领导

  1. select * from emp
  2. start with empno = 7566--起始位置
  3. connect
    by
    prior mgr = empno--方向(向上)

--伪列:level显示层级序号n

  1. select
    level, t.* from emp t
  2. start with t.empno = 7566--起始位置
  3. connect
    by
    prior t.empno = t.mgr--方向(向下)

--过滤单个节点 条件是写在where 后面

  1. select
    level, t.* from emp t where empno <>7902
  2. start with t.empno = 7566--起始位置
  3. connect
    by
    prior t.empno = t.mgr--方向(向下)

--过滤整个分支 写在connect by prior语句的最后面

  1. select
    level, t.* from emp t
  2. start with t.empno = 7566--起始位置
  3. connect
    by
    prior t.empno = t.mgr--方向(向下)
  4. and empno <>7902

PL/SQL之游标

--查询输出10号部门的所有员工(编号,姓名,工资)

  1.        cursor emp_cursor is
  2.        select empno,ename,sal from emp where deptno = 10;
  3.        v_empno emp.empno%type;
  4.        v_ename emp.ename%type;
  5.        v_sal emp.sal%type;
  6.        open emp_cursor;
  7.  
  8.  
  9.        fetch emp_cursor into v_empno,v_ename,v_sal;
  10.         dbms_output.put_line(emp_cursor%ROWCOUNT);
  11.        fetch emp_cursor into v_empno,v_ename,v_sal;
  12.        fetch emp_cursor into v_empno,v_ename,v_sal;
  13.        dbms_output.put_line(emp_cursor%ROWCOUNT);
  14.  
  15.         if emp_cursor%notfound then
  16.           dbms_output.put_line('true');
  17.        else
  18.          dbms_output.put_line('false');
  19.        end
    if;
  20.        dbms_output.put_line(v_empno||','||v_ename||','||v_sal);
  21.        close emp_cursor;
  22. end;

 

--loop循环

  1.        cursor emp_cursor is
  2.        select empno,ename,sal from emp where deptno = 10;
  3.        v_empno emp.empno%type;
  4.        v_ename emp.ename%type;
  5.        v_sal emp.sal%type;
  6.        open emp_cursor;
  7.       loop
  8.             fetch emp_cursor into v_empno,v_ename,v_sal;
  9.             exit
    when emp_cursor%notfound;
  10.             dbms_output.put_line(v_empno||','||v_ename||','||v_sal);
  11.       end loop;
  12.       close emp_cursor;
  13. end;

 

--while loop

  1. declare
  2.        cursor emp_cursor is
  3.        select empno,ename,sal from emp where deptno = 10;
  4.        v_empno emp.empno%type;
  5.        v_ename emp.ename%type;
  6.        v_sal emp.sal%type;
  7. begin
  8.        open emp_cursor;
  9.        fetch emp_cursor into v_empno,v_ename,v_sal;
  10.        while emp_cursor%found loop
  11.             dbms_output.put_line(v_empno||','||v_ename||','||v_sal);
  12.             fetch emp_cursor into v_empno,v_ename,v_sal;
  13.        end loop;
  14.       close emp_cursor;
  15. end;

 

--参照类型

  1.        cursor emp_cursor is
  2.        select * from emp where deptno = 10;
  3.        e emp%rowtype;
  4.        open emp_cursor;
  5.       loop
  6.             fetch emp_cursor into e;
  7.             exit
    when emp_cursor%notfound;
  8.             dbms_output.put_line(e.empno||','||e.ename||','||e.sal);
  9.       end loop;
  10.       close emp_cursor;
  11. end;

 

--游标for循环

  1.        cursor emp_cursor is
    select * from emp ;
  2.        for e in emp_cursor loop
  3.          dbms_output.put_line(e.ename);
  4.        end loop;
  5. end;

 

--带参数的for循环游标

  1.        cursor emp_cursor(v_deptno emp.deptno%type)
  2.        is
    select * from emp where deptno = v_deptno;
  3.        for e in emp_cursor(10) loop
  4.          dbms_output.put_line(e.ename);
  5.        end loop;
  6. end;

 

--最精简版

  1.        for e in ( select * from emp) loop
  2.          dbms_output.put_line(e.ename);
  3.        end loop;
  4. end;

 

 

 

 

 

 

 

 

 

 


 

ORACLE REFERENCES FRO TEST的更多相关文章

  1. ORACLE_CLASS_ENDING

    [JSU]LJDragon's Oracle course notes In the first semester, junior year Oracle考前复习 试题结构分析: 1.选择题2x10, ...

  2. How to Write Doc Comments for the Javadoc Tool

    http://www.oracle.com/technetwork/java/javase/documentation/index-137868.html This document describe ...

  3. 【转】DBA需要的技能

         dba掌握的技术    1.      os : linux,solaris或其他unix起码要一种    2.      bash (不精通也要熟)  LINUX与UNIX SHELL编程 ...

  4. Oracle Created Database Users: Password, Usage and Files References (文档 ID 160861.1)

    This document is no longer actively maintained, for info on specific (new) users in recent product e ...

  5. Oracle数据库-primary key/foreign key和references关系

    主要介绍一下个人对主键(primary key).外键(foreign key).候选键(Candidate key).超键(super key).references的总结 概念: 主键:用户选择元 ...

  6. Oracle Database 11g express edition

    commands : show sys connect sys as sysdba or connect system as sysdba logout or disc clear screen or ...

  7. [转]Oracle快速入门

    原文出处:http://blog.csdn.net/yueguanghaidao/article/details/7019377 select * from scott.salgrade; /*解锁s ...

  8. Oracle使用触发器和mysql中使用触发器的比较——学习笔记

    一.触发器 1.触发器在数据库里以独立的对象存储, 2.触发器不需要调用,它由一个事件来触发运行 3.触发器不能接收参数 --触发器的应用 举个例子:校内网.开心网.facebook,当你发一个日志, ...

  9. ORACLE中STATUS为INACTIVE但是SERVER为SHARED状态的会话浅析

    我们知道当ORACLE数据库启用共享服务器模式时,通过共享服务器模式连接到数据库的会话是有一些特征的.在v$session里面,其SERVER的状态一般为SHARED和NONE, 为SHARED时,表 ...

随机推荐

  1. Android布局文件-错误

    View requires API level 14 (current min is 8): <?xml version="1.0" encoding="utf-8 ...

  2. 趣味算法——青蛙过河(JAVA)

    青蛙过河是一个非常有趣的智力游戏,其大意如下: 一条河之间有若干个石块间隔,有两队青蛙在过河,每队有3只青蛙,这些青蛙只能向前移动,不能向后移动,且一次只能有一只青蛙向前移动.在移动过程中,青蛙可以向 ...

  3. ant打包命令

    学习ant打包命令.发布到以上tomcat还未做集成部署,无法添加到jenkins中. http://blog.csdn.net/telnetor/article/details/7015935 ht ...

  4. 使用Application_Error捕获站点错误并写日志

    Global.ascx页面使用以下方法即可捕获应用层没有try cath的错误 protected void Application_Error(Object sender, EventArgs e) ...

  5. android:http下载文件并保存到本地或SD卡

    想把文件保存到SD卡中,一定要知道SD卡的路径,获取SD卡路径: Environment.getExternalStorageDirectory() 另外,在保存之前要判断SD卡是否已经安装好,并且可 ...

  6. 如何给report自定义page number

    问题描述: report在设置分页后会自动分页,但是有默认的page number,现在的问题是有时default page number不能满足我们的需求,此时就需要自定义page number. ...

  7. java关键字 (jdk6),各自的含义是什么?

    Abstract 抽象的 一个Java语言中的关键字,用在类的声明中来指明一个类是不能被实例化的,但是可以被其它类继承.一个抽象类可以使用抽象方法,抽象方法不需要实现,但是需要在子类中被实现. bre ...

  8. Postman 安装及使用入门教程(转)

    安装 本文只是基于 Chrome 浏览器的扩展插件来进行的安装,并非单独应用程序. 首先,你要台电脑,其次,安装有 Chrome 浏览器,那你接着往下看吧. 1. 官网安装(别看) 打开官网,http ...

  9. PHP安全设置(转载)

    大家都知道PHP已经是当前最流行的Web应用编程语言了.但是也与其他脚本语言一样,PHP也有几个很危险的安全漏洞.所以在这篇教学文章中,我们将大致看看几个实用的技巧来让你避免一些常见的PHP安全问题. ...

  10. php异步调用方法实现示例

    php 异步调用方法   客户端与服务器端是通过HTTP协议进行连接通讯,客户端发起请求,服务器端接收到请求后执行处理,并返回处理结果.   有时服务器需要执行很耗时的操作,这个操作的结果并不需要返回 ...