mysql地址连级查询怎么写_MySql高级查询--连接查询

前言

我们使用SQL查询不能只使用很简单、最基础的SELECT语句查询。如果想从多个表查询比较复杂的信息,就会使用高级查询实现。

常见的高级查询包括多表连接查询、内连接查询、外连接查询与组合查询等,今天我们先来学习最常用、面试也很容易被问到的连接查询。

我们今天以一个简单的学生信息表(学生ID、学生姓名、学生性别)与一个学生成绩表(学生ID、学生成绩、成绩等级)作演示:

student_info表:

996c51432818f256a7d809e6ba9d5696.png

student_score表:

c8156b6a9bf77e94886ef40b20490b02.png

一、内连接(INNER JOIN)

1、等值连接

概述:指使用等号"="比较两个表的连接列的值,相当于两表执行笛卡尔后,取两表连结列值相等的记录。

语法:SELECT 列FROM 表1

INNER JOIN 表2

ON 表1.列 = 表2.列

示例:

SELECT A.*, B.*FROM student_info A

inner join student_score B

ON A.student_id = B.student_id

结果:

6fd15016eda674e9f4b5688d674cd687.png

2、非等值连接

概述:指使用大于号">"或小于号"

语法:

SELECT 列FROM 表1 INNER JOIN 表2ON 表1.列 <> 表2.列

示例:SELECT A.*, B.*FROM student_info A

inner join student_scoreON A.student_id > B.student_id

结果:

dc66730a70c038758d9a2644c411df99.png

二、外联结

1、左外连接(LEFT OUTER JOIN)

概述:指将左表的所有记录与右表符合条件的记录,返回的结果除内连接的结果,还有左表不符合条件的记录,并在右表相应列中填NULL。

示例:SELECT A.*, B.*

FROM student_info A left join student_score B

ON A.student_id = B.student_id

结果:

e21200ca27a26e51078c3b9837cc6090.png

2、右外连接(RIGHT OUTER JOIN)

概述:与左外连接相反,指将右表的所有记录与左表符合条件的记录,返回的结果除内连接的结果,还有右表不符合条件的记录,并在左表相应列中填NULL。

示例:SELECT A.*, B.*FROM student_info A right join student_score BON A.student_id = B.student_id

结果:

57e1842a4bf79c1aebacb1d9a4b21a13.png

3、全外连接(FULL JOIN)——MySQL不支持

概述:指将左表所有记录与右表所有记录进行连接,返回的结果除内连接的结果,还有左表与右表不符合条件的记录,并在左表与右表相应列中填NULL。

三、自然连接(NATURAL JOIN)

概述:指自动将表中相同名称的列进行记录匹配。

示例:SELECT A.*, B.*FROM student_info A natural join student_score B

结果:

cc7604a8932a7cb3eed0314bc0d9eb0a.png

四、自连接

概述:指用表的别名实现表自身的连接。

示例:SELECT B.*

FROM student_score A, student_score B

WHERE A.student_id = B.student_id

AND B.student_score > 80

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值