SQL Server的Inner Join及Outer Join_Mssql數(shù)據(jù)庫(kù)教程
推薦:深入淺出SQL之左連接、右連接和全連接內(nèi)連接僅選出兩張表中互相匹配的記錄.因此,這會(huì)導(dǎo)致有時(shí)我們需要的記錄沒(méi)有包含進(jìn)來(lái)。 為更好的理解這個(gè)概念,我們介紹兩個(gè)表作演示。蘇格蘭議會(huì)中的政黨表(party)和議員表(msp)。 party(
當(dāng)然 Join 如何將不同的數(shù)據(jù)庫(kù)的資料結(jié)合, 還要看你如何使用它, 一共有四種不同的 Join 的方式, 在這篇文章中我們將為你介紹 Inner Join 及 Outer Join 以及其應(yīng)用。
在一個(gè)正規(guī)化的數(shù)據(jù)庫(kù)環(huán)境中, 我們常會(huì)碰到這款情形: 所需的資料并不是放在同一個(gè)資料表中, 在這個(gè)時(shí)候, 你就要用到 Join。
當(dāng)然 Join 如何將不同的數(shù)據(jù)庫(kù)的資料結(jié)合, 還要看你如何使用它, 一共有四種不同的 Join 的方式, 在這篇文章中我們將為你介紹 Inner Join 及 Outer Join 以及其應(yīng)用。
Inner Join
Inner Join 應(yīng)該是最常用的 Join 方式, 它只會(huì)傳回符合 Join 規(guī)則的紀(jì)錄, 還是先來(lái)看看語(yǔ)法:
Select <要選擇的字段> From <主要資料表> <Join 方式> <次要資料表> [On <Join 規(guī)則>]
現(xiàn)在我們利用 MS SQL 內(nèi)建的北風(fēng)數(shù)據(jù)庫(kù)來(lái)實(shí)際練習(xí)一下! 想多了解 MS SQL 的內(nèi)建數(shù)據(jù)庫(kù), 你可以看看 SQL Server 的內(nèi)建數(shù)據(jù)庫(kù)這篇文章。
請(qǐng)打開(kāi) QA (Query Analyzer), 為了使用北風(fēng)數(shù)據(jù)庫(kù), 請(qǐng)先執(zhí)行 Use Northwind, 然后執(zhí)行
Select ProductId, ProductName, SupplierId From Products
從 Products 產(chǎn)品資料表中取出三個(gè)字段, 分別是產(chǎn)品代碼, 產(chǎn)品名稱, 供貨商代碼, 但查詢出來(lái)的結(jié)果保證讓你的老板很不滿意, 因?yàn)楣┴浬檀a對(duì)于人類實(shí)在是無(wú)什么意義, 這個(gè)時(shí)候 Join 就可以幫上忙了, 藉由 Join Suppliers 這個(gè)資料表我們便可以查詢到供貨商名稱
Select ProductId, ProductName, Suppliers.SupplierId
From Products
Inner Join Suppliers
Products.Suppliers = Suppliers.SupplierId
這款的查詢結(jié)果是不是清楚呢! Inner Join 的主要精神就是 exclusive , 叫它做排他性吧! 就是講 Join 規(guī)則不相符的資料就會(huì)被排除掉, 譬如講在 Product 中有一項(xiàng)產(chǎn)品的供貨商代碼 (SupplierId), 沒(méi)有出現(xiàn)在 Suppliers 資料表中, 那么這筆記錄便會(huì)被排除掉
Outer Join
這款的 Join 方式是一般人比較少用到的, 甚至有些 SQL 的管理者也從未用過(guò), 這真是一件悲哀的代志, 因?yàn)樯朴?Outer Join 是可以簡(jiǎn)化一些查詢的工作的, 先來(lái)看看 Outer Join 的語(yǔ)法 Select <要查詢的字段> From <Left 資料表> <Left | Right> [Outer] Join <Right 資料表> On <Join 規(guī)則>
語(yǔ)法中的 Outer 是可以省略的, 例如你可以用 Left Join 或是 Right Join, 在本質(zhì)上, Outer Join 是 inclusive, 叫它做包容性吧! 不同于 Inner Join 的排他性, 因此在 Left Outer Join 的查詢結(jié)果會(huì)包含所有 Left 資料表的資料, 顛倒過(guò)來(lái)講, Right Outer Join 的查詢就會(huì)包含所有 Right 資料表的資料, 接下來(lái)我們還是來(lái)做些實(shí)際操作, 仍然是使用北風(fēng)數(shù)據(jù)庫(kù), 但要先做一些小小的修改, 才能達(dá)到我們要的結(jié)果。
首先要拿掉 Products 資料表的 Foreign Key, 否則沒(méi)有法度在 Products 資料表新增一筆 SupplierId 沒(méi)有對(duì)映到 Suppliers 資料表的紀(jì)錄, 要知影一個(gè)資料表的 Constraint 你可以執(zhí)行 SQL 內(nèi)建的 sp_helpconstraint , 在 QA 執(zhí)行
sp_helpconstraint Products
分享:無(wú)法在 SQL Server 2005 Manger Studio 中錄入中文的問(wèn)題表現(xiàn): 在 SQL Server 2005 Manger Studio中打開(kāi)表,無(wú)法輸入中文,只能輸入英文 問(wèn)題重現(xiàn): 1. 我們建立如下三個(gè)測(cè)試表: CREATE TABLE ta( id int IDENTITY,
- sql 語(yǔ)句練習(xí)與答案
- 深入C++ string.find()函數(shù)的用法總結(jié)
- SQL Server中刪除重復(fù)數(shù)據(jù)的幾個(gè)方法
- sql刪除重復(fù)數(shù)據(jù)的詳細(xì)方法
- SQL SERVER 2000安裝教程圖文詳解
- 使用sql server management studio 2008 無(wú)法查看數(shù)據(jù)庫(kù),提示 無(wú)法為該請(qǐng)求檢索數(shù)據(jù) 錯(cuò)誤916解決方法
- SQLServer日志清空語(yǔ)句(sql2000,sql2005,sql2008)
- Sql Server 2008完全卸載方法(其他版本類似)
- sql server 2008 不允許保存更改,您所做的更改要求刪除并重新創(chuàng)建以下表
- SQL Server 2008 清空刪除日志文件(瞬間日志變幾M)
- Win7系統(tǒng)安裝MySQL5.5.21圖解教程
- 將DataTable作為存儲(chǔ)過(guò)程參數(shù)的用法實(shí)例詳解
Mssql數(shù)據(jù)庫(kù)教程Rss訂閱編程教程搜索
Mssql數(shù)據(jù)庫(kù)教程推薦
- 詳解Microsoft SQL Server數(shù)據(jù)庫(kù)開(kāi)發(fā)問(wèn)題
- SqlServer2005 數(shù)據(jù)庫(kù)同步配置圖文詳解
- 談SQL Data Services將成為云中完整的數(shù)據(jù)庫(kù)
- 解析SQL觸發(fā)器在保持?jǐn)?shù)據(jù)庫(kù)完整性中的實(shí)際應(yīng)用
- 三個(gè)影響SQL Server性能的關(guān)鍵
- 解讀在SQL Server中處理空值時(shí)涉及的三個(gè)問(wèn)題
- 看Sql server 2005 找出子表樹(shù)
- 揭秘八個(gè)有用的WordPress的SQL語(yǔ)句
- sql2008評(píng)估期已過(guò)的解決辦法及序列號(hào)
- 安裝sqlserver2000時(shí)出現(xiàn)wowexec.exe無(wú)反應(yīng)的解決方法
猜你也喜歡看這些
- MySQL多表之間字段的匹配實(shí)現(xiàn)代碼
- 基于unique與primary約束的區(qū)別分析
- MySQL數(shù)據(jù)庫(kù)INSERT、UPDATE、DELETE以及REPLACE語(yǔ)句的用法詳解
- 解析MYSQL 數(shù)據(jù)庫(kù)導(dǎo)入SQL 文件出現(xiàn)亂碼的問(wèn)題
- MySQL為什么會(huì)索引失效?
- 解決MYSQL出現(xiàn)Can''t create/write to file ''#sql_5c0_0.MYD''的問(wèn)題
- Mysql查看版本號(hào)的五種方式介紹
- Mysql select in 按id排序?qū)崿F(xiàn)方法
- MySQL筆記之基本查詢的應(yīng)用詳解
- mysql錯(cuò)誤及解決全攻略
- 相關(guān)鏈接:
- 教程說(shuō)明:
Mssql數(shù)據(jù)庫(kù)教程-SQL Server的Inner Join及Outer Join
。