SQL的JOIN语句
来源:互联网 发布:最后一炮优化很烂 编辑:程序博客网 时间:2024/05/18 01:28
在使用数据库,进行查询的时候,经常会出现表中信息不全,需要连接另一张表来查询需要的数据。SQL的连接主要分为内连接、外连接。
使用如下两个表进行演示。
- 学生表(student)
- 班级(class)
内连接(INNER JOIN)
单独使用join的话,默认为内连接。内连接会只会查询出两个表匹配到的条目,没有匹配上的条目不会在结果集中出现。使用如下语句进行查询。
select * from student std join class claon std.cid = cla.cid
查询结果如下,会将匹配到的连接全部查询出来。
外连接
外连接的结果集则不仅仅是匹配到的行,也可以将一些没有关联匹配到的行显示出来。外连接分为左外连接、右外连接和全外连接。
左外连接(LEFT JOIN或LEFT OUTER JOIN)
左外连接可以保证关联时,左表的完整性。会查询出关联中左表(join左边,这里为std)的全部条目,若右表未匹配到关联条目,则为null。
select * from student std left join class claon std.cid = cla.cid
查询结果如下,会将左表全部查询出来,如果未匹配到连接,则右表为null。
右外连接(RIGHT JOIN或RIGHT OUTER JOIN)
右外连接是左外连接的反向连接,可以保证右表的完整性,若左表未匹配到关联条目则为null。因此a left join b
和b right join a
结果集相同,只是左右位置互换。
select * from student std right join class claon cla.cid = std.cid
查询结果如下,会将右表全部查询出来,如果未匹配到连接,则左表为null。
全外连接(FULL JOIN 或 FULL OUTER JOIN)
全外连接可以同时保证左表和右表的完整性,查询结果返回两张表的所有行,若某行在另一张表中没有匹配行时,则该行在另一个表中的值为null。
select * from student std full join class claon cla.cid = std.cid
查询结果如下。
PS:mysql不支持FULL JOIN
,可用LEFT JOIN UNION RIGHT JOIN
替代
笛卡儿积(CROSS JOIN)
笛卡儿积,又称交叉连接。会返回两张表的每一条数据的所有组合,如果在SQL中关联却没有给出关联条件,会产生笛卡儿积。也可以使用交叉连接,CROSS JOIN来查询笛卡儿积。
select * from student std CROSS JOIN class cla
查询结果如下,结果集为两表的乘积。
阅读全文
0 0
- SQL的JOIN语句
- SQL的JOIN语句
- sql语句的join用法
- sql语句的join用法
- SQL语句的 left join、right join、inner join区别
- sql语句中inner join,left join,right join,full join,cross join之间的区别
- sql语句的联合查询(join 用法)
- sql语句的联合查询(join 用法)
- SQL语句中JOIN的用法
- 小议SQL语句中JOIN的用法
- SQL语句中JOIN的用法
- SQL语句中JOIN的用法
- [转]SQL语句中JOIN的用法
- SQL语句中JOIN的用法
- sql语句中JOIN ON 的使用
- 一个关于JOIN的SQL语句
- SQL语句各种JOIN的区别
- 关于sql的连接(join)语句
- 第十五周LeetCode
- Bootstrap(三十四)
- 最小单片机系统
- 查看Fedora版本
- java中Buffered读取图片的问题
- SQL的JOIN语句
- 数据库的备份与恢复
- goldengate_mysql_kafka同步
- 多维数组空白字段检测
- 求a/b的小数点后某个具体的数值(Position in Fraction)
- 18.springboot处理请求数据,使用html页面返回
- Java将小写金额转换成大写
- java中各种流的详细使用
- ubuntu软件包下载