精品秘无码一区二区三区老师-精品秘一区二三区免费雷安-精品蜜桃秘一区二区三区-精品蜜桃秘一区二区三区粉嫩-精品蜜桃一区二区三区-精品蜜臀国产aⅴ一区二区三区

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

SQL中使用關(guān)系代數(shù)合并數(shù)據(jù)【轉(zhuǎn)】

admin
2010年12月15日 0:1 本文熱度 3377










使用關(guān)系代數(shù)合并數(shù)據(jù)
關(guān)系代數(shù)
合并數(shù)據(jù)集合的理論基礎(chǔ)是關(guān)系代數(shù),它是由E.F.Codd于1970年提出的。
在關(guān)系代數(shù)的形式化語言中:
        用表、或者數(shù)據(jù)集合表示關(guān)系或者實體。
        用行表示元組。
        用列表示屬性。
關(guān)系代數(shù)包含以下8個關(guān)系運算符
        選取――返回滿足指定條件的行。
        投影――從數(shù)據(jù)集合中返回指定的列。
        笛卡爾積――是關(guān)系的乘法,它將分別來自兩個數(shù)據(jù)集合中的行以所有可能的方式進行組合。
        并――關(guān)系的加法和減法,它可以在行的方向上合并兩個表中的數(shù)據(jù),就像把一個表壘在另一個表之上一樣。
        交――返回兩個數(shù)據(jù)集合所共有的行。
        差――返回只屬于一個數(shù)據(jù)集合的行。
        連接――在水平方向上合并兩個表,其方法是:將兩個表中在共同數(shù)據(jù)項上相互匹配的那些行合并起來。
        除――返回兩個數(shù)據(jù)集之間的精確匹配。
此外,作為一種實現(xiàn)現(xiàn)代關(guān)系代數(shù)運算的方法,SQL還提供了:
        子查詢――類似于連接,但更靈活;在外部查詢中,方式可以使用表達式、列表或者數(shù)據(jù)集合的地方都可以使用子查詢的結(jié)果。
本章將主要講述多種類型的連接、簡單的和相關(guān)的子查詢、幾種類型的并、關(guān)系除以及其他的內(nèi)容。
使用連接
2.1 連接類型
在關(guān)系代數(shù)中,連接運算是由一個笛卡爾積運算和一個選取運算構(gòu)成的。首先用笛卡爾積完成對兩個數(shù)據(jù)集合的乘運算,然后對生成的結(jié)果集合進行選取運算,確保只把分別來自兩個數(shù)據(jù)集合并且具有重疊部分的行合并在一起。連接的全部意義在于在水平方向上合并兩個數(shù)據(jù)集合(通常是表),并產(chǎn)生一個新的結(jié)果集合,其方法是將一個數(shù)據(jù)源中的行于另一個數(shù)據(jù)源中和它匹配的行組合成一個新元組。
SQL提供了多種類型的連接方式,它們之間的區(qū)別在于:從相互交疊的不同數(shù)據(jù)集合中選擇用于連接的行時所采用的方法不同。
連接類型         定義
內(nèi)連接         只連接匹配的行
左外連接         包含左邊表的全部行(不管右邊的表中是否存在與它們匹配的行),以及右邊表中全部匹配的行
右外連接         包含右邊表的全部行(不管左邊的表中是否存在與它們匹配的行),以及左邊表中全部匹配的行
全外連接         包含左、右兩個表的全部行,不管另外一邊的表中是否存在與它們匹配的行。
(H)(theta)連接         使用等值以外的條件來匹配左、右兩個表中的行
交叉連接         生成笛卡爾積-它不使用任何匹配或者選取條件,而是直接將一個數(shù)據(jù)源中的每個行與另一個數(shù)據(jù)源的每個行都一一匹配
在INFORMIX中連接表的查詢
如果FROM子句指定了多于一個表引用,則查詢會連接來自多個表的行。連接條件指定各列之間(每個表至少一列)進行連接的關(guān)系。因為正在比較連接條件中的列,所以它們必須具有一致的數(shù)據(jù)類型。
SELECT語句的FROM子句可以指定以下幾種類型的連接
FROM子句關(guān)鍵字         相應(yīng)的結(jié)果集
CROSS JOIN         笛卡爾乘積(所有可能的行對)
INNER JOIN         僅對滿足連接條件的CROSS中的列
LEFT OUTER JOIN         一個表滿足條件的行,和另一個表的所有行
RIGHT OUTER JOIN         與LEFT相同,但兩個表的角色互換
FULL OUTER JOIN        LEFT OUTER 和 RIGHT OUTER中所有行的超集

2.2 內(nèi)連接(Inner Join)
內(nèi)連接是最常見的一種連接,它頁被稱為普通連接,而E.FCodd最早稱之為自然連接。
下面是ANSI SQL-92標準
select 
from   t_institution 
inner join t_teller 
on i.inst_no t.inst_no
where i.inst_no "5801"
其中inner可以省略。
等價于早期的連接語法
select 
from t_institution i, t_teller 
where i.inst_no t.inst_no
and i.inst_no "5801"

2.3 外連接
2.3.1         左外連接(Left Outer Jion)
select 
from   t_institution 
left outer join t_teller 
on i.inst_no t.inst_no
其中outer可以省略。
2.3.2         右外連接(Rigt Outer Jion)
select 
from   t_institution 
right outer join t_teller 
on i.inst_no t.inst_no
2.3.3         全外連接(Full Outer)
全外連接返回參與連接的兩個數(shù)據(jù)集合中的全部數(shù)據(jù),無論它們是否具有與之相匹配的行。在功能上,它等價于對這兩個數(shù)據(jù)集合分別進行左外連接和右外連接,然后再使用消去重復行的并操作將上述兩個結(jié)果集合并為一個結(jié)果集。
在現(xiàn)實生活中,參照完整性約束可以減少對于全外連接的使用,一般情況下左外連接就足夠了。在數(shù)據(jù)庫中沒有利用清晰、規(guī)范的約束來防范錯誤數(shù)據(jù)情況下,全外連接就變得非常有用了,你可以使用它來清理數(shù)據(jù)庫中的數(shù)據(jù)。
select 
from   t_institution 
full outer join t_teller 
on i.inst_no t.inst_no
2.3.4         外連接與條件配合使用
當在內(nèi)連接查詢中加入條件是,無論是將它加入到j(luò)oin子句,還是加入到where子句,其效果是完全一樣的,但對于外連接情況就不同了。當把條件加入到 join子句時,SQL Server、Informix會返回外連接表的全部行,然后使用指定的條件返回第二個表的行。如果將條件放到where子句中,SQL Server將會首先進行連接操作,然后使用where子句對連接后的行進行篩選。下面的兩個查詢展示了條件放置位子對執(zhí)行結(jié)果的影響:
條件在join子句
select 
from   t_institution 
left outer join t_teller 
on i.inst_no t.inst_no
and i.inst_no “5801”
結(jié)果是:
inst_no     inst_name             inst_no     teller_no   teller_name
5801        天河區(qū)                5801        0001        tom
5801        天河區(qū)                5801        0002        david
5802        越秀區(qū)
5803        白云區(qū)
條件在where子句
select 
from   t_institution 
left outer join t_teller 
on i.inst_no t.inst_no
where i.inst_no “5801”
結(jié)果是:
inst_no     inst_name             inst_no     teller_no   teller_name
5801        天河區(qū)                5801        0001        tom
5801        天河區(qū)                5801        0002        david

2.4 自身連接
自身連接是指同一個表自己與自己進行連接。這種一元連接通常用于從自反關(guān)系(也稱作遞歸關(guān)系)中抽取數(shù)據(jù)。例如人力資源數(shù)據(jù)庫中雇員與老板的關(guān)系。
下面例子是在機構(gòu)表中查找本機構(gòu)和上級機構(gòu)的信息。
select s.inst_no superior_inst, s.inst_name sup_inst_name, i.inst_no, i.inst_name
from t_institution i
join t_institution s
on i.superior_inst s.inst_no

結(jié)果是:
superior_inst sup_inst_name         inst_no     inst_name
800            廣州市                5801        天河區(qū)
800            廣州市                5802        越秀區(qū)
800            廣州市                5803        白云區(qū)

2.5 交叉(無限制) 連接
交叉連接用于對兩個源表進行純關(guān)系代數(shù)的乘運算。它不使用連接條件來限制結(jié)果集合,而是將分別來自兩個數(shù)據(jù)源中的行以所有可能的方式進行組合。數(shù)據(jù)集合中一的每個行都要與數(shù)據(jù)集合二中的每一個行分別組成一個新的行。例如,如果第一個數(shù)據(jù)源中有5個行,而第二個數(shù)據(jù)源中有4個行,那么在它們之間進行交叉連接就會產(chǎn)生20個行。人們將這種類型的結(jié)果集稱為笛卡爾乘積。
大多數(shù)交叉連接都是由于錯誤操作而造成的;但是它們卻非常適合向數(shù)據(jù)庫中填充例子數(shù)據(jù),或者預先創(chuàng)建一些空行以便為程序執(zhí)行期間所要填充的數(shù)據(jù)保留空間。
select *
from   t_institution 
cross join t_teller t
在交叉連接中沒有on條件子句


 來源:www.sql163.com

該文章在 2010/12/15 0:01:03 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運作、調(diào)度、堆場、車隊、財務(wù)費用、相關(guān)報表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點,圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點晴WMS倉儲管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務(wù)都免費,不限功能、不限時間、不限用戶的免費OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 亚洲精品无码一区二区传媒公司 | 麻豆精品三级视频在线播放 | 日韩国产欧美一区二区三区 | 国产精品久久久久久久人人看 | 国产成人精品成人a在线观看 | 蜜臀av性久久久久蜜臀aⅴ麻豆 | 亚洲a∨精品一区二区三区下载 | 中文字幕人妻高清中字 | 极品少妇被啪到呻吟喷水 | 亚洲日韩国产第一区二区 | 亚洲日韩av乱码一区二区三区 | 亚洲成a×人片在线观看 | 亚洲精品久久久久无码AV | 四虎国产精品免费久久影院 | 国产亚洲一区二区三区四区五区 | 亚洲加勒比在线 | 无码专区在线无码 | 亚洲丰满熟女一区二区蜜桃 | 色哟哟在线观看免费网址 | 97久久精品人人槡 | 麻豆最新视频在线观看国产 | 性色a∨人人爽网站 | 亚洲精品中文字幕无码A片蜜桃 | 日韩人妻少妇精品无码专区 | 日韩精品国产另 | 加勒比中文 | a级毛片100部免费观看 | 无码人妻a一区二区三区色戒乐 | 国产香蕉尹人在线视频你懂的 | 91久久国产成人免费观看资源 | 亚洲av无码一区二区三区东京热 | 最近免费观看高清韩国日本大全 | 国产精品国产三级国产专播 | 无码精品护士一区二区三区 | 国产精品一区二区av交换 | 亚洲日韩v无码中文字幕 | 色欲AV久久一区二区三区 | 亚洲中文字幕人成乱在线 | 麻豆国产精品va在线观看不卡 | 婷婷综合久久久久中文一区二区 | 一级毛片免费在线观看 |