SQL中的INNER JOIN和JOIN有什么区别

如题所述

一样的。
INNER JOIN 内连接
内连接就是关联的两张或多张表中,根据关联条件,显示所有匹配的记录,匹配不上的,不显示。

以下两种是标准写法:
SQL> SELECT ename,sal
2 FROM emp2 e INNER JOIN dept2 d
3 ON e.deptno=d.deptno;

--也可以省略inner关键字,直接写join
SQL> SELECT ename,sal
2 FROM emp2 e JOIN dept2 d
3 ON e.deptno=d.deptno;

--如果两张表的关联字段名相同,也可以使用USING子句。
SQL> SELECT ename,sal
2 FROM emp2 e JOIN dept2 d
3 USING(deptno);

--oracle的写法
SQL> SELECT ename,sal
2 FROM emp2 e,dept2 d
3 WHERE e.deptno=d.deptno;
温馨提示:内容为网友见解,仅供参考
第1个回答  2016-05-24
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105

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个回答  2016-05-24
没有区别
INNER JOIN等价于 JOIN
你可以理解为 JOIN  是 INNER JOIN 的缩写。

LEFTJOIN 等价于 LEFTOUTER JOIN
RIGHTJOIN 等价于 RIGHTOUTER JOIN

mysql 里面JOIN 和 INNER JOIN 区别是什么
一、指代不同 1、JOIN:用于根据两个或多个表中的列之间的关系,从这些表中查询数据。2、INNER JOIN :组合两个表中的记录,只要在公共字段之中有相符的值。二、特点不同 1、JOIN:每个主键的值都是唯一的。这样做的目的是在不重复每个表中的所有数据的情况下,把表间的数据交叉捆绑在一起。2、...

SQL中的INNER JOIN和JOIN有什么区别
在SQL中,INNER JOIN与JOIN实际上并无本质区别,可以认为JOIN是INNER JOIN的一种简写形式。内连接(INNER JOIN)是常见的数据操作,其基本语法为:select select_list from table1 inner join table2 on ***.column1=***.column1。它只返回两个表中满足连接条件的记录。自然连接(natural join)则是...

SQLServer中 join 跟inner join的区别是什么?
一、指代不同 1、join:left join简写形式,关键字会从左表 (table_name1) 那里返回所有的行。即使在右表 (table_name2) 中没有匹配的行。2、inner join:组合两个表中的记录,只要在公共字段之中有相符的值。二、调用方式不同 1、join:在 FROM 子句中使用INNER JOIN运算。只返回左表存在的...

SQL中的INNER JOIN和JOIN有什么区别
没有任何区别,一模一样 join=inner join 是一种简写 就像是你写 select a as aa 与 select a aa 结果是一样 的

SQL中的INNER JOIN和JOIN有什么区别?
没有区别,INNER JOIN等价于 JOIN,你可以理解为 JOIN是 INNER JOIN 的缩写。1. inner join是内连接,显示符合连接条件的记录语法如下:select select_list from table1 inner join tabl2 on table1.column1=table2.column1 2. natural join是对两张表中字段名和数据类型都相同的字段进行等值连接,并...

SQL中的INNER JOIN和JOIN有什么区别
INNER JOIN 等价于 JOIN 你可以理解为 JOIN 是 INNER JOIN 的缩写。LEFT JOIN 等价于 LEFT OUTER JOIN RIGHT JOIN 等价于 RIGHT OUTER JOIN

SQL中的INNER JOIN和JOIN有什么区别
left join是以A表的记录为基础的,A可以看成左表,B可以看成右表,left join是以左表为准的.换句话说,左表(A)的记录将会全部表示出来,而右表(B)只会显示符合搜索条件的记录(例子中为: A.aID = B.bID).B表记录不足的地方均为NULL.2. right join sql语句如下:SELECT * FROM A RIGHT J...

SQL中的INNER JOIN和JOIN有什么区别
INNER JOIN为内连接,只显示匹配上的数据 join为全连接,所有的数据都显示

SQL中的INNER JOIN和JOIN有什么区别
inner join 和 join 是一个意思,不过把inner 省略了而已 另外还有 left outer join 、right outer join 等 把out省略了写成:left join、right join 等 都是一样的道理

SQL中的INNER JOIN和JOIN有什么区别
inner join是多表联合查询 select a,b from A\/\/a,b属于不同的两个表 inner join B on A.c=B.c \/\/取A表和B表相关联的字段,一般为一样的字段 “=”主要用于赋值用,或者 '姓名'=A \/\/用来给表A在视图里修改命名

相似回答