面试排坑指南之SQL join

前言

在面试的时候曾3次踩过了sql join的坑,第一次是校招面试的时候,面的是国内某大行的开发岗,被问到会不会使用sql join,当时直接回答的是不会,只会使用简单的sql操作。第二次面试的是另一大行的测试岗,人家直接问的是left join和right join的区别,这次我事先做了准备吧,说left join查询会显示左表的全部内容,right join会显示右表的全部内容。ok,勉强过关,面试官也没再继续追问下去,如果他继续追问下去我一定原形毕露。两年多过去了,博主从事了QA(Quality Analyist)的工作,每天都在专研怎么写测试用例、怎么实施质量内建、怎么搞自动化测试,平时项目中会用到简单的sql查数据库,之前面试的痛并没有引起我的重视,毕竟第二次我算是敷衍过了。谁曾想到,还有第三次!公司内部为了员工的发展考虑,可以根据自我意愿换业务线,换之前会有一个简单的面试。
面试的同事看了看我的简历说:看你会sql呀?
我:是的,会一些简单的。(不详的预感瞬间飙升)
面试同事:那你知道sql join的一些操作吗?比如inner join。
我:知道一些left join、right join的操作,inner join不清楚。(你看,这像是一个用过join操作的人的回答吗?!)
面试同事:好,那你说一下她们是干嘛的呢?
我:left join查询会显示左表的全部内容,right join会显示右表的全部内容(强撑!)
面试同事:😱(他真的露出了吃惊的表情),说看来你没有真正理解它们的用法呀。
我:嗯嗯是呢,平时没怎么用。(内心os:饶了我吧,我不该强撑说知道的,早点投降不香吗?)
面试同事:888888开始给我讲它们的用法。。。
所以,我痛下决心,要学一下这几个join的用法,发誓不在同一个地方跌倒4次。

前期准备

  1. 安装mysql/oracle
    可参考:https://blog.csdn.net/qq_37924224/article/details/105288363

  2. 创建user表、orders表和order_items表并插入数据,如下图:
    可参考:https://blog.csdn.net/qq_37924224/article/details/105510809

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
4. 理解join的含义
join的意思是连接,对于数据库来说,就是连接两个或以上的表。当什么时候需要连接查询两个表呢?当一个表中的内容不足以表达你需要的内容,而另一个与之相关联的表恰好有你所需的信息。所以join查询的目的就是补充你查询的表中没有的内容。那怎么样将两个表关联起来呢?就需要两个表有相同的字段,即primary key和foreign key。

inner join

inner join/join级联查询两个表时,返回的结果是两个表中均存的记录,可以理解是与关系。如下图所示:
在这里插入图片描述
下面是实际的例子。

例1:inner join查询两张表

  1. 需求:查询下了订单的用户信息及其对应的订单编号。
  2. sql语句:
select user.user_id,
       user.user_name,
       user.user_alias,
       
  • 9
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值