MySQL基础语法之多表连接查询

MySQL的多表连接查询

总结了MySQL中对多张表的连接查询
多表查询语法分为 SQL92 语法和 SQL99 语法

SQL92语法

连接查询:也可以叫跨表查询,需要关联多个表进行查询

  • 内连接

基础语法

select 字段,字段,字段,...
from 表名,表名....
where 条件;
	
// 如果觉得表名太复杂,可以给表取个新名

select 字段,字段,字段,...  // (当需要规定要查询哪张表中的字段时需要) 表名.字段
from  表名 新表名,表名 新表名....
where 条件;

如果不加条件的话,会产生笛卡尔积现象

将学生姓名和属于的班级名查询出来 根据两张表的班级 id 相等为条件

select u.name,c.class_name
from user u , class c
where u.class_id = c.class_id 
  • 自连接

基础语法跟内连接一样,不过不是对于两张表的连接,而是对于一张表的连接

select u.name,t.name
from user u , user t
where u.teacher_id = t.id  // 查询学生名字和他对应老师的名字,根据学生的老师id和老师的id相等为条件查询

SQL99语法

  • 内连接

基础语法
跟SQL92的基本内连接语法差不多

select 字段,字段,字段,...
from 表名
inner join 表名  // (一般不加inner关键字)
on 条件
inner join 表名
on 条件;
	
(也可以给表取新表名)

select 字段,字段,字段,...  // (当需要规定要查询哪张表中的字段时需要) 表名.字段
from 表名 新表名
inner join 表名 新表名  // (一般不加inner关键字)
on 条件
inner join 表名 新表名
on 条件;

将学生姓名和属于的班级名查询出来 根据两张表的班级 id 相等为条件

select u.name,c.class_name
from user u
join class c
on u.class_id = c.class_id 
  • 外连接

外连接分为 左外连接右外连接
外连接的一般查询的是当按条件匹配完之后,另一张表还有一些数据没有匹配上,但是需要显示出来,这时候就需要外连接了

基础语法

select 字段,字段,字段,...
from 表名
outer (right/left) join 表名 // (一般不加inner关键字) (如果写的是right那么就是右连接,如果是left那么就是左连接)
on 条件;
	
// (也可以给表取新表名)

select 字段,字段,字段,...  // (当需要规定要查询哪张表中的字段时需要) 表名.字段
from 表名 新表名
outer (right/left) join 表名 新表名  // (一般不加outer关键字) (如果写的是right那么就是右连接,如果是left那么就是左连接)
on 条件;

如何选择是加 right 或 left 呢?

考虑在与自己的需求,想把哪个做为主表,并且如果这个主表在前面就用 left 如果在后面就用 right ,通俗的来说,就是你想将哪一张表没有匹配的数据也显示出来,就用哪张表做主表

查询每个班级对应的老师,如果那个班级没有老师,也要显示出来

select u.teacher_name,c.class_name
from user u
right join class c  // (因为是要将所有班级给显示出来并且 class 表在后面,所以用右连接)(如果将 class 表放前,那么就用左连接)
on u.class_id = c.class_id;

总结

写sql语句一定要有耐心,要仔细,加油!!!

单表查询的操作在这:https://blog.csdn.net/qq_45334037/article/details/117336542

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值