免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
MySQL多表查詢操作

文章目錄

多表查詢

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ù)(兩邊都有的才顯示)。 對應等值連接
select e.*, d.*
from emp e inner join dept d
on e.deptno=d.deptno
也可以省略inner關(guān)鍵字。
對應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ù)也存在。

本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Oracle PL/SQL開發(fā)基礎(chǔ)(第九彈:多表連接查詢)
ORACLE關(guān)聯(lián)查詢
ORACLE索引與高性能SQL介紹
Oracle統(tǒng)計分析函數(shù)集,over(partition by..) 的運用
Oracle 常用SQL技巧收藏
oracle 基礎(chǔ)學習 - 絕影メ之殤 - JavaEye技術(shù)網(wǎng)站
更多類似文章 >>
生活服務
分享 收藏 導長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服