数据库联合查询—小知识大攻略

php中文网
发布: 2016-06-07 15:15:46
原创
1432人浏览过

无论是在学习耿老师视频,还是自考数据库原理,我们都接触到联合查询这部分,但在实践中并没有过多的去应用。现在做项目才真正认识到理论运用到实践的重要性。 一、概念 联合查询是根据每个表之间的逻辑关系从两个或多个表中检索数据 , 而这逻辑关系则是每个

       

       无论是在学习耿老师视频,还是自考数据库原理,我们都接触到联合查询这部分,但在实践中并没有过多的去应用。现在做项目才真正认识到理论运用到实践的重要性。


一、概念


    联合查询是根据每个表之间的逻辑关系从两个或多个表中检索数据,而这逻辑关系则是每个表之间共同的列的关联性,这也是关系数据库查询的最主要的特征.  

      数据表的连接有:

     1、内连接

     2、外连接

  1)左连接(左边表不限制)

  2)右连接(右边表不限制)

  3)全外连接(不受限制)

     3、交叉连接


二、实践


建立两张表,一张学生管理表(T_ManageStudent)和学生信息表(T_StudentInfo

1:(学生管理表):

数据库联合查询—小知识大攻略


2:(学生信息表)

数据库联合查询—小知识大攻略


1、内连接

两表进行比较,满足连接条件的组合起来作为结果

语句:

<span>方1:
   select dbo.T_ManageStudent.编号 as 编号1,dbo.T_ManageStudent.姓名,
   dbo.T_StudentInfo.编号 as 编号2,dbo.T_StudentInfo.职务
   from T_ManageStudent inner join T_StudentInfo  on 
   T_ManageStudent.编号=T_StudentInfo.编号 </span>
登录后复制

<span>方2:
   select a.编号 as 编号1,a.姓名,b.编号 as 编号2,b.职务
   from T_ManageStudent as a inner join T_StudentInfo as b on 
   a.编号=b.编号</span>
登录后复制

结果:

数据库联合查询—小知识大攻略

 

2、外连接


  1)左连接(左边表不限制)

     返回结果集包含T_ManageStudent中所有记录,不仅仅是连接字段匹配的记录。如果T_ManageStudent中某条记录在T_StudentInfo中没有匹配记录,则结果集相应记录有关T_StudentInfo部分为NULL

        语句:

<span>方1:
   select dbo.T_ManageStudent.编号 as 编号1,dbo.T_ManageStudent.姓名,
   dbo.T_StudentInfo.编号 as 编号2,dbo.T_StudentInfo.职务 from
   T_ManageStudent left join T_StudentInfo  on T_ManageStudent.编号=T_StudentInfo.编号 
方2:
    select a.编号 as 编号1,a.姓名,b.编号 as 编号2,b.职务
    from T_ManageStudent as a left join T_StudentInfo as b on a.编号=b.编号
</span>
登录后复制


怪兽AI知识库
怪兽AI知识库

企业知识库大模型 + 智能的AI问答机器人

怪兽AI知识库 51
查看详情 怪兽AI知识库

        结果:

数据库联合查询—小知识大攻略

 

  2)右连接(右边表不限制)


    返回结果集包含T_StudentInfo中所有记录,不仅仅是连接字段匹配的记录。如果T_StudentInfot中某条记录在T_ManageStudent中没有匹配记录,则结果集相应记录有关T_ManageStudent部分为NULL

语句:

<span>方1:
   select dbo.T_ManageStudent.编号 as 编号1,dbo.T_ManageStudent.姓名,
   dbo.T_StudentInfo.编号 as 编号2,dbo.T_StudentInfo.职务 from
   T_ManageStudent right join T_StudentInfo  on T_ManageStudent.编号=T_StudentInfo.编号 
方2:
   select a.编号 as 编号1,a.姓名,b.编号 as 编号2,b.职务
   from T_ManageStudent as a right join T_StudentInfo as b on a.编号=b.编号
</span>
登录后复制


结果:

数据库联合查询—小知识大攻略

  3)全外连接(不受限制)


返回结果集包含T_ManageStudentT_StudentInfo所有匹配和不匹配的记录

语句:

<span>方1:
   select dbo.T_ManageStudent.编号 as 编号1,dbo.T_ManageStudent.姓名,
   dbo.T_StudentInfo.编号 as 编号2,dbo.T_StudentInfo.职务 from
   T_ManageStudent full join T_StudentInfo  on T_ManageStudent.编号=T_StudentInfo.编号 </span>
登录后复制

<span>方2:
  select a.编号 as 编号1,a.姓名,b.编号 as 编号2,b.职务
  from T_ManageStudent as a full join T_StudentInfo as b on a.编号=b.编号
</span>
登录后复制


结果:

数据库联合查询—小知识大攻略

 3、交叉连接


情况1(无where):

       交叉连接将差生连接涉及的表的笛卡儿积,第一个表的行乘以第二个表的行等于笛卡儿积结果集的大小

情况2(有where):

       同内连接一样

       语句:

<span>select T_ManageStudent.编号 as 编号1,T_ManageStudent.姓名,

T_StudentInfo.编号 as 编号2 from T_ManageStudent cross join T_StudentInfo 
</span>
登录后复制

       结果:

数据库联合查询—小知识大攻略

热门游戏推荐
热门游戏推荐

最近有什么好玩的游戏?最近哪些游戏比较好玩?这里为大家带来热门游戏合集,汇聚了最新最好玩的高分爆款游戏,还在为不知道玩什么游戏而烦恼的玩家,快来保存下载体验吧!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号