数据库之多表查询

本文深入讲解了SQL中各种连接查询的使用方法,包括内连接、左外连接、右外连接和自连接等,通过实例展示了如何有效查询多表数据,避免笛卡尔积现象,以及如何利用连接条件和别名提高查询效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需求:查询学生成绩以及学生(显示学生的姓名和成绩)

SELECT english,stuName from result student;

交叉连接查询 不推荐 产生笛卡尔成绩现像 ( 4*4=16)

需求:查询学生以及学生的成绩

多表查询的规则:1确定查询那些表 2 确定哪些字段 3 表与表之间连接的条件(规律:连接条件数量是表数量-1)

2内连接查询:只有满足条件的结果才会显示(使用最频繁)

select stuName ,* 

from student,result

where result.stuId=student.id;

内连接的另一种语法

SELECT empName,deptName

FROM employee

INNER JOIN dept

ON employee.deptId=dept.id;

 

 

3使用别名

select e.stuName,d.math

from student e inner join result d

on e.id = d.stuid;

需求 查询学生的成绩

预期 结果 

张三  80 86

左外连接查询 :使用左边表的数据去匹配右边表的数据,如果符合连接条件则结果显示 ,如果不符合连接条件则显示null

--(注意左外连接查询:左表的数据一定会显示)

select e.stuname , d.math 

from student e

left outer join result d

on e.id = d.stuid;

右外连接: 使用右表的数据去匹配左表的数据,如果符合连接条件则显示,如果不符合则显示Null (注意右外连接右表的数据一定会显示)

select e.student,d.math

from result e

right outer join student e

on e.id=d.stuid;

 

自连接查询

查询 成绩 及其学生 ;

 

select e.math ,b.math 

from result e

lift outer join result b

on e.bossid=b.id;                      其中添加了一个字段 bossid 

转载于:https://www.cnblogs.com/qmk-716/p/9693931.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值