sqlinnerjoinjoin
1. sql中的INNER JOIN和JOIN有什麼區別
沒區別,inner join 是內連接  join默認就是inner join。
Table A
aid   adate 
1      a1 
2      a2 
3      a3
 
TableB
 
bid bdate 
1    b1 
2   b2 
4    b4 
兩個表a,b相連接,要取出id相同的欄位 
select * from a inner join b on a.aid = b.bid這是僅取出匹配的數據. 
此時的取出的是: 
1 a1 b1 
2 a2 b2 
 
那麼left join 指: 
select * from a left join b on a.aid = b.bid 
首先取出a表中所有數據,然後再加上與a,b匹配的的數據 
此時的取出的是: 
1 a1 b1 
2 a2 b2 
3 a3 空字元 
 
同樣的也有right join 
指的是首先取出b表中所有數據,然後再加上與a,b匹配的的數據 
此時的取出的是: 
1 a1 b1 
2 a2 b2 
4 空字元 b4
 
LEFT JOIN 或 LEFT OUTER JOIN。 
左向外聯接的結果集包括 LEFT OUTER 子句中指定的左表的所有行,而不僅僅是聯接列所匹配的行。如果左表的某行在右表中沒有匹配行,則在相關聯的結果集行中右表的所有選擇列表列均為空值
 
二. left join/right join/inner join操作演示
 
表A記錄如下:
aID        aNum
1           a20050111
2           a20050112
3           a20050113
4          a20050114
5           a20050115
 
表B記錄如下:
bID        bName
1            2006032401
2            2006032402
3           2006032403
4           2006032404
8           2006032408
 
實驗如下:
1.    left join
sql語句如下: 
SELECT * FROM A
LEFT JOIN B 
ON A.aID = B.bID
結果如下:
aID        aNum                 bID           bName
1            a20050111      1                2006032401
2             a20050112         2               2006032402
3             a20050113         3               2006032403
4            a20050114         4               2006032404
5            a20050115         NULL        NULL
(所影響的行數為 5 行)
 
結果說明:
        left join是以A表的記錄為基礎的,A可以看成左表,B可以看成右表,left join是以左表為準的.
換句話說,左表(A)的記錄將會全部表示出來,而右表(B)只會顯示符合搜索條件的記錄(例子中為: A.aID = B.bID).
B表記錄不足的地方均為NULL.
 
2.    right join
sql語句如下: 
SELECT * FROM A
RIGHT JOIN B 
ON A.aID = B.bID
結果如下:
aID        aNum                 bID           bName
1            a20050111      1                2006032401
2             a20050112         2               2006032402
3             a20050113         3               2006032403
4            a20050114         4               2006032404
NULL     NULL                 8              2006032408
(所影響的行數為 5 行)
 
結果說明:
        仔細觀察一下,就會發現,和left join的結果剛好相反,這次是以右表(B)為基礎的,A表不足的地方用NULL填充.
 
3.inner join
sql語句如下: 
SELECT * FROM A
INNERJOIN B 
ON A.aID = B.bID
結果如下:
aID        aNum                 bID           bName
1            a20050111      1                2006032401
2             a20050112         2               2006032402
3             a20050113         3               2006032403
4            a20050114         4               2006032404
 
結果說明:
很明顯,這里只顯示出了 A.aID = B.bID的記錄.這說明inner join並不以誰為基礎,它只顯示符合條件的記錄.
2. SQLServer中 join 跟inner join的區別是什麼
一、指代不同
1、join:left join簡寫形式,關鍵字會從左表 (table_name1) 那裡返回所有的行。即使在右表 (table_name2) 中沒有匹配的行。
2、inner join:組合兩個表中的記錄,只要在公共欄位之中有相符的值。
二、調用方式不同
1、join:在 FROM 子句中使用INNER JOIN運算。只返回左表存在的值。
2、inner join:在 FROM 子句中使用INNER JOIN運算。這是最普通的聯接類型。只要在這兩個表的公共欄位之中有相符值,內部聯接將組合兩個表中的記錄。

三、作用不同
1、join:類標識符是已被聯接的欄位,但是並不包含在查詢輸出中,因並非被包含在 SELECT 語句之中。在這個示例中,若要包含聯接欄位,將欄位名包含在 SELECT 語句中。
2、inner join:可以使用 INNER JOIN 與部門表及員工表選擇每一個部門中的全部員工。
3. 資料庫中的「INNER JOIN」是什麼意思
在資料庫中,INNER JOIN 關鍵字在表中存在至少一個匹配時返回行。
具體語法如下:

-from 樹懶學堂
注釋:INNER JOIN 與 JOIN 是相同的。
