天天看点

SQL中连接查询(INNER JOIN,LEFT JOIN,RIGHT JOIN,FULL JOIN)区别

        1.INNER JOIN(内连接):

//语法
select s.stuid,s.stuname,c.no from stu s inner join class c on s.id = c.id

//下面这种写法和内连接查询结果一样,根据数据量大小使用
select s.stuid,s.stuname,c.no from stu s,class c where s.id = c.id
           

        查询结果:  

stuid stuname no
001 张三 001001
002 李四 001002

        说明:两表进行内连接查询时,只显示两表中匹配的结果集

        2.LEFT JOIN(左连接):

//语法
select * from stu s left join class c on s.id = c.id
           

        查询结果:  

stuid stuname no
001 张三 001001
002 李四 001002
003 王五

        说明:在两表进行左连接查询时,会返回左表所有的行,右表中没有匹配的记录也会返回

        3.RIGHT JOIN(右连接)

//语法
select * from stu s right join class c on s.id = c.id
           

        查询结果: 

stuid stuname no
001 张三 001001
002 李四 001002
001004

        说明:在两表进行右连接查询时,会返回右表所有的行,左表中没有匹配的记录也会返回

        4.FULL JOIN(全连接)

//语法
select * from stu s full join class c on s.id = c.id
           

        查询结果: 

stuid stuname no
001 张三 001001
002 李四 001002
003 王五
001004

        说明:在两表进行全连接查询时,返回左表和右表中所有匹配和没有匹配的行