联表查询----内连接、外连接

联表查询–内连接、左外连接、右外连接、完全外连接

1.说明:联表查询可实现两个或多个表之间的连接查询,一般用于有主外键关系表之间的连查询,这里拿两个有主外键关系的表来举例说明联表查询的使用。
student表:其中classid为外键
这里写图片描述
class表:
这里写图片描述

2.内连接查询—查询出学生的所有信息

SELECT * FROM student a,class b WHERE a.classid = b.classid;

代码说明:其中a和b是给表取得别名,方便后边调用表中的属性。
查询结果如下:
这里写图片描述
内连接查询特点:只查询满足条件的结果

3.左外连接查询—查询出学生的所有信息
标准sql 92语法:LEFT JOIN 表名 ON 条件

SELECT * FROM student a LEFT JOIN class b ON a.classid = b.classid;

Oracle(+)语法:左表字段 = 右表字段(+)

SELECT * FROM student a,class b WHERE a.classid = b.classid (+); 

代码说明: Oracle(+)语法仅Oracle数据库支持,两种查询结果一样
查询结果如下:
这里写图片描述
左外连接特点: 从查询结果可以看出,查询出来的不仅是满足条件的结果,还包含左表student表中所有不满足条件的结果,class表的数据以null显示。

4.右外连接查询:—查询出学生的所有信息
标准sql 92语法:RIGHT JOIN 表名 ON 条件

SELECT * FROM student a RIGHT JOIN class b ON a.classid = b.classid;

Oracle(+)语法:左表字段(+) = 右表字段

SELECT * FROM student a,class b WHERE a.classid(+) = b.classid ; 

代码说明: Oracle(+)语法仅Oracle数据库支持,两种查询结果一样,注意Oracle(+)语法中(+)的位置,左外连接时在 = 的右边,右外连接时在 = 的左边。
查询结果如下:
这里写图片描述
右外连接特点: 从结果可以看出,右外连接查询结果不仅包含满足条件的结果,还包含右表class中所有不满足条件的结果,左表中的数据以null显示。

5.完全外连接 —查询出学生的所有信息

SELECT * FROM student a FULL OUTER JOIN class b ON a.classid = b.classid;

代码说明: MySQL数据库不支持完全外连接,Oracle数据库,其他数据库没有研究过,学习其他数据库的可以试试。
完全外连接特点: 查询结果不仅包含满足条件的结果,还包含左表中不满足条件的所有结果,右表中的数据以null显示,也包含右表中所有不满足条件的结果,左表数据以null显示。

—以上仅为个人学习心得,仅供参考。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值