資料庫連線查詢

2022-05-24 19:39:10 字數 3209 閱讀 1422

若乙個資料庫同時涉及兩個以上的表,則稱之為連線查詢。連線查詢包括內連線查詢、自連線查詢、外連線查詢。

連線查詢的一般格式為:select 表名1.列名,表名2.列名 from 表名1,表名2 where 表名1.列名 《比較運算子》 表名2.列名,其中比較運算子包括=、>、=、<=、!=等。內連線又包含等值連線,非等值連線,自然連線。

建立兩張表,產品表product和產品分類表category。產品表product包括產品號pno,產品分類號cno,產品名稱pname,產品分類表category包括分類號cno和分類名稱cname,接下來的示例均基於這兩張表實現。先建表並插入資料。

create

table

category(

cno

intnot

null

, cname

varchar(20) not

null

)engine

=innodb default charset=

utf8;

create

table

product(

pno

intnot

null

, cno

intnot

null

, pname

varchar(20) not

null

)engine

=innodb default charset=

utf8;

insert

into product values(1,11,'

老人與海');

insert

into product values(1,12,'

森馬服裝');

insert

into product values(2,13,'

老乾媽'

);insert

into product values(2,14,'剪刀'

);insert

into category values(11,'書本'

);insert

into category values(12,'衣物'

);insert

into category values(13,'食品'

);insert

into category values(13,'食品'

);insert

into category values(15,'

辦公用品

');

運算子為「=」的連線稱為等值連線,等值連線從category和product中取出屬性值相等的那些元素。

等值連線

select product.*,category.*

from product,category where product.cno = category.cno;

等值連線查詢到的結果:

屬性名之前都加上字首,是為了避免混淆。如果屬性名再參加各連線的表中是唯一的,則可以忽略字首。

非等值連線是運算子除了「=」以外的連線方式,不做示例。

自然連線是特殊的等值連線。它取出屬性相同的元素,並且在結果中把重複的屬性列去掉。

自然連線

select pno,product.cno,pname,cname from product,category where product.cno = category.cno;

自然連線查詢到的結果:

連線操作不僅可以在兩個表之間進行,也可以是乙個表與自己進行連線,稱為表的自身連線。

自連線

select first.pno,second.cno from product first,product second where first.pno=second.pno;

自連線查詢結果:

外連線包括左外連線,右外連線,全外連線。

在等值連線中,屬性值不相同的那些元素被捨棄了。把被捨棄的元素儲存下來,就叫做外連線。只保留左表中被捨棄的元素,叫做左外鏈結。

左外連線

select pno,product.cno,pname,cname from product left

outer

join category on(product.cno=category.cno);

左外連線的查詢結果:

可以看出,多了cno=14這一項,在category中沒有對應的值,所以對應的cname的值為null。

右外連線保留右表中被捨棄的元素。

右外連線

select pno,category.cno,pname,cname from product right

outer

join category on(product.cno=category.cno);

右外連線的查詢結果:

全外連線則是保留所有本應刪除的元素。mysql不支援全連線,可以用union all將左連線和右連線結合起來。

全外連線

select product.*,category.*

from product left

outer

join category on (product.cno=

category.cno)

union

allselect product.*,category.*

from product right

outer

join category on (product.cno=category.cno);

全外連線的查詢結果:

資料庫連線查詢

一 交叉連線查詢 將第一張表的所有記錄分別與第二張表的每條記錄形成一條新的記錄。select 列名 from 表名1 cross join 表名2 二 內連線查詢 返回多個表中滿足連線條件的記錄 select 表名1.列名1 from 表名1 inner join 表名2 on 連線條件 selec...

資料庫連線查詢

資料庫連線查詢主要分為 自連線查詢,內連線和外連線查詢。1.自連線查詢 對同乙個表進行查詢,語法,定義了乙個表的兩個別名,操作的還是乙個表 select from table t1,table t2 where t1.sales t2.sales2.內連線 內連線查詢實際上是一種任意條件的查詢。使用...

資料庫 連線查詢

連線方式 顯示左表及右表符合連線條件的記錄 顯示左表的全部記錄及右表符合連線條件的記錄,右表不符合條件的顯示null 顯示右表的全部記錄及左表符合連線條件的記錄,左表不符合條件的顯示null 內連線內連線,也稱為等值連線 顯示左表及右表符合連線條件 字段匹配關係 的記錄 將兩張表的列組合在一起,產出...