【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: GRANT、DENY、REVOKE
在默认状态下,只有sysadmin、dbcreator、db_owner或db_securityadmin等角色的成员才有权利执行数据控制语言
5.代码编程30分(PL/SQL编程:游标)
树状结构查询的语法
--树状结构的表设计
--两个关键字段:id ,parenid
--parenid引用自己表的主键
--树查询,递归查询,分级查询
--分两个方向
--起始节点
--向上
--向下
--查询7566下所有的员工
- start with empno = 7566--起始位置
--查询7566上面所有的领导
- start with empno = 7566--起始位置
--伪列:level显示层级序号n
- start with t.empno = 7566--起始位置
--过滤单个节点 条件是写在where 后面
- start with t.empno = 7566--起始位置
--过滤整个分支 写在connect by prior语句的最后面
PL/SQL之游标
--查询输出10号部门的所有员工(编号,姓名,工资)
- v_empno emp.empno%type;
- v_ename emp.ename%type;
- v_sal emp.sal%type;
- open emp_cursor;
- dbms_output.put_line(emp_cursor%ROWCOUNT);
- dbms_output.put_line(emp_cursor%ROWCOUNT);
- dbms_output.put_line('true');
- dbms_output.put_line('false');
- dbms_output.put_line(v_empno||','||v_ename||','||v_sal);
- close emp_cursor;
- end;
--loop循环
- v_empno emp.empno%type;
- v_ename emp.ename%type;
- v_sal emp.sal%type;
- open emp_cursor;
- loop
- dbms_output.put_line(v_empno||','||v_ename||','||v_sal);
- end loop;
- close emp_cursor;
- end;
--while loop
- declare
- cursor emp_cursor is
- select empno,ename,sal from emp where deptno = 10;
- v_empno emp.empno%type;
- v_ename emp.ename%type;
- v_sal emp.sal%type;
- begin
- open emp_cursor;
- fetch emp_cursor into v_empno,v_ename,v_sal;
- while emp_cursor%found loop
- dbms_output.put_line(v_empno||','||v_ename||','||v_sal);
- fetch emp_cursor into v_empno,v_ename,v_sal;
- end loop;
- close emp_cursor;
- end;
--参照类型
- e emp%rowtype;
- open emp_cursor;
- loop
- dbms_output.put_line(e.empno||','||e.ename||','||e.sal);
- end loop;
- close emp_cursor;
- end;
--游标for循环
--带参数的for循环游标
--最精简版