ITPub博客

首页 > Linux操作系统 > Linux操作系统 > PL/SQL学习笔记(三)

PL/SQL学习笔记(三)

原创 Linux操作系统 作者:yanxiaojun_007 时间:2009-05-24 13:25:39 0 删除 编辑

子查询:

语法:**博客首页n&x kgz
select col from table
USJ1_%G,Y#cN0where expr operator (select col from table);

子查询在主查询执行前执行一次。
DCE1|8w0子查询的结果被用于主查询。

使用规则:

在WHERE 和 HAVING 子句中都可以使用子查询。

*、子查询必须用括号扩起。
3nKj$x#rJQV+l0*、子查询应该在比较条件的右边。
#vc.gX)?-wo0*、在子查询中的ORDER BY 子句不需要,除非执行TOP-N分析。**博客首页$A~"U/woLE4k
TOP-N分析:(在一些表里求出最怎么怎么怎么样(最好、做多...)的几个人)。**博客首页^n%kV2v$Z
*、对单行子查询使用单行比较操作符,多行子查询使用多行比较操作符。

可以在子查询中使用组函数。

子查询的分类:


Oj9x4|5`:s0单行单列子查询
B dP6aexS"A0单行操作符:>,<,=,>=,<=,<>
)LP2n1](p t0一定返回一行

 

  
SWsjA.K'_A#P0多行单列子查询

 


+?$["}&K3he6Dp(d0单行多列子查询
8t G {Z s qbk0返回零行或多行

多行操作符:**博客首页,W2|f1fxHN YePi
 in 等于列表中的任何值。(不能用NOT IN)**博客首页}D1qT X
 ANY 与子查询返回的每个值进行比较。(小于是小于最大的,大于是大于最小的)**博客首页9\_d:AF0n1m \
 **博客首页AR{;GEgv
 select employee_id,last_name,job_id,salary from smployees**博客首页4o#P \zm e4M6L
 where**博客首页(M-d]@ c,M#@CBN z
 salary < any(select salary from employees where job_id='IT_PROG')
{$x"pv?~oi}0 and job_id <> 'IT_PROG';

 ALL(小于是小于最小的,大于是大于最大的)  

**博客首页@9Z#Otm s/Km3o
select e.employee_id,e.last_name,e.salary

from employees e,

(select department_id,min(salary) m from employees

group by department_id )d

where e.department_id=d.department_id

and

e.salary=d.m;**博客首页 Ub'{P#]*x9b]
查询每个部门薪水最少的员工的资料。

 


cc4M'v;Zu*M~0多行多列子查询

 

 

**博客首页 S/w'j,H@ O7@
替换变量:

临时存储值:

&  (生命周期):单次引用中,不需要声明。如果替换字符或日期类型,最好用单引号扩起。

使用范围:
&u#[;e9[,RS"`L0where**博客首页OeVDJ*|
order by
#o*@q5o,T8L di#z+WS-B9A0列表达式
Q&I-iz(XY^ka0表名
-[ A l%X:W+X0整个SELECT 语句中。

 

&& (生命周期):整个会话(session连接),不需要声明。

 

define(生命周期):整个会话,预先声明,使用时用&引用声明的变量。

define column_name(变量名) 查看变量命令。
4Fv/sP _@}*I0undefine 变量名 清除变量
%D |'Tg2TV+a0define variable=用户创建的CHAR类型的值:define 变量名=值;

 

**博客首页0X5bwa&c8G$}7NyD
accept(生命周期):整个会话,预先声明,可以客户化提示信息,使用时用&引用声明的变量。
y&U E4L$d2Dbv6x&_i0定义:accept   变量名   number/char/date   prompt   '提示信息内容'
#Cs R.zg0ACC[EPT] variable [NUM[BER] | CHAR | DATE] [FOR[MAT] format]
:EL!Q R J8{ c.j0[DEF[AULT] default] [PROMPT text | NOPR[OMPT]] [HIDE]

例:accept a char prompt '请输入员工的雇佣时间(yyyy-mm-dd):'

hide
+wbf;Q^*{0OBZ0例:accept a char prompt 'input a:' hide
mk ^3f-Buw0  

set verify(环境变量) off;关闭调试命令(关掉替换过程)
&f3CY J|?u0set verify(环境变量) on;打开调试命令(可以看到替换过程)

 

环境变量:

ECHO 显示回显

HEADING {OFF/ON}是否显示列标题;

ARRAYSIZE{20/n}每一次从查询得到的返回量的大小。

FEEDBACK{OFF/ON}回馈,反馈信息。

LONG{80/n}on/text} LONG类型

LINESIZE 行的宽度。
R!k$?:_3X5l.u0 **博客首页;am|&T l?
SET LINESIZE n(最好是在200之内)

PAGESIZE :设置页的大小。SET PAGESIZE N**博客首页OOO4D"A~/j4Mq
 **博客首页&?kS&H~~K:Q
wrap{off/on} 折行 


` Zs&^0y~3d8o0SET 修改
y&g[N0L0SHOW 显示


R8Cj`3gbJA0CG0格式化命令:

COLUMN[column option]可以设置字段或字段别名的格式。
/R fk"i#B0COLUMN last_name HEADING employee|name  '|'代表换行。
&n:C%r|8a7B4O0col 字段名 查看命令

 

CLE[AR]:清除列的格式

HEA[DING] TEXT:设置列标题

FOR[MAT] FORMAT:格式化显示列的值,对字符和数字有效,对日期无效。**博客首页Q(N5Dryl)AH#M iJ{
column salary justify left format $999,999.00       justify left:左对齐。**博客首页!]+`$hUMe
col manager_id format 999999999
y Ji W+MP0限制字符串的长度有A+数字限制**博客首页Ik i$icv?"D
限制数字的长度有9,有几为9就限制成几位。

**博客首页'p}+`dJ]8@
NOPRINT/PRINT    NOPRINT:把一个字段从输出上屏蔽掉(返回但不显示)。**博客首页[:j9Atp)Bf
col 字段名 noprint/print.


|@jNN+Z^0NULL如果有NULL值,显示什么。
4]n#\"^F"Oj{l0col name null 'on employee'

TTITLE[text/off/on]设置报表的表头**博客首页i{-?)BN \iu7c[
BTITLE[text/off/on]设置报表的表尾**博客首页 `xlD7DH
做报表的时候要先想好PAGESIZE的大小。

BREAK ON [REPORT_ELEMENT]
#Pp n1utyR0压制重复值的显示。只能跟一个字段名才有效。
Y:?.CQNg7{hd ^0例:**博客首页!p a&OU#Y,i
select department_id,last_name
%t1pD'p*d3dDg0from employees
1GD1EXy&d0where rownum<30**博客首页S8W)Bv+I_+D}1N0x;o
order by 1,2;

break on department_id


3QbcY Q _IU:\0做脚本文件的过程:

变量定义accept
9Y tF5Q9R1o.n}0环境变量设置SET
sI}1Vi nc0格式控制命令**博客首页wdKb1Vt;n
SPOOL**博客首页"fw$s$E w.Z v
使用变量的SQL
[ CY:pB-e;D0SPOOL OFF
pI|l@ drHU2f0清除格式控制**博客首页/c W&{R-GM@4A;S
重置环境变量
8f _6pZ2SUXf0释放变量

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15037413/viewspace-600894/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-05-24

  • 博文量
    51
  • 访问量
    51803