MySQL-多表查询

本文详细介绍了多表查询的四种主要方法:隐式查询、内连接查询、外连接查询(包括左外和右外连接)以及交叉查询。通过实例展示了如何在SQL中执行这些查询,特别是针对学生表和成绩表的查询操作,帮助理解如何根据特定条件从多个表中获取所需数据。
摘要由CSDN通过智能技术生成

        如果要查询多个表中的数据,就需要使用多表查询。多表查询有多种方法,隐式查询链接查询(包括外连接查询内连接查询)、交叉查询


目录

 隐式查询

内链接查询

外链接查询

 交叉查询

全链接查询



例如:

result表
student表

 在如上两张表中,如果要查询 result 表中 studentResult 字段值大于80的学生姓名 studentName ,此时就要使用多表查询。

SELECT student.studentName,result.studentResult
FROM student,result
WHERE student.studentNo = result.studentNo
			AND result.studentResult > 80

 隐式查询

格式

SELECT 列名1,列名2,...
FROM 表1,表2
WHERE 表1.主键列 = 表2.主键列
	  AND 限制条件

隐式查询中,需要注意:在 WHERE 语句中必须写出  表1.主键列 = 表2.主键列 ;在所有的链接查询中,如果两个表有相同的列,则列之前必须加上表名,若无相同列则可以省略。 

内链接查询

格式

SELECT 列名1,列名2
FROM 表名1
INNER JOIN  表名2 
ON 主键表主键列 = 外键表的外键列

例如, 查询 result 表中 studentResult 字段值大于80的学生姓名 studentName 

SELECT studentName,studentResult
FROM student
INNER JOIN result
ON student.studentNo = result.studentNo

外链接查询

格式

SELECT 列名1,列名2,...
FROM 表1
LEFT(RIGHT) JOIN 表2
ON 表1.主键 = 表2.主键

 JOIN 前的LEFT 和 RIGHT ,若为LEFT , 则表示以左表为主表,查询右表;若为RIGHT , 则表示以右表为主表,查询左表。

例如, 左外链接查询 result 表中 studentResult 字段值大于80的学生姓名 studentName 

SELECT student.studentName,result.studentResult
FROM result
LEFT JOIN student
ON student.studentNo = result.studentNo
WHERE result.studentResult > 80

例如, 右外链接查询 result 表中 studentResult 字段值大于80的学生姓名 studentName 

SELECT student.studentName,result.studentResult
FROM student
RIGHT JOIN result
ON student.studentNo = result.studentNo
WHERE result.studentResult > 80

 交叉查询

交叉查询会产生笛卡尔积,在实际的应用中应该避免这种情况。

SELECT 列名1,列名2,...
FROM 表名1
CROSS JOIN 表名2

全链接查询

格式

SELECT 表名1.列名1,表名1.列名2,...
FROM 表名1
UNION
SELECT 表名2.列名1,表名2.列名2,...
FROM 表名2;

全链接查询中,UNION的作用是去除重复数据,UNION ALL 的作用是不去除重复数据。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值