多表連線查詢

2021-08-17 02:33:16 字數 3411 閱讀 5958

--1.

簡單連線

create

table

test_j1

(mem_id

number(9

),employees_name

varchar

(200

));insert

into

test_j1

values

(500

,'jeny'

);insert

into

test_j1

values

(501

,'lucy'

);insert

into

test_j1

values

(502

,'tom'

);create

table

test_j2

(mem_id

number(9

),department_name

varchar

(100

));insert

into

test_j2

values

(500,'

設計部'

);insert

into

test_j2

values

(501,'

研發部'

);--1.1

基本形式

select

*from

test_j1

,test_j2;--

通過笛卡爾積生成的表

select

test_j1.mem_id

,employees_name

,department_name

from

test_j1

,test_j2

;select

test_j2.mem_id

,employees_name

,department_name

from

test_j1

,test_j2

;--1.2

條件限定

select

test_j1.mem_id

,employees_name

,department_name

from

test_j1

,test_j2

where

test_j1.mem_id

=test_j2.mem_id

;--1.3

表別名select

j1.mem_id

,employees_name

,department_name

from

test_j1 j1

,test_j2 j2 

--別名j1 j2

where

j1.mem_id

=j2.mem_id

;--2.join

連線--2.1

內連線select

test_j1.mem_id

,employees_name

,department_name

from

test_j1

join

test_j2

ontest_j1.mem_id

=test_j2.mem_id;--

還可以新增where子句

create

table

test_j3

(mem_id

number(9

),job_title

varchar(50

));insert

into

test_j3

values

(500,'

經理');

insert

into

test_j3

values

(501,'

主管');

insert

into

test_j3

values

(502,'

財務');

select

test_j1.mem_id

,employees_name

,department_name

,job_title  

from

test_j1

join

test_j2

ontest_j1.mem_id

=test_j2.mem_id

join

test_j3

ontest_j2.mem_id

=test_j3.mem_id

--多個內連線

where

test_j3.job_title='

經理';

--2.2

自然連線

--2.3

外連線select

test_j1.mem_id

,employees_name

,department_name

from

test_j1

left

join

test_j2 

--左外連線

ontest_j1.mem_id

=test_j2.mem_id

;select

test_j1.mem_id

,employees_name

,department_name

from

test_j1

right

join

test_j2 

--右外連線

ontest_j1.mem_id

=test_j2.mem_id

;select

test_j1.mem_id

,employees_name

,department_name

from

test_j1

full

join

test_j2 

--全外連線

ontest_j1.mem_id

=test_j2.mem_id

;--2.4

自連線select

test_j1.mem_id

,employees_name

,department_name

from

test_j1

full

join

test_j2 

--自連線

ontest_j1.mem_id

=test_j2.mem_id

order

bytest_j1.mem_id

;

多表查詢(連線查詢)

多表查詢 資料 是多個表,這時注意一定要書寫連線條件。當n個表連線,至少需要n 1個連線條件。注意 1 如何判斷兩個表之間有公共列?型別一致 寬度一致。列名不能作為判斷標準,列名不同也能是公共列 如 emp的empno和emp的mgr 2 如何避免二義性問題?給每個屬性加歸屬。3 注意使用表別名。表...

多表連線查詢

1 內連線 inner join 只返回兩個表中所有滿足連線條件的行 2 外連線outer join 除了返回兩個表中所有滿足連線條件的行之外,還返回 某個表中不滿足連線條件的行 3 交叉連線 產生笛卡爾積的連線 如果連線條件使用等號 就可以叫做相等連線 1 使用natural join關鍵字進行內...

多表連線查詢

1.如果乙個查詢需要多個表進行操作,就成為連線查詢。2.連線查詢實際上是通過各個表之間共同列的關聯性來查詢資料的,資料表之間的聯絡是通過表的字段值來體現的。查詢 劉偉 老師所教授的課程,要求列出教師號,教師姓名和課程號 1.方法一 select t.no,tn,cno from t,tc where...