資料庫學習(三)多表聯查

2022-02-23 13:59:03 字數 2414 閱讀 7997

目錄

二、至少兩種方式行轉列

三、分頁

oracle學習(二)中我們學習了92語法,現在我們學習一下99語法

sql 1999語法

1.1.cross join 笛卡爾積

select * from emp cross join dept;
1.2.natural join 自然連線

當兩個表不具有相同列名,進行cross join,具有相同列名,自動匹配

select * from emp e natural join dept d;
1.3.on子句,新增鏈結條件,相當於92語法的等值連線

相當於92語法的等值連線

select * from emp e join dept d on e.deptno=d.deptno
相當於92語法的非等值連線

select * from emp e join salgrade sg on e.sal between sg.losal and sg.hisal
1.4.left outer join

左表中資料全部顯示,游標沒有資料直接顯示空

select * from emp left outer join dept d on e.deptno=d.deptno
1.5.right outer join

右表全部顯示,沒有資料顯示空

select * from emp right outer join dept d on e.deptno=d.deptno
1.6.full outer join
select * from emp full outer join dept d on e.deptno=d.deptno
1.7.inner outer join

inner join 和 join一樣

select * from emp e inner outer join dept d on e.deptno=d.deptno
1.8.using

除了使用on表示連線條件,也可以使用using

使用using會少一列,因為deptno為連線列,不歸屬任何一張表

select * from emp e join dept d using(deptno)
姓名

語文數學

英語王五

8899

502.1.decode

select ss.name,

max(decode(ss.subject,'語文',ss.score)) 語文,

max(decode(ss.subject,'數學',ss.score)) 數學,

max(decode(ss.subject,'英語',ss.score)) 英語,

from student_score ss group by ss.name

2.2.case when then
select ss.name,

max(case ss.subject

when '語文' then ss.score

end) 語文,

max(case ss.subject

when 『數學』 then ss.score

end) 數學,

max(case ss.subject

when '英語' then ss.score

end) 英語

from student_score ss group by ss.name

2.3.join
select ss01.name,ss01.score 語文,ss02.score 數學,ss03.score 英語

from(select ss.name,ss.score

from student_score as

where ss.subject='語文') ss01

join(select ss.name,ss.score

from student_score as

where ss.subject='數學') ss02

join(select ss.name,ss.score

from student_score as

where ss.subject='英語') ss03

on ss01.name = ss03.name;

必須內部放入乙個字段,否則rn是可活動的

select * from  (select emp.*,rownum rn from emp) where rn>2 and rn <5

資料庫多表關聯查詢

本文主要列舉兩張和三張表來講述多表連線查詢。新建兩張表 表1 student 截圖如下 表2 course 截圖如下 此時這樣建表只是為了演示連線sql語句,當然實際開發中我們不會這樣建表,實際開發中這兩個表會有自己不同的主鍵。外連線可分為 左連線 右連線 完全外連線。1 左連線 left join...

資料庫的多表聯查 比較L

三表聯查 首先建立三個資料表 1.user id cid pid 1 1 1 2 2 2 2.user1 cid class 1 數學 2 語文 3 英語 3.user2 pid name 1 孫 2 趙 3 錢 以上是三個表裡的內容 自己隨意填寫 即通過表1裡邊的cid與pid來作為表2和表3的i...

達夢資料庫查詢多表聯查

小結 select 列名列表 from 表 1,表 2 where 兩表關聯列條件表示式 select 列名列表 from 表 1 inner join on 兩表關聯列條件表示式 外連線可分為 左連線 右連線 完全外連線。左外連線 左外連線包含left join左表所有行,如果左表中某行在右表沒有...