内连接,外连接,自然连接
1.内连接
内连接又称等值连接,使用 INNER JOIN 关键字。
2.外连接
外连接保留了没有关联的那些行。分为左外连接,右外连接以及全外连接,左外连接就是保留左表没有关联的行。
3.自然连接
自然连接是把同名列通过等值测试连接起来的,同名列可以有多个。 内连接和自然连接的区别:内连接提供连接的列,而自然连接自动连接所有同名列。
4.示例
有2张表。
表 A | | |
---|
name | stu_num | class |
张三 | 123 | 1 |
王五 | 124 | 1 |
侵权 | 125 | 2 |
李四 | 126 | 2 |
表B | |
---|
name | course |
张三 | 语文 |
张三 | 数学 |
王五 | 语文 |
王五 | 英语 |
侵权 | 语文 |
王六 | 语文 |
内连接
SELECT * FROM test2 A ,stu_course B WHERE A.name = B.name; 等价于
SELECT * FROM test2 A inner JOIN stu_course B ON A.name = B.name;
name | stu_num | class | name | course |
---|
王五 | 124 | 1 | 王五 | 英语 |
王五 | 124 | 1 | 王五 | 语文 |
张三 | 123 | 1 | 张三 | 语文 |
张三 | 123 | 1 | 张三 | 数学 |
侵权 | 125 | 2 | 侵权 | 语文 |
左(外)连接
SELECT * FROM test2 A LEFT (OUTER) JOIN stu_course B ON A.name = B.name;
name | stu_num | class | name | course |
---|
张三 | 123 | 1 | 张三 | 语文 |
张三 | 123 | 1 | 张三 | 数学 |
王五 | 124 | 1 | 王五 | 语文 |
王五 | 124 | 1 | 王五 | 英语 |
侵权 | 125 | 2 | 侵权 | 语文 |
李四 | 126 | 2 | \N | \N |
右(外)连接
SELECT * FROM test2 A RIGHT (OUTER) JOIN stu_course B ON A.name = B.name;
name | stu_num | class | name | course |
---|
张三 | 123 | 1 | 张三 | 语文 |
张三 | 123 | 1 | 张三 | 数学 |
王五 | 124 | 1 | 王五 | 语文 |
王五 | 124 | 1 | 王五 | 英语 |
侵权 | 125 | 2 | 侵权 | 语文 |
\N | \N | \N | 王六 | 语文 |
自然连接
SELECT * FROM test2 A NATURAL JOIN stu_course B ;
name | stu_num | class | course |
---|
张三 | 123 | 1 | 语文 |
张三 | 123 | 1 | 数学 |
王五 | 124 | 1 | 语文 |
王五 | 124 | 1 | 英语 |
侵权 | 125 | 2 | 语文 |