连表查询join使用方法详解

1.数据查询时很多时候需要连表,查询出来的内容则包含2个表中的列内容,这个时候就需要用到连表,连表又分为左连接、右连接、内连接;
这里写图片描述
这里写图片描述
2.将上图中的article和category表连表查询,查询结果中包含cate_name列:
这里写图片描述
3.上图中使用左连接的方式可以完成功能,可惜美中不足的是art_id=20的那一行因为没有匹配的值则默认使用了NULL填充,这和左查询的机制有关!
注意:左查询是以左表为准(对应图中的article表),逐行在右表中进行筛选,如果有匹配到的值则正常显示,如果没有则用null填充;
同理,右查询也是同样的道理,下面语句相比左查询会正常显示server的值,但是会将匹配不到的art_id、title等使用null填充,左右查询可以相互转换!推荐实例中使用左查询,更符合人为习惯也更好理解!

  select art_id,title,author,article.cate_id,cate_name
  from
  article right join category 
  on category.cate_id=article.cate_id

4.可是如何剔除这些null值的行呢,这个时候就需要用到内连接inner join:

  select art_id,title,author,article.cate_id,cate_name
  from
  article inner join category 
  on category.cate_id=article.cate_id

iner join会提取出2张表的共同交集;

小结:数据表的意义类似于数学中的集合(set),当A表中有m列M个元素(行),B表中有n列N个元素(行),则A和B表的集合就会有M*N个元素(集合的唯一性保证);可以使用如下sql语句做实验:

select * from article,category;

两表的集合共有m+n列以及M*N个元素,因为实际中我们想要过滤那些我们不需要的元素(两表中cate_id不相等的行),所以才会用到连表查询

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值