乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      MySQL多表查詢操作

       流楚丶格念 2022-01-14

      文章目錄

      多表查詢

      SQL99是一個SQL的標bai準,SQL是結(jié)構(gòu)化查du詢語言的簡稱,只是一種查詢操作語言,zhiSQL99是其中一個標準,之前有daoSQL92,95等。主流的數(shù)據(jù)庫SQL Server2000/2005,Oracle等都支持SQL95以后的了,SQL99和95的分別不是很大,和92分別就大,我只知道剩Access用SQL92了。

      1交叉連接:

      叉集,即笛卡爾集
      select e.*, d.*
      from emp e cross join dept d
      無連接條件
      

      2滿外聯(lián)接

      任一邊有值就會顯示。
      select e.*, d.*
      from emp e full outer join dept d
      on e.deptno=d.deptno
      也可以省略outer關(guān)鍵字
      

      3內(nèi)連接

      只返回滿足連接條件的數(shù)據(jù)(兩邊都有的才顯示)。 對應(yīng)等值連接
      select e.*, d.*
      from emp e inner join dept d
      on e.deptno=d.deptno
      也可以省略inner關(guān)鍵字。
      對應(yīng)Oracle寫法:
      select e.*, d.*
      from emp e , dept d
      where e.deptno=d.deptno
      

      4左外連接

      左邊有值才顯示。
      select e.*, d.*
      from emp e left outer join dept d
      on e.deptno=d.deptno
      也可以省略outer關(guān)鍵字
      

      5右外連接

      右邊邊有值才顯示。
      select e.*, d.*
      from emp e right outer join dept d
      on e.deptno=d.deptno
      也可以省略outer關(guān)鍵字
      【注意】SQL99中,外鏈接取值與關(guān)系表達式=號左右位置無關(guān)。取值跟from后表的書寫順序有關(guān)。 
      

      “xxx left outer join yyy” 則為取出xxx的內(nèi)容。
      “xxx right outer join yyy”則為取出yyy的內(nèi)容

      6對比練習

      題目1:

      查詢員工信息,員工號,姓名,月薪,部門名稱

      select ...
      from emp e, dept d
      where e.deptno = d.deptno;
      
      Oracle實現(xiàn):
      select e.deptno, e.ename, e.sal, d.dname
      from emp e, dept d
      where e.deptno = d.deptno
      
      SQL99實現(xiàn):
      select e.deptno, e.ename, e.sal, d.dname
      from emp e inner join dept d
      on e.deptno = d.deptno
      
      對比記憶規(guī)律:
      “,” → [inner] join 
      whereon
      對比結(jié)論:mysql能識別Oracle中使用 = 連接的書寫方法。
      

      7自連接

      查詢員工、老板信息,顯示: xxx的老板是xxx
      分析:將一張emp表當成兩張表看待:員工表、老板表(員工表的老板 是 老板表的員工)

      1. 先按照oracle語法寫
      select e.ename, b.ename
      from emp e, emp b
      where e.mgr = b.empno
      
      1. 完善顯示格式concat
      select concat( e.ename, ' 的老板是 ',  b.ename )
      from emp e, emp b
      where e.mgr = b.empno
      
      1. 顯示king的老板
      select concat( e.ename, ' 的老板是 ',  b.ename )
      from emp e, emp b
      where e.mgr = b.empno (+)
      
      1. 改用MySQL支持的SQL99語法
      select concat( e.ename, ' 的老板是 ',  b.ename )
      from emp e left outer join emp b
      on e.mgr = b.empno ;
      
      1. 濾空修正nvl
      select concat( e.ename, ' 的老板是 ',  nvl(b.ename, '他自己' ) )
      from emp e left outer join emp b
      on e.mgr = b.empno ;
      

      結(jié)論 nvl 在mysql下不能使用: ERROR 1305 (42000): FUNCTION mydb61.nvl does not exist
      6. 濾空修正 ifnull

      select concat( e.ename, ' 的老板是 ',  ifnull(b.ename, '他自己' ) )    
      from emp e left outer join emp b
      on e.mgr = b.empno ;
      

      注意:

      Oracle中有一個通用函數(shù),與MYSQL中的ifnull函數(shù)名字相近:
      nullif:如nullif(a, b) 當 a = b 時返回null, 不相等的時候返回a值。nullif('L9,999.99’, 'L9,999.99’)
      mysql中nullif()函數(shù)也存在。

        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多