• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

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

mysql 搞代码 4年前 (2022-01-09) 18次浏览 已收录 0个评论

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

本文来源gaodai$ma#com搞$代*码*网

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


一、概念


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

数据表的连接有:

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>

结果:

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>

结果:


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:数据库联合查询—小知识大攻略

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址