15 SQL語言 SQL99聯合查詢

2022-02-20 15:02:41 字數 1542 閱讀 6179

我們使用普通方式查詢,格式如:

select 列名 

from 表1,表2

[where] 表1.連線列=表2.連線列(通常是主鍵)

其中,列出兩個表中都有的列(連線列)時,要使用表名.列名的方式否則會報錯。

當我們不使用where時,得到的結果是乙個笛卡爾積,如:

select ename,dept.deptno,dname from emp,dept;
結果:

我們看到員工命名不是其它部門的,卻重複的列出了該員工在其他部門的記錄,這是沒有必要的。

所以我們使用:where 表1.表2的主鍵 = 表2.表2的主鍵 的方式消除冗餘記錄。這個例子中是:where emp.deptno = dept.deptno;效果如下:

交叉連線

交叉連線語法示例

select ename,emp.deptno,dname 

from emp

cross join dept;

它與普通連線且沒有where過濾的效果一致,都是兩個表關於連線列的笛卡爾積。

自然連線

需要兩個表有同名字段(相同的列),根據所有的同名字段進行等值連線(所有同名字段的值相等)。

自然連線語法示例

select ename,deptno,dname 

from emp

natural join dept;

它的效果與普通連線跟上 'where 表1.表2的主鍵 = 表2.表2的主鍵' 的效果一致

using連線

用在什麼時候呢?答:用在不希望參照兩個表的所有同名列進行等值連線時(自然連線就是這麼做的)。

語法:

select 列名1,...

from 表名1

join 表名2

using(同名列1,同名列2);

on子句

select ename,dname from emp join dept on emp.deptno=dept.deptno where emp.deptno=30;

select ename,dname from emp join dept on (emp.deptno=dept.deptno and emp.deptno=30);

上面兩句結果一致。

外連線外連線省略了outer關鍵字,寫不寫都成。

左外連線:select 內容 from 表名 left outer join 表名 on 篩選條件

右外連線:select 內容 from 表名 right outer join 表名 on 篩選條件

全外連線:select 內容 from 表名 fill outer join 表名 on 篩選條件

自連線查詢員工姓名,工作,薪資,以及上級領導姓名

四 SQL99外連線

外連線除了能顯示滿足連線條件的資料以外,還用於顯示不滿足連線條件的資料 left outer join,表示左外連線,可以顯示左表中不滿足連線條件的資料 select e.ename,e.job,d.deptno,d.dname,d.loc from dept d left join emp e o...

oracle筆記三(Sql99語法)

1.交叉連線cross join 相當於笛卡爾積效果 select e.ename,d.dname from emp e cross join dept d 2.自然連線 natural join select e.ename,d.dname from emp e natural join dept...

sql99語法 左 右 外連線

二 外連線 應用 查詢乙個表中有,另乙個表沒有的記錄 特點 1.外連線的查詢結果為主表中的所有記錄 如果從表中有和它匹配的,則顯示匹配的值 如果從表中沒有和他匹配的,則顯示null 外連線查詢結果 內連線 主表中有而從表中沒有的記錄 2 左外連線 left join 左邊的是主表 右外連線 righ...