斷點

          每天進步一點點!
          posts - 174, comments - 56, trackbacks - 0, articles - 21

          復雜的SELECT語句

          Posted on 2010-01-14 22:07 斷點 閱讀(277) 評論(0)  編輯  收藏 所屬分類: SQL

          1.集合操作:

               Union 用第二個查詢結果合并第一個查詢結果,同時不顯示重復的行

               Union all 檢索出所有的行,包括重復的行。

               intersect 返回兩個查詢所檢索出的共有行。

               minus 返回將第二個查詢檢索出的行從第一個查詢檢索出的行中減去之后剩余的行。

          select ename,dname,job
          from dept t,emp p
          where t.deptno=p.deptno and t.dname='SALES'
          union/intersect/minus
          select ename,dname,job
          from dept t,emp p
          where t.deptno=p.deptno and p.job='MANAGER';

          2.子查詢:

          可以在一個select語句中嵌入另一個完整的select語句,但此句的子查詢的返回結果只能有一個,如想返回多個可用 in

          select ename,dname,job
          from dept t,emp p
          where t.deptno=p.deptno and t.dname=
          (
          select dname
          from dept t,emp p
          where t.deptno=p.deptno and p.sal=1600.00
          );

          select  ename,dname,job
          from dept t,emp p
          where t.deptno=p.deptno and t.dname in
          (
          select dname
          from dept t,emp p
          where t.deptno=p.deptno and p.sal>3000.00
          );

          3.表的連接:

          select t.dname

          from emp p,dept t
          where p.deptno=t.deptno and p.ename='SMITH';

          由于實施了關系連接的兩表是任何連接的,所有需要在where子句中設置主關鍵字等于外部關鍵字的條件,否則查詢結果不對。

          4.case語句:

          *簡單case語句,使用表達式確定返回值,但case后的變量只有一個;

          select t.dname,t.loc,t.deptno,
          case t.deptno
          when 10 then 'ACCOUNTING'
          when 20 then 'RESEARCH'
          when 30 then 'SALES'
          else 'T'
          end
          from dept t;

          *搜索case語句,使用條件確定返回值,但when后面可以跟多個條件

          select t.dname,t.loc,t.deptno,
          case
          when t.deptno=10 and t.loc='CHICAGO' then 'ACCOUNTING'
          when t.deptno=20 then 'RESEARCH'
          when t.deptno=30 then 'SALES'
          else 'T'
          end
          from dept t;

          5.decode函數:

          decode(value,search_value,result,default_value)

          如果value和search_value相等,則返回result,否則返回default_value。

          select t.dname,t.loc,t.deptno,
          decode(t.deptno,
          10,'ACCOUNTING',
          20,'RESEARCH',
          30,'SALES',
          'T'
          )
          from dept t;


          posted @ 2009-01-13 17:15 斷點 閱讀(240) | 評論 (0)
          主站蜘蛛池模板: 望江县| 清远市| 威宁| 中江县| 如皋市| 鹤庆县| 临潭县| 云霄县| 永城市| 新干县| 安宁市| 盐源县| 那曲县| 陆丰市| 长葛市| 金华市| 图木舒克市| 广元市| 建平县| 南宫市| 大渡口区| 湘乡市| 松溪县| 吉隆县| 卢湾区| 拜城县| 枣庄市| 平罗县| 敦化市| 同德县| 连山| 巴彦淖尔市| 石景山区| 蓬莱市| 聊城市| 江津市| 郎溪县| 遂川县| 土默特右旗| 通化市| 铜山县|