1) select 语句的基本作用是什么?
检索表单中的数据
2) 比较内连接和外连接
内链接是指满足条件的的连接操作, 也就是通常所说的连接操作。在内连接的检索结果中, 都是满足连接条件的数据。
因此, 内连接的检索结果都是笛卡尔积中满足连接条件的子集。
语法形式:
select column_list
from table_name [inner]
join table_name2
on join_condition;
当表中的数据不满足条件,而又要出现在检索的结果中, 这时就要使用外连接
外连接的特点:
某些不满足条件的数据也可以出现在检索的结果中;
又可分为:
左外连接 , 右外连接 和 全外连接
全外连接:
如果左表和右表中不满足连接的条件都出现在结果中
3)比较子查询和连接查询
在多数的请况下, 子查询可以通过连接查询来代替。 连接查询的效率要远高于子查询的效率, 但是子查询更容易理解;
子查询分为两种:
相关子查询和不相关子查询,顾名思义,相关子查询不能独自运行,必须依赖于外部父查询提供某些值才能运行.
子查询的规则:
1. 子查询必须使用括号括起来, 否则无法判断子查询的开始和结束
2. 子查询中不能包括 order by 子句
3. 子查询允许多层嵌套, 最多255 层
子查询可分4类:
1.单行查询:
子查询只返回单行单列的数据, 即返回一个常量
2.多行子查询:
子查询返回多行多列的结果, 即返回一系列的值
3.多列子查询:
子查询返回多列的结果
4.关联子查询:
子查询语句引用外查询语句中的一个列或多个行, 即外查询和内查询是相互关联的。
4)简述标准变量和复合变量之间的区别?
标准变量变量每一次只能储存一个值,而复合变量可以一次存储多个值。
符合变量:
自定义变量:
根据用户需要定义变量
%rowtype类型:
根据表结构,有系统决定其结构
5)使用显示游标的步骤?
1. 定义游标 2. 打开游标 3. 提取游标 4. 关闭游标
6)简述如何处理用户自定义异常?
在实际的应用中, 程序员可以根据具体的业务逻辑规定自定义一个异常,
当用户操作违反了业务逻辑的规则, 就会引发一个异常。
7)描述游标的各个属性?
%found 是布尔类型, 如果sql 语句至少影响到一行数据, 返回true 否则返回false
%notfound 是布尔类型 与%found相反;
%isopen 是布尔类型, 当游标打开 返回true 否则返回false
%rowcount 数字类型, 返回sql 影响的行数
8)说明使用游标for 循环如何对游标进行处理?
游标for 循环是显示游标的一种快捷使用方式,他使用for 循环依次读取结果集中的数据。当for 开始时, 会自动打开(游标不需要open), 每一次循环会自动读取游标当前的行的数据,(不需要fetch 提取), 当for 循环退出时,游标会自动关闭(不需要close);
9)如何处理非预定义异常?
首先,为非预定义异常进行命名(pragma exception_init )
然后,就可以像对待系统异常一样对其进行处理。
10)非预定义异常有何作用?
1. 和业务数据相关的各种情况用自定义异常来处
2. 在抛出ORACLE预定义异常之前先抛出自己定义的非预定义异常,可以
节约异常定位的时间,比如说很多情况都最终导致同一种预定义异常情况下。
11.隐式游标和显示游标到底什么区别?
显式游标使用的是SELECT叙述,被声明于任何一个区块的声明段落中,开发者可以控制几乎所有与游标有关的操作。
显示游标对游标的处理提供了其他类似的游标无法做到的控制。他们要使用一次会传回多余一笔记录的SELECT叙述。
虽然他们提供了比隐式游标更多的控制,但也需要额外的步骤来操作。
PL/SQL为所有SQL数据操作语句(包括返回一行的SELECT)隐式声明游标,称为隐式声明游标的原因是用户不能直接命名和控制此类游标。当用户在PL/SQL中使用数据库操作语言(DML)时,Oracle预定义一个名为SQL的隐式游标,通过检查隐式游标的属性可以获取与最近执行的SQL语句相关的信息。