内连接,左/右(外)连接,全(外)连接
一,内连接语法:
select 列 from 表1 inner join 表2 on 连接条件;
说明:组合两个表中的记录,返回关联字段相符的记录,也就是返回两个表的交集(阴影)部分。
二、左连接(左外连接)
关键字:left join on / left outer join on
语句:select * from a_table a left join b_table b on a.a_id = b.b_id;
执行结果:
说明:
left join 是left outer join的简写,它的全称是左外连接,是外连接中的一种。
左(外)连接,左表(a_table)的记录将会全部表示出来,而右表(b_table)只会显示符合搜索条件的记录。右表记录不足的地方均为NULL。
三、右连接(右外连接)
关键字:right join on / right outer join on
语句:select * from a_table a right outer join b_table b on a.a_id = b.b_id;
执行结果:
说明:
right join是right outer join的简写,它的全称是右外连接,是外连接中的一种。
与左(外)连接相反,右(外)连接,左表(a_table)只会显示符合搜索条件的记录,而右表(b_table)的记录将会全部表示出来。左表记录不足的地方均为NULL。
四、全连接(全外连接)
MySQL目前不支持此种方式,可以用其他方式替代解决。
三表联立示例(表:student,sc,course):mysql> select student.sname,student.sno,b.cname,b.grade fromstudent left outer join(select sc.cno,course.cname,sc.sno,sc.grade from sc left outer join course on sc.cno=course.cno) ``b`` on student.sno=b.sno;
代码解释:mysql> select student.sname,student.sno,b.cname,b.grade from联立后面生成的新表(联立两个表生成一个新表)起别名为 ``b``on student.sno=b.sno;
注意:两个表联立后派生的表若还想再次使用必须起个别名,否则会报错:Every derived table must have its own alias
每个派生的表必须有自己的别名
+—————-+———-+———————+———-+
| sname | sno | cname | grade |
+—————-+———-+———————+———-+
| 张力 | 08001 | 高等数学 | 0100 |
| 张力 | 08001 | 信息系统 | 0095 |
| 张力 | 08001 | 操作系统 | 0090 |
| 张力 | 08001 | 数据处理 | 0100 |
| 李丽 | 08002 | 高等数学 | 0098 |
| 李丽 | 08002 | 信息系统 | 0000 |
| 赵海 | 08003 | 数据库 | 0099 |
| 赵海 | 08003 | 高等数学 | 0080 |
| 赵海 | 08003 | 信息系统 | 0098 |
| 张那 | 08004 | 数据库 | 0090 |
| 刘晨 | 08005 | C语言 | 0097 |
| 刘晨 | 08005 | 高等数学 | 0037 |
| 刘丹丹 | 08006 | 信息系统 | 0000 |
| 刘立 | 08007 | NULL | NULL |
| 王江 | 08008 | 数据库 | 0050 |
| 王江 | 08008 | 信息系统 | 0080 |
| 高晓 | 08009 | 数据库 | 0089 |
| 高晓 | 08009 | 操作系统 | 0090 |
| 张丽 | 08010 | 数据结构 | 0000 |
| 郭校长 | 08000 | NULL | NULL |
| 尹延龙 | 08011 | NULL | NULL |
| 张家兴 | 08012 | NULL | NULL |
| 赵博润 | 08013 | NULL | NULL |
| 付宇 | 08014 | NULL | NULL |
| 张国栋 | 08015 | NULL | NULL |
| 付宇 | 08016 | NULL | NULL |
| 汪科 | 08017 | NULL | NULL |
| 程广彬 | 08018 | NULL | NULL |
| 张三 | 08019 | NULL | NULL |
| 闫莹莹 | 08020 | NULL | NULL |
| 郭雪 | 08021 | NULL | NULL |
| 郭陆振 | 8022 | NULL | NULL |
+—————-+———-+———————+———-+
