国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

sql表連接的幾種方式

2024-07-21 02:47:48
字體:
來源:轉載
供稿:網友
sql表連接的幾種方式這里有兩張表TableA和TableB,分別是姓名表和年齡表,用于我們例子的測試數據TableA
idname
1t1
2t2
4t4
TableB
idage
118
220
319
在開發中我們的業務需求有時候是復雜的,多張表聯合查詢的時候是有多種方式的,面對不同的需求,靈活使用不同的表連接方式,那么表連接分成哪幾種呢?表連接有幾種?sql表連接分成外連接、內連接交叉連接。一.外連接概述:外連接包括三種,分別是左外連接、右外連接、全外連接。對應的sql關鍵字:LEFT/RIGHT/FULL OUTER JOIN,通常我們都省略OUTER關鍵字,寫成LEFT/RIGHT/FULL JOIN。在左、右外連接中都會以一種表為基表,基表的所有行、列都會顯示,外表如果和條件不匹配則所有的外表列值都為NULL。全外連接則所有表的行、列都會顯示,條件不匹配的值皆為NULL。 1.左外連接示例: sql語句: select * from TableA left join TableB on TableA.id=TableB.id 結果:
idnameidage
1t1118
2t2220
4t4NULLNULL

注釋:TableA(基表)中所有的行列都顯示了,第三行的條件不匹配所有TableB(外表)的值都為NULL。

2.右外連接示例: sql語句: select * from TableA right join TableB onTableA.id=TableB.id 結果:
idnameidage
1t1118
2t2220
NULLNULL319
注釋:TableB(基表)中所有的行列都顯示了,第三行的條件不匹配所有TableA(外表)的值都為NULL。 3.全外連接示例: sql語句:select * from TableA full join TableB on TableA.id=TableB.id 結果:
idnameidage
1t1118
2t2220
NULLNULL319
4t4NULLNULL

注釋:TableA和TableB的所有行列都顯示了,條件不匹配的行的值為NULL

二.內連接概述:內連接是用比較運算符比較要連接的列的值的連接,不匹配的行不會被顯示。sql關鍵字JOIN 或者INNER JOIN,通常我們寫成JOIN例子: select * from TableA JOIN TableB on TableA.id=TableB.id結果:
idnameidage
1t1118
2t2220
注釋:只返回條件匹配的行以上寫法等效于: select * from TableA,TableB where TableA.id=TableB.id select * from TableA cross join TableB where TableA.id=TableB.id (cross join 后只能用where不能用on)三.交叉連接概念:沒有where條件的交叉連接將產生連接表所涉及的笛卡爾積。即TableA的行數*TableB的行數的結果集。(TableA 3行*TableB 3行=9行)sql語句: select * from TableA cross join TableB結果:
idnameidage
1t1118
2t2118
4t4118
1t1220
2t2220
4t4220
1t1319
2t2319
4t4319
注釋:返回3*3=9行數據,即笛卡爾積。以上寫法等效于:select * from TableA,TableB參考文章:http://323229113.blog.163.com/blog/static/2185362820070172553209/ps:這完全是拋磚引玉,本人寫的不好,希望大神們能多多指點,共同探討,共同學習。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 广南县| 灵山县| 定南县| 精河县| 郯城县| 隆安县| 年辖:市辖区| 定襄县| 铜梁县| 安岳县| 吉林省| 阳城县| 石河子市| 贵州省| 禄丰县| 醴陵市| 临江市| 泸水县| 芷江| 沂南县| 慈利县| 广平县| 梁山县| 都昌县| 嘉黎县| 石阡县| 洪雅县| 东乡族自治县| 济宁市| 虎林市| 凌海市| 盘山县| 长治县| 津南区| 北碚区| 拉萨市| 边坝县| 东安县| 太仓市| 柳林县| 沂源县|