sql中的連線查詢

2021-05-25 22:19:15 字數 1737 閱讀 9656

create table 產品

(產品編號  char(9) not null,

產品名稱  varchar(20)  not null )go

create table 產品銷量

(產品編號  char(9) not null,

銷量      int)go

insert into 產品 values('001','顯示器')

insert into 產品 values('002','鍵盤')

insert into 產品 values('003','滑鼠')

insert into 產品銷量 values('001','25')

insert into 產品銷量 values('003','35')

insert into 產品銷量 values('005','30')

--a.自身連線查詢

select a.*,b.* from 產品 as a join 產品 as b

on a.產品編號=b.產品編號

/*自身連線查詢,

必須有連線條件,

不能有查詢條件,

結果集全顯示,

要加上區分標記

*/--b.多表連線查詢

--b-1: 交叉查詢

select * from 產品 cross join 產品銷量

/*交叉連線(不含查詢條件)

全顯示,左在左,右在右

類似於倆矩陣相乘

*/select * from 產品 cross join 產品銷量

where 產品.產品編號=產品銷量.產品編號

--交叉連線(含 查詢條件)

--b-2-1 等值連線查詢

select * from 產品 join 產品銷量

on  產品.產品編號=產品銷量.產品編號

/*等值連線

結果全顯示,左在左,右在右

*/--b-2-2 自然連線查詢

select 產品名稱 from 產品 join 產品銷量

on  產品.產品編號=產品銷量.產品編號

/*自然連線查詢 要指定列的名字

結果只顯示所選列

*/--b-2-3不等值查詢

select * from 產品 join 產品銷量

on  產品.產品編號》產品銷量.產品編號

/*連線條件中不能是等號

結果是符合條件的全顯示

*/--b-3-1 外連中的左連

select * from 產品 left join  產品銷量

on 產品.產品編號=產品銷量.產品編號

/*查詢時以左表為準,

結果中不僅有與連線條件中相同的行;

並且,左表中與連線條件中不相同的行也都要顯示

右表對應的為null 

*/--b-3-2 外連中的右連

select * from 產品 right join  產品銷量

on 產品.產品編號=產品銷量.產品編號

/*查詢時以右表為準,

結果中不僅有與連線條件中相同的行;

並且,右表中與連線條件中不相同的行也都要顯示

左表對應的為null 

*/--b-3-3 完全外連線

select * from 產品 full join  產品銷量

on 產品.產品編號=產品銷量.產品編號

/*完全外連線,全顯示,

若a表有的項,b沒有,則b中對應為null

反過來一樣

*/

SQL中的連線查詢

1 整體說明 1 所謂連線,按字面理解就是將表拼在一起,當做一張表使用 2 內連線 顧名思義,也就是兩張表的重疊部分 即青色部分 都滿足才行 3 左外連線 也就是將左邊的表也連線起來,結果就是所有左邊的資料加上滿足重疊部分條件的右邊部分 4 右外連線 右邊所有表的資料,加上滿足重疊部分條件的左邊的資...

SQL中的連線查詢

sql有sql92與sql99兩個重要的標準版本,兩個版本中的連線查詢方式不太相同。在平常寫的過程中容易混淆。笛卡爾積 from a,b 等同於 from a cross join b等值連線 from a,b where a.f1 b.f1 等同於 from a join b on a.f1 b....

SQL的連線查詢

01 內連線inner join 作用 查詢兩張表的共有部分 02 左連線 left join 作用 把左邊表的內容全部查出,右邊表只查出滿足條件的記錄 03 右連線 right join 作用 把右邊表的內容全部查出,左邊表只查出滿足條件的記錄 04 完全外連線 full outer join 完...