最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

数据库中多表的连接

来源:动视网 责编:小采 时间:2020-11-09 07:35:33
文档

数据库中多表的连接

数据库中多表的连接:连接数据库中的表进行查询、建立视图,可以大大提高去查询数据库数据的效率。连接表进行查询实际上是通过各个表之间共同列的关系来查询数据的,他是关系数据查询最重要的特性。 数据库中的多表的连接分以下几种: 我会按照思维导图中的顺序从上到下,依次去
推荐度:
导读数据库中多表的连接:连接数据库中的表进行查询、建立视图,可以大大提高去查询数据库数据的效率。连接表进行查询实际上是通过各个表之间共同列的关系来查询数据的,他是关系数据查询最重要的特性。 数据库中的多表的连接分以下几种: 我会按照思维导图中的顺序从上到下,依次去


1.2.右连接

1.2.1关键字:right join或者right outer join

1.2.2结果集描述:结果集中包括了right join子句中右表的所有行,如果右表中的某行在左表中没有匹配,那么对应的左表的行为空值null

1.2.3 sql语句及执行结果:

select * from T_N right join T_S on T_N.id=T_S.id 
执行结果
T_N.id name T_S.id score
1 sun 1 90
3 zhang 3 70
null null 4 80

1.3.完整外部连接

1.3.1关键字:full join或者full outer join

1.3.2结果集描述:结果集中包括了两个表的所有行,如果一个表中的某行在另一个表中没有匹配,那么对应的表的行为空值null。

1.3.3sql语句及执行结果:

select * from T_N full join T_S on T_N.id=T_S.id 
执行结果
T_N.id name T_S.id score
1 sun 1 90
3 zhang 3 70
5 zhao null null
null null 4 80

2.内连接

2.1关键字:join或者inner join

2.2结果集描述:结果集中不包含两个表之间没有匹配的行,通俗点说,将那些带有null值的行去掉。

2.3 sql语句以及执行结果

select * from T_N join T_S on T_N.id=T_S.id 
执行结果
T_N.id name T_S.id score
1 sun 1 90
3 zhang 3 70

3.交叉连接

3.1关键字:cross join

3.2结果集描述:结果集中包含了第一个表的行数乘以第二个表的行数等于笛卡尔积结果集的大小。通俗点说就是第一个表中的每一行与另一个表中的每一行按照从上到下的顺序依次的连接。

3.3 sql语句及执行结果

select * from T_N cross join T_S 
执行结果
T_N.id name T_S.id score
1 sun 1 90
3 zhang 1 90
5 zhao 1 90
1 sun 3 70
3 zhang 3 70
5 zhao 3 70
1 sun 4 80
3 zhang 4 80
5 zhao 4 80

最后的总结

在做机房收费系统vb.net版的时候,自己碰到这样一个问题:让充值表和消费表,两个表建立一个视图,用来计算某个卡号上面的余额,但是问题是很可能有这样一种情况:卡号充值了以后,可能从来就没有消费过,所以这个卡号在消费表中的记录就是空的,当时我就在想,怎样让这个两个表连起来,在消费表里有空值的直接补null值,经过查资料(尤其是自考数据库那本书),发现了用外连接就可以做到。就是简单的换了一个关键字。这样我就建好了一个特别能提高自己效率的视图,里面的字段是已经计算好的充值总和以及消费总和,我直接去查询这个视图。就可以得到相应结果。

//建立的有外连接的充值总和、消费总和的视图
SELECT Recharge_Info.CardID, Line_info.cardID AS LcardID, SUM(Recharge_Info.AddMoney) AS sumAddMoney, SUM(Line_info.consume) AS sumConsume
FROM Line_info RIGHT OUTER JOIN Recharge_Info ON Line_info.cardID = Recharge_Info.CardID
GROUP BY Recharge_Info.CardID, Line_info.cardID

在做第一遍机房收费系统的时候,没有用到外连接和视图,我大概描述那个时候计算的卡的余额的需求:先要去查充值表,将充值表的充值金额计算总和。再去查消费表,再去计算消费表的消费金额总和,再通过减法运算,才能得到最后的结果。这样要对两个表进行查询,而且还要进行运算。

两者比较一下,是前者简单,而效率高。

但是学习的过程,就应该先经历那些效率低,特别复杂的过程,只有通过这样一个过程,才能让自己渴望去改变自己自己的思路,从而才能获得更多的知识。

文档

数据库中多表的连接

数据库中多表的连接:连接数据库中的表进行查询、建立视图,可以大大提高去查询数据库数据的效率。连接表进行查询实际上是通过各个表之间共同列的关系来查询数据的,他是关系数据查询最重要的特性。 数据库中的多表的连接分以下几种: 我会按照思维导图中的顺序从上到下,依次去
推荐度:
标签: 建立 查询 中的
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top