国产成人精品999视频&日本一区二区亚洲人妻精品&久久久精品国产99久久精&99热这里只有成人精品国产&精品国产剧情av一区二区&成人亚洲精品久久久久app&国产精品美女高潮抽搐A片

Categories


Tags


SQL Server的Inner Join及Outer Join

在一個(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ì)錄, 還是先來看看語法

Select <要選擇的字段> From <主要資料表>

<Join 方式> <次要資料表> [On <Join 規(guī)則>]

現(xiàn)在我們利用 MS SQL 內(nèi)建的北風(fēng)數(shù)據(jù)庫(kù)來實(shí)際練習(xí)一下! 想多了解 MS SQL 的內(nèi)建數(shù)據(jù)庫(kù), 你可以看看 SQL Server 的內(nèi)建數(shù)據(jù)庫(kù) 這篇文章

請(qǐng)打開 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)品名稱, 供貨商代碼, 但查詢出來的結(jié)果保證讓你的老板很不滿意, 因?yàn)楣┴浬檀a對(duì)于人類實(shí)在是無蝦米意義, 這個(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), 沒有出現(xiàn)在 Suppliers 資料表中, 那么這筆記錄便會(huì)被排除掉

Outer Join

這款的 Join 方式是一般人比較少用到的, 甚至有些 SQL 的管理者也從未用過, 這真是一件悲哀的代志, 因?yàn)樯朴?Outer Join 是可以簡(jiǎn)化一些查詢的工作的, 先來看看 Outer Join 的語法

Select <要查詢的字段> From <Left 資料表>

<Left | Right> [Outer] Join <Right 資料表> On <Join 規(guī)則>

語法中的 Outer 是可以省略的, 例如你可以用 Left Join 或是 Right Join, 在本質(zhì)上, Outer Join 是 inclusive, 叫它做包容性吧! 不同于 Inner Join 的排他性, 因此在 Left Outer Join 的查詢結(jié)果會(huì)包含所有 Left 資料表的資料, 顛倒過來講, Right Outer Join 的查詢就會(huì)包含所有 Right 資料表的資料, 接下來我們還是來做些實(shí)際操作, 仍然是使用北風(fēng)數(shù)據(jù)庫(kù), 但要先做一些小小的修改, 才能達(dá)到我們要的結(jié)果

首先要拿掉 Products 資料表的 Foreign Key, 否則沒有法度在 Products 資料表新增一筆 SupplierId 沒有對(duì)映到 Suppliers 資料表的紀(jì)錄, 要知影一個(gè)資料表的 Constraint 你可以執(zhí)行 SQL 內(nèi)建的 sp_helpconstraint , 在 QA 執(zhí)行

sp_helpconstraint Products

接下來刪除 FK_Products_Suppliers 這個(gè) Foreign Key

Alter Table Products

Drop Constraint FK_Products_Suppliers

再來新增一筆紀(jì)錄于 Products 資料表, SupplierId 使用 50 是因?yàn)樗]有對(duì)映到 Suppliers 資料表中的記錄

Insert Into Products (ProductName,SupplierId,CategoryId)

values ('Test Product','50','1')

現(xiàn)在我們?cè)賵?zhí)行頭前的查詢, 只是將 Inner Join 改為 Left Outer Join

Select ProductId, ProductName, Suppliers.SupplierId

From Products

Left Outer Join Suppliers

Products.Suppliers = Suppliers.SupplierId

比較一下兩種 Join 方式的查詢結(jié)果, 你應(yīng)該就會(huì)知影其中的差別!

再來看看 Right Outer Join, 請(qǐng)新增下底這筆記錄

Insert Into Suppliers (CompanyName)

values ('LearnASP')

現(xiàn)在請(qǐng)使用 Right Out Join 來作查詢, 比較看看查詢的結(jié)果和 Inner Join 有什么不同!

尋找不相符紀(jì)錄

這里我們來看看如何使用 Out Join 來找不相符紀(jì)錄, 可能是有子紀(jì)錄卻沒有父紀(jì)錄或是顛倒過來

Select Suppliers.CompanyName From Products

Right Join Suppliers

On Products.SupplierId = Suppliers.SupplierId

Where Products.SupplierId is Null

執(zhí)行結(jié)果你會(huì)找到一筆資料為 LearnASP, 該筆供貨商資料存在, 但基本上已經(jīng)沒有產(chǎn)品是來自這個(gè)供貨商, 想象一下如果不用 Outer Join 你要怎么以一個(gè) SQL 指令完成同一查詢結(jié)果! 知道 Outer Join 的好用了吧! 再執(zhí)行

Select Products.ProductName

From Products

Left Join Suppliers

On Products.SupplierId = Suppliers.SupplierId

Where Suppliers.SupplierId is Null

這個(gè)查詢結(jié)果你會(huì)發(fā)現(xiàn) Test Product 這項(xiàng)產(chǎn)品竟然找不到供貨商的資料!

出處:learnASP

來源:月光博客


Public @ 2020-12-14 15:47:51

LAMP網(wǎng)站架構(gòu)方案分析

LAMP(Linux-Apache-MySQL-PHP)網(wǎng)站架構(gòu)是目前國(guó)際流行的Web框架,該框架包括:Linux操作系統(tǒng),Apache網(wǎng)絡(luò)服務(wù)器,MySQL數(shù)據(jù)庫(kù),Perl、PHP或者Python編程語言,所有組成產(chǎn)品均是開源軟件,是國(guó)際上成熟的架構(gòu)框架,很多流行的商業(yè)應(yīng)用都是采取這個(gè)架構(gòu),和Java/J2EE架構(gòu)相比,LAMP具有Web資源豐富、輕量、快速開發(fā)等特點(diǎn),微軟的.NET架構(gòu)相比,L

Public @ 2011-11-26 15:47:28

關(guān)于高防服務(wù)器更換集群手工操作流程

1. 準(zhǔn)備工作:備份數(shù)據(jù)、關(guān)閉業(yè)務(wù)、確認(rèn)集群更換計(jì)劃、確認(rèn)新集群信息。 2. 在高防服務(wù)器上備份數(shù)據(jù),并將備份文件保存至安全的位置。 3. 關(guān)閉業(yè)務(wù),確保服務(wù)器上的應(yīng)用程序和服務(wù)已經(jīng)全部停止。 4. 確認(rèn)集群更換計(jì)劃,包括更換時(shí)間、更換原因、更換的集群信息等。 5. 確認(rèn)新集群信息,包括新集群的IP地址、端口信息、配置信息等。 6. 在高防服務(wù)器上執(zhí)行集群更換操作,具體步驟包括:

Public @ 2023-06-20 17:00:18

SQL Server數(shù)據(jù)庫(kù)啟動(dòng)報(bào)錯(cuò)1068解決辦法

1、運(yùn)行sqlcmd,執(zhí)行下面命令 EXEC xp_readerrorlog 0, 1, N' Socket 9.x.x.x', NULL, NULL, N'ASC' 2、記下當(dāng)中的出錯(cuò)消息,通常以“Login failed for user”,來幫助定位出問題所在 3、如果該問題和SQL Server的日志連接有關(guān),可以通過以下命令來查看是否存在該日志連接: SELE

Public @ 2023-03-01 07:00:18

SQL Server 2005數(shù)據(jù)庫(kù)修改sa密碼的方法

在 SQL Server 2005 中修改 sa 賬戶的密碼,可以通過以下步驟完成: 1. 以系統(tǒng)管理員身份登錄 SQL Server 2005 數(shù)據(jù)庫(kù)。 2. 在“對(duì)象資源管理器”中展開“安全性”節(jié)點(diǎn),找到“登錄名”節(jié)點(diǎn)。 3. 右鍵單擊“sa”賬戶,選擇“屬性”。 4. 在“一般”標(biāo)簽頁中,修改“密碼”字段,輸入新密碼。 5. 點(diǎn)擊“確定”按鈕保存修改。 以上就是在 SQL Se

Public @ 2023-06-22 09:00:11

更多您感興趣的搜索

0.458599s