1. 程式人生 > >sql92查詢與sql99查詢實現的三種方式(講義)

sql92查詢與sql99查詢實現的三種方式(講義)

--SQL92&SQL99實現三表聯合查詢
  --建立city表:使用圖形操作即可
  --給city表新增測試資料
    insert into city values(1,'商丘','歷史聞名古都');
    insert into city values(2,'邯鄲','歷史聞名古都');
    insert into city values(3,'洛陽','歷史聞名古都');
    insert into city values(4,'開封','歷史聞名古都');
  --將部門表中的loc欄位設定為城市表的城市編號
    update dept set loc='1' where deptno=50;
    update dept set loc='2' where deptno=40;
    update dept set loc='3' where deptno=30;
    update dept set loc='4' where deptno=20;
    update dept set loc='4' where deptno=10;
  --完成三表聯合查詢
    --SQL92實現:查詢員工資訊及部門名稱及所在城市名稱並且員工的工資大於2000或者有獎金
        --特點:易於書寫,難於閱讀
        --缺點:92的SQL語句結構不清晰
        --用法:
             --select  內容 (別名,連線符,去除重複,oracle函式,邏輯運算)
             --from  表名1,表名2,表名3...
             --where  條件(連線條件,普通篩選條件,where子句關鍵字)
             --group by 分組欄位
             --having 多行函式篩選
             --order by 排序欄位
        select e.*,d.dname,c.cname 
        from emp e,dept d,city c
        where (e.deptno=d.deptno and d.loc=c.cid and sal>2000) or (e.deptno=d.deptno and d.loc=c.cid and comm is not null) 
        order by e.sal 
   --SQL99實現:查詢員工資訊及部門名稱及所在城市名稱並且員工的工資大於2000或者有獎金
        --特點:難於書寫,易於閱讀
        --使用:
              --select 內容 from 表名1
              -- inner join 表名2
              -- on 連線條件
              --inner join 表名3
              --on 連線條件
              --where  普通篩選條件
              --group by 分組
              --having 多行函式篩選
              --order by 排序
      select * from emp e 
      inner join dept d 
      on e.deptno = d.deptno 
      inner join city c 
      on d.loc =c.cid
      where e.sal>2000 or e.comm is not null
      order by e.sal