欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

SQLServer中怎么實(shí)現(xiàn)交叉聯(lián)接和內(nèi)部聯(lián)接-創(chuàng)新互聯(lián)

SQL Server中怎么實(shí)現(xiàn)交叉聯(lián)接和內(nèi)部聯(lián)接,針對(duì)這個(gè)問題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡(jiǎn)單易行的方法。

成都創(chuàng)新互聯(lián)公司主營(yíng)中江網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,成都App定制開發(fā),中江h(huán)5小程序制作搭建,中江網(wǎng)站營(yíng)銷推廣歡迎中江等地區(qū)企業(yè)咨詢

交叉聯(lián)接(CROSS JOIN)

交叉連接是最簡(jiǎn)單的聯(lián)接類型。交叉聯(lián)接僅執(zhí)行一個(gè)邏輯查詢處理階段-笛卡爾乘積。例如對(duì)兩個(gè)輸入表進(jìn)行操作,聯(lián)接并生成兩個(gè)表的笛卡爾乘積,也就是說,將一個(gè)表的每一行與另一個(gè)表的所有行進(jìn)行匹配。所以,如果一個(gè)表有m行,另一個(gè)表有n行,得到的結(jié)果中則會(huì)有m*n行。我們就拿SQL Server 2012教程中的例子說下

SELECT C.custid, E.empidFROM Sales.Customers AS CCROSS JOIN HR.Employees AS EORDER BY E.empid

在Sales.Customers表中有91行數(shù)據(jù),HR.Employees表中有9行數(shù)據(jù),則利用交叉聯(lián)接數(shù)據(jù)則有819(91*9)行數(shù)據(jù),簡(jiǎn)略數(shù)據(jù)如下。

交叉聯(lián)接我們可以用如下圖表示

交叉聯(lián)接較大的用途在于生成數(shù)字表以便我們用于其他目的,我們一起來看看。

IF OBJECT_ID('dbo.Digits','U')IS NOT NULL DROP TABLE dbo.Digits;CREATE TABLE dbo.Digits( digit INT NOT NULL);

插入10條基礎(chǔ)數(shù)據(jù)

USE TSQL2012GOINSERT INTO dbo.Digits  ( digit )VALUES ( 0 ), ( 1 ), ( 2 ), ( 3 ), ( 4 ), ( 5 ), ( 6 ), ( 7 ), ( 8 ), ( 9 )

創(chuàng)建數(shù)字表

USE TSQL2012GOCREATE TABLE Nums( n INT NOT NULL PRIMARY KEY);

利用交叉聯(lián)接在數(shù)字表中插入100萬條數(shù)據(jù)

USE TSQL2012GOINSERT INTO dbo.Nums(n)SELECT D6.digit * 100000 + D5.digit * 10000 + D4.digit * 1000 + D3.digit * 100 + D2.digit * 10 + D1.digit + 1 AS nFROM dbo.Digits AS D1 CROSS JOIN dbo.Digits AS D2 CROSS JOIN dbo.Digits AS D3 CROSS JOIN dbo.Digits AS D4 CROSS JOIN dbo.Digits AS D5 CROSS JOIN dbo.Digits AS D6ORDER BY n

內(nèi)部聯(lián)接(INNER JOIN)

內(nèi)部聯(lián)接用法如下

SELECT *FROM table1 AS t1INNER JOIN table2 AS t2 ON t1.Id = t2.Id

內(nèi)部聯(lián)接返回表中更多數(shù)據(jù)

我們首先給出如下三個(gè)測(cè)試表

USE TSQL2012GOCREATE TABLE FirstTable (Col1 INT)CREATE TABLE SecondTable (Col1 INT)CREATE TABLE ThirdTable (Col1 INT)GOINSERT INTO FirstTable (Col1)VALUES (1), (2), (3), (NULL)GOINSERT INTO SecondTable (Col1)VALUES (1), (2), (3), (NULL)GOINSERT INTO ThirdTable (Col1)VALUES (2), (2), (2), (2), (2), (NULL)GO

(1)等值條件查詢

SELECT f.Col1 fCol1FROM FirstTable f INNER JOIN SecondTable s ON s.Col1 = f.col1GO

(2)非等值條件查詢

USE TSQL2012GOSELECT f.Col1 fCol1FROM FirstTable fINNER JOIN SecondTable s ON s.Col1 <> f.col1GO

上述我們同樣可以利用交叉連接實(shí)現(xiàn)同樣效果

USE TSQL2012GOSELECT f.Col1 fCol1FROM FirstTable AS f CROSS JOIN SecondTable AS swhere s.Col1 <> f.col1GO

(3)查詢非重復(fù)行(NON-DISTINCT)

我們?cè)趧?chuàng)建第三個(gè)測(cè)試表時(shí),插入的數(shù)據(jù)是5個(gè)2,而在第一個(gè)表中插入的數(shù)據(jù)分別是1、2、3,此時(shí)我們利用等值聯(lián)接得到的結(jié)果到底是1個(gè)2,還是5個(gè)2呢?

USE TSQL2012GOSELECT f.Col1 fCol1FROM FirstTable fINNER JOIN ThirdTable s ON s.Col1 = f.col1GO

我們得到的結(jié)果是5個(gè)2,為什么利用內(nèi)部聯(lián)接也就是說利用的等值條件不是返回1個(gè)2呢,其實(shí)我們可以總結(jié)如下:

結(jié)論:利用內(nèi)部聯(lián)接比實(shí)際表中返回更多數(shù)據(jù)的原因在于,內(nèi)部聯(lián)接返回的結(jié)果集是基于查詢條件中的JOIN,若有多行滿足條件則返回多條數(shù)據(jù)。

內(nèi)部聯(lián)接安全性

在兩個(gè)表利用等值條件查詢時(shí),我們有兩種寫法。

ANSI SQL-92寫法

USE TSQL2012GOSELECT *FROM Sales.Orders AS SO INNER JOIN Sales.OrderDetails AS SOD ON SOD.orderid = SO.orderid

ANSI SQL-89寫法

USE TSQL2012GOSELECT *FROM Sales.Orders AS SO, Sales.OrderDetails AS SODWHERE SOD.orderid = SO.orderid

雖然這兩種寫法都可以,都能滿足需求,但是SQL Server 2012基礎(chǔ)教程強(qiáng)烈建議使用ANSI SQL-92寫法,為什么呢,因?yàn)橛肁NSI SQL-89寫法時(shí)若出現(xiàn)錯(cuò)誤,此時(shí)解析根本不會(huì)生成錯(cuò)誤,而對(duì)于ANSI SQL-92寫法則會(huì),下面我們一起來看下ANSI SQL-89寫法的問題

USE TSQL2012GOSELECT COUNT(*) AS '利用等值條件查詢總數(shù)據(jù)行' FROM Sales.Orders AS SO, Sales.OrderDetails AS SODWHERE SOD.orderid = SO.orderid

上面是我們利用正確的寫法得到的正確的總數(shù)據(jù)行為2155條,下面我們看看有問題的寫法

SELECT COUNT(*) AS '利用等值條件查詢總數(shù)據(jù)行' FROM Sales.Orders AS SO, Sales.OrderDetails AS SOD

此時(shí)我們沒有給出WHERE條件,而解析未出現(xiàn)錯(cuò)誤,當(dāng)然返回的結(jié)果集也就是錯(cuò)誤的。當(dāng)我們利用ANSI SQL-92寫法時(shí),我們同樣也未給出比較條件,如下

USE TSQL2012GOSELECT *FROM Sales.Orders AS SO INNER JOIN Sales.OrderDetails AS SOD;

關(guān)于SQL Server中怎么實(shí)現(xiàn)交叉聯(lián)接和內(nèi)部聯(lián)接問題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

網(wǎng)頁(yè)標(biāo)題:SQLServer中怎么實(shí)現(xiàn)交叉聯(lián)接和內(nèi)部聯(lián)接-創(chuàng)新互聯(lián)
文章網(wǎng)址:http://aaarwkj.com/article34/phcpe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、定制開發(fā)、品牌網(wǎng)站建設(shè)、品牌網(wǎng)站制作網(wǎng)站導(dǎo)航、做網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作
一区二区高清中文字幕| 日韩美少妇大胆一区二区| 日韩欧美亚洲综合久久精品| 在线不卡日本v二区到六区| 国产精品剧情在线播放| 人人妻人人澡人人爱| 18禁黄久久久一区二区三区| 91久久精品人妻一区二区| 精品蜜臀国产av一区二区| 欧美日韩国产精品一区二区三区| 男人午夜激情免费网站| 亚洲精品网址一区二区| 久久久久亚洲av成人网人| 另类视频在线观看免费| 日本精品av免费观看| 日韩美女搞黄色的网站| 精品国产品国语在线不卡| 丰满人妻被猛烈进入中文版| 午夜视频在线观看91| 亚洲国产日韩精品自拍av| 在线观看高清欧美国产视频| 99久久久国产精品蜜臀| 欧美日韩亚洲视频二区| 日本在线视频精品一区| 亚洲黄色录像一区二区人妻黑人| 国产日韩精品国产二区| 中文字幕乱码一区二区欧美| av在线播放网址网站| 中文字幕精品一区二区三区精品| 人妻中文字幕精品系列| 亚洲国产精品区一区二区| 男女性生活视频成年人观看| 中文字幕变态另类一区二区| 日本免费一区二区在线视频| 欧美性极品少妇精品网站| 精品亚洲第一区二区免费在线| 中文字幕av二区三区人妻| 亚洲熟女av综合网丁香| 久久国产麻豆精品电影| 日产极品一区二区三区| 亚洲国产熟对白剧情一区二区|