内连接、全链接、左外连接、右外连接、交叉连接

今天看到Hibernate的HQL中有关连接查询的知识, 又翻了翻萨师煊老师的《数据库系统概论》参考了几篇博客,总结下关于数据库连接(join)的知识点。

表a
idname
1张三
2李四
3王五
表b
idscoreforeign_id
1951
2651
3792
4884

 

内连接(自然连接)

就是简单的根据两个表的连接查询,如连接a、b查询有成绩的学生信息:

select a.name,  b.score from   a   inner   join   b   on   a.id=foreign_id      

(inner是可以省略的)

当然可以进行 < > = 的判断

外连接

全连接(full join)   
全联接结果为左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择属性为null否则显示数据

 select   a.name, b.score   from   a   full   join   b     on   a.id=b.foreign_id  

mysql是没有全连接的使用union结合左连接与有连接实现

左外链接 (left join)
左外联接的结果包括左表的所有行,如果右表没有匹配值则为null

select   a.name, b.score   from   a   left   join   b     on   a.id=b.foreign_id  

右外链接 (right join)
右外联接和左外链接相反,结果包含右表的所有行,如果左表没有匹配值则为null

select   a.name, b.score   from   a   right   join   b     on   a.id=b.foreign_id  

 

交叉连接

交叉连接的结果是左表与右表所有的行的组合,如左表x行,右表y行,则结果为x*y行。交叉连接又称笛卡尔积。

select *  from a, b

or

select *  from a cross join  b

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值