美文网首页
数据库--内连接、外连接、自连接

数据库--内连接、外连接、自连接

作者: _Henry_ | 来源:发表于2017-04-20 20:03 被阅读0次

语法:
内连接 [x inner join y on...]
右外连接 [x right outer join y on...]
左外连接 [x left outer join y on...]
全外连接 [x full outer join y on...]
交叉连接 [x cross join y on...]
自连接代表连接的表是同一个表,同样可使用内外连接等组合。

表1:teacher
+----+--------+
| id | name |
+----+--------+
| 1 | 刘德华 |
| 2 | 张学友 |
| 4 | 黎明 |
+----+--------+
表2:student
+----+------+--------+
| id | name | tea_id |
+----+------+--------+
| 1 | 张三 | 1 |
| 2 | 李四 | 1 |
| 3 | 王五 | 1 |
| 4 | 赵六 | 2 |
| 5 | 孙七 | 2 |
+----+------+--------+

1.内连接:在每个表中找出符合条件的共有记录。[x inner join y on...]
select t.,s. from teacher t inner join student s on t.id=s.tea_id;

+----+--------+----+------+--------+
| id | name | id | name | tea_id |
+----+--------+----+------+--------+
| 1 | 刘德华 | 1 | 张三 | 1 |
| 1 | 刘德华 | 2 | 李四 | 1 |
| 1 | 刘德华 | 3 | 王五 | 1 |
| 2 | 张学友 | 4 | 赵六 | 2 |
| 2 | 张学友 | 5 | 孙七 | 2 |
+----+--------+----+------+--------+

2.外连接有三种方式:左连接,右连接和全连接。
2.1 左连接:根据左表的记录,在被连接的右表中找出符合条件的记录与之匹配找不到与左表匹配的,用null表示。[x left [outer] join y on...]
select t.,s. from teacher t left outer join student s on t.id=s.tea_id;
+----+--------+------+------+--------+
| id | name | id | name | tea_id |
+----+--------+------+------+--------+
| 1 | 刘德华 | 1 | 张三 | 1 |
| 1 | 刘德华 | 2 | 李四 | 1 |
| 1 | 刘德华 | 3 | 王五 | 1 |
| 2 | 张学友 | 4 | 赵六 | 2 |
| 2 | 张学友 | 5 | 孙七 | 2 |
| 4 | 黎明 | NULL | NULL | NULL |
+----+--------+------+------+--------+

2.2 右连接:根据右表的记录,在被连接的左表中找出符合条件的记录与之匹配,
select t.,s. from teacher t right outer join student s on t.id=s.tea_id;

+------+--------+----+------+--------+
| id | name | id | name | tea_id |
+------+--------+----+------+--------+
| 1 | 刘德华 | 1 | 张三 | 1 |
| 1 | 刘德华 | 2 | 李四 | 1 |
| 1 | 刘德华 | 3 | 王五 | 1 |
| 2 | 张学友 | 4 | 赵六 | 2 |
| 2 | 张学友 | 5 | 孙七 | 2 |
+------+--------+----+------+--------+

2.3 全连接:返回符合条件的所有表的记录,没有与之匹配的,用null表示(结果是左连接和右连接的并集)
select t.,s. from teacher t full outer join student s on t.id=s.tea_id;

3 交叉连接(结果是笛卡尔积)
select t.,s. from teacher t cross join student s;

+----+--------+----+------+--------+
| id | name | id | name | tea_id |
+----+--------+----+------+--------+
| 1 | 刘德华 | 1 | 张三 | 1 |
| 2 | 张学友 | 1 | 张三 | 1 |
| 4 | 黎明 | 1 | 张三 | 1 |
| 1 | 刘德华 | 2 | 李四 | 1 |
| 2 | 张学友 | 2 | 李四 | 1 |
| 4 | 黎明 | 2 | 李四 | 1 |
| 1 | 刘德华 | 3 | 王五 | 1 |
| 2 | 张学友 | 3 | 王五 | 1 |
| 4 | 黎明 | 3 | 王五 | 1 |
| 1 | 刘德华 | 4 | 赵六 | 2 |
| 2 | 张学友 | 4 | 赵六 | 2 |
| 4 | 黎明 | 4 | 赵六 | 2 |
| 1 | 刘德华 | 5 | 孙七 | 2 |
| 2 | 张学友 | 5 | 孙七 | 2 |
| 4 | 黎明 | 5 | 孙七 | 2 |
+----+--------+----+------+--------+

4自连接:连接的表都是同一个表,同样可以由内连接,外连接各种组合方式,按实际应用去组合。
SELECT a.,b. FROM table_1 a,table_1 b WHERE a.[name]=b.[name] --连接的两表是同一个表,别称不一样

SELECT a.,b. FROM table_1 a LEFT JOIN table_1 b ON a.[name]=b.[name] --左连接写法

相关文章

  • 数据库--内连接、外连接、自连接

    语法:内连接 [x inner join y on...]右外连接 [x right outer join y o...

  • 数据库的连接

    方式 数据库的连接方式有三种:内连接外连接左连接右链接 数据库 内连接 1.1.等值连接:在连接条件中使用等于号(...

  • 多表查询和事务

    多表查询包括内连接和外连接内连接: 隐式内连接 显示内连接 外连接: 左外连接 右外连接 左外连接: 在内连接的基...

  • 连接查询

    1.分类 内连接等值非等值自连接 外连接左外右外全外(mysql不支持) 2.语法 1、内连接 语法:select...

  • 数据库的表连接

    数据库中的表连接包括三种:内连接、外连接、交叉连接 t1(表): t2(表): 内连接(inner join) 查...

  • MySQL中的多表连接查询

    多表连接分为交叉连接,内连接,外连接,自连接。连接条件分为等值连接,非等值连接(区别就是连接符号是否是“=”) 学...

  • 2018-08-29-Oracle学习第三天

    1、-- 多表连接 -- 1)内连接 -- 2)外连接 -- 3)自连接 -- 笛卡尔集(了解)-- 开发中,需要...

  • 数据库连接查询

    三种连接查询 内连接 左外连接、右外连接、全外连接 交叉连接 高级引用

  • MySQL学习笔记-连接

    多表查询经常用到连接,各种连接之间的区别应该注意总结。 本文来分享一下内连接、外连接、左连接、右连接、等值连接、自...

  • 数据库内连接、外连接和内连接

    这个知识点每次面试都会被问到,这个问题其实上用咱们高中学习的知识简单的化三个小图表就能一目了然: left joi...

网友评论

      本文标题:数据库--内连接、外连接、自连接

      本文链接:https://www.haomeiwen.com/subject/mlzlzttx.html