我的编程空间,编程开发者的网络收藏夹
学习永远不晚

SQL中的连接操作

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

SQL中的连接操作

本篇内容主要讲解“SQL中的连接操作”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SQL中的连接操作”吧!

利用连接操作,可以根据表与表之间的逻辑联系从两个或多个表中查询数据。

早期的SQL版本,实现连接方法是在from子句中给出连接操作的表名,在where子句中

给出连接条件。

例如,从学生、课程和成绩表中,产生课程的成绩单。from子句列出连接运算的

3个表,where子句给出连接条件。在where子句的条件表达式中包含了连接条件和选择

条件。

      例1 从学生、课程和成绩表中,产生数据库课程的成绩单。SQL语句是:

      select 姓名,课程名,分数

      from学生S,课程C,成绩G

      where S.学号=G.学号AND G.课程号=C.课程号AND C.课程名称='数据库'

·SQL-92提供更丰富的连接操作,包括:内连接、条件连接、自然连接、左外

连接、右外连接、全连接,同时增加了在from子句定义连接条件的方法。SQL-92中from

子句连接的语法格式:

      from <表1> <连接类型> <表2> [on (<连接条件>)]

因此,上述产生学生数据库课程成绩单的SQL语句可以写成:

      select 姓名,课程名,分数

      from 学生S join 成绩G on (S.学号=G.学号)

      join课程C on (G.课程号=C.课程号)

      where C.课程名称='数据库'

&middot; 这种方法不仅简化连接条件的表达方法,更重要是提高查询效率。

   SQL系统处理的逻辑顺序是:

          1、from子句中的连接条件

          2、where子句中的连接条件与选择条件

          3、having子句中的筛选条件

所以,在使用支持SQL-92标准的系统时,建议用from子句定义连接条件。

      关系R和S进行连接操作,且连接条件为P。若连接的结果中只保含R与S在P上相匹

配的元组,这种连接属于内连接(inner join)。用from子句表示内连接的方法:

from R [inner] join S [on (<连接条件>)] 其中,inner可省略。

      自然连接是等值连接的特例。

          &middot;设关系R和S进行连接操作,其连接条件为P。如果P是R与S中连接属性的

等值比较,称为等值连接。

          &middot;若R与S进行等值连接,且R与S的连接属性名相同,称为自然连接。

          &middot;自然连接的实现方法是在内连接的基础上,用select子句消除重复列。

      有关系R和S,R与S的笛卡儿乘积称为交叉连接。交叉连接的实现方法:在from子

句中定义交叉连接类型:from R cross join S。

      关系R与S进行连接操作,连接条件为P。若连接操作的结果中除了R与S在P上内连

接结果之外,还包括左边关系R在内连接操作中不相匹配的元组,而其对应于S的属性赋予

空值,这种连接称为左外连接。左外连接的表示方法:from R left outer join S on

(<连接条件>)

      关系R与S进行连接操作,连接条件为P。若连接操作的结果中除了R与S在P上内连接

结果之外,还包括右边关系S在内连接操作中不相匹配的元组,而其对应于R的属性赋予空值

,这种连接称为右外连接。右外连接的表示方法:from R right outer join S on (<连

接条件>)

      全外连接是左外连接和右外连接的组合应用。全外连接的表示方法:from R full

outer join S on (<连接条件>)

自连接:连接操作可以利用别名的方法实现一个表自身的连接。实质上,这种自身连接方法与

两个表的连接操作完全相似。

      一、内连接

      关系R和S进行连接操作,且连接条件为P。若连接操作的结果中只包含R与S在P上相匹

配的行,这种连接属于内连接(inner join)。用from子句表示内连接的子句:

from R [inner] join S [on (<连接条件>)]

其中,inner可省略。假设有导师与研究生2个表。

例1 查询研究生与其导师的情况。此查询涉及教师和研究生2个表,连接条件是:

<研究生.导师号=教师.教工号>。SQL语句是:

      select *from 研究生A inner join教师B on A.导师号= B.教工号

  也可以写成等价的SQL语句:

      select *

      from 研究生A,教师B

      where A.导师号= B.教工号

      说明:这是一个内连接的例子,查询结果中只包含满足连接条件的4行。

      二、自然连接

      设关系R和S进行连接操作,其连接条件为P。如果P是R与S中连接属性的等值比较,

称为等值连接。若R与S进行等值连接,且R与S的连接属性名相同,称为自然连接。自然连

接是等值连接的特例。自然连接的实现方法是在内连接的基础上,用select子句消除重复

列。

      假设有学生、课程和成绩3个表。例1:根据学生、课程和成绩表的信息,输出"数

据库"课程的成绩单,包括姓名和分数。SQL语句是:

      select 姓名,分数

      from 学生A join 成绩B on(A.学号=B.学号)join 课程C on(B.课号=C.课号)

      where C.课程名='数据库'

等价的SQL语句:

      select 姓名,分数

      from 学生A,成绩B,课程C

      where A.学号=B.学号AND B.课号= C.课号AND C.课程名='数据库'

这是一个自然连接的实例,查询结果中包含满足连接条件的1行,在查询结果中没有重复列。

      三、交叉连接

设有关系R和S,R与S的笛卡儿乘积称为交叉连接。在SQL中,实现交叉连接的方法是在from

子句中定义交叉连接类型:from R cross join S

例1 学生与课程的笛卡儿乘积。

      select *

      from 学生cross join 课程

等价的SQL语句:

      select *

      from 学生, 课程

      四、左外连接

关系R与S进行连接操作,连接条件为P。若连接操作的结果中除了R与S在P上内连接结果之外,

还包括左边关系R在内连接操作中不相匹配的元组,而其对应于S的属性赋予空值,这种连接

称为左外连接(left outer join)。

实现左外连接的SQL子句:from R left outer join S on (<连接条件>)

例1:查询学生选课情况,包括没有选课的学生在内。SQL语句是:

      select A.学号, A.姓名, B.课号, B.分数

      from 学生A left outer join成绩B on (A.学号= B.学号)

例2:查询教师指导研究生的情况,包括不指导研究生的教师。SQL语句是:

      select *

      from 教师A left outer join研究生B on (A.教工号= B.导师号)

这是两个左外连接的实例,查询结果中除了满足连接条件元组的之外,还包含左边关系不满足

连接条件的元组,而其对应的右边属性全部填充NULL。

      五、右外连接

关系R与S进行连接操作,连接条件为P。若连接操作的结果中除了R与S在P上内连接结果之外,

还包括右边关系S在内连接操作中不相匹配的元组,而其对应于R的属性赋予空值,这种连接

称为右外连接(right outer join)。

实现右外连接的SQL子句:from R right outer join S on (<连接条件>)

例1:查询所开课程的选修情况,包括没有任何学生选修的课程。SQL语句是:

      select *

      from 成绩A right outer join 课程B on(A.课号=B.课号)

例2:查询所开课程和学生的学习状况(学号、课程名和分数),其中还包括没有任何学生选修

的课。SQL语句是:

      select 学号, 课程名, 分数

      from 成绩A right outer join 课程B on(A.课号=B.课号)

这是2个右外连接的实例,查询结果中除了满足连接条件元组之外,还包含右边关系不满足连接

条件的元组,而其对应的左边属性全部填充NULL。

      六、全外连接

全外连接(full outer join)是左外连接和右外连接的组合应用。实现全外连接的SQL子句:

      from R full outer join S on (<连接条件>)

      例1:查询研究生和教师的情况,包括没有导师的研究生和没有指导研究生的教师。

SQL语句是:

      select *

      from研究生A full outer join 教师B on (A.导师号=B.教工号)

    这是全外连接的实例,查询结果中除了满足连接条件元组之外,还包含2个关系中不满足

连接条件的元组,并且这些元组对应的属性全部填充NULL。

      七、自连接

连接操作可以利用别名的方法实现一个表自身的连接。实质上,这种自身连接方法与两个表的

连接操作完全相似。假设有教学进度表,其中先修列是本门课程的先修课程。例如,先学习

"数据结构"课程,再学习"数据库"课程。例1:查询每一门课的先修课的先修课。例如,C5的

先修课的先修课是C6。用自连接实现查询,连接条件是:

from 教学进度A join 教学进度B on (A.先修=B.课号)

      select A.课号,B.先修

      from 教学进度A join 教学进度B

      on (A.先修=B.课号)

到此,相信大家对“SQL中的连接操作”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

SQL中的连接操作

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MySQL中的连接操作:内连接、外连接和交叉连接详解

MySQL中的连接操作:内连接、外连接和交叉连接详解在MySQL数据库中,连接操作是一种常用的操作技术,用于将两个或多个表中的数据按照一定的条件进行合并。连接操作可以帮助我们处理复杂的数据查询和分析需求。在MySQL中,我们通常使用内连接、
2023-10-22

ODBC Oracle连接中的批量操作优化

在使用ODBC连接Oracle数据库时,可以考虑进行批量操作优化来提高性能和效率。以下是一些优化方法:使用批量操作:使用批量操作可以减少与数据库的通信次数,提高性能。可以考虑使用Oracle的内置批量操作功能或者通过ODBC驱动程序支持的批
ODBC Oracle连接中的批量操作优化
2024-07-15

SQL中内连接和外连接的区别

在这篇文章中,我们将了解 SQL 中内连接和外连接的区别。内连接子句使用的是“INNER JOIN”和“JOIN”。它返回两个或多个表的组合元组。当没有共同属性时,结果为空。如果元组数量较多,则“INNER JOIN”比“OUTER”工作得
2023-10-22

sql中左连接与右连接的区别

sql 中左连接和右连接主要区别在于连接结果中优先显示哪个表的数据。左连接优先显示左表,若右表无匹配行则填充 null;右连接优先显示右表,若左表无匹配行则填充 null。SQL 中左连接与右连接的区别在 SQL 中,左连接和右连接是连接
sql中左连接与右连接的区别
2024-05-10

怎么连接数据库并执行SQL查询操作

要连接数据库并执行SQL查询操作,可以按照以下步骤进行:选择合适的数据库管理系统(如MySQL、SQL Server、Oracle等)并安装相应的数据库驱动程序。使用编程语言(如Java、Python、C#等)编写代码来连接数据库。以下是一
怎么连接数据库并执行SQL查询操作
2024-04-09

sql中左连接和内连接的区别

左连接与内连接的区别:左连接:返回左表所有行,即使右表中没有匹配的行;右表空值显示为 null。内连接:仅返回左表和右表中具有匹配行的行;若无匹配行,该行会被忽略。性能:左连接较慢,内连接较快。用例:左连接用于获取左表所有数据,即使右表中没
sql中左连接和内连接的区别
2024-05-10

sql中的左连接和右连接的区别

sql 中左连接和右连接的区别在于优先连接的表:左连接优先连接左表,而右连接优先连接右表。因此,当处理包含 null 值的表时,左连接将确保返回左表中的所有行,而右连接将确保返回右表中的所有行,即使在另一表中没有匹配行时也会如此。SQL 中
sql中的左连接和右连接的区别
2024-05-10

sql中的左连接和右连接的关系

在 sql 中,左连接和右连接是两种联接类型:左连接优先显示左表中的所有行,匹配行显示右表数据,不匹配行为 null。右连接优先显示右表中的所有行,匹配行显示左表数据,不匹配行为 null。SQL 中左连接和右连接的关系在 SQL 中,左
sql中的左连接和右连接的关系
2024-05-10

Oracle表连接操作——Hash Join(哈希连接)上

在Oracle中,确定连接操作类型是执行计划生成的重要方面。各种连接操作类型代表着不同的连接操作算法,不同的连接操作类型也适应于不同的数据量和数据分布情况。 无论是Nest Loop Join(嵌套循环),还是Merge Sort Jo
2023-06-06

Oracle表连接操作——Hash Join(哈希连接)下

Hash Join是Oracle CBO时代经常出现的一种连接方式,对海量数据处理时经常出现在执行计划里。本篇的上篇(http://space.itpub.net/17203031/viewspace-697442) 介绍了Hash Jo
2023-06-06

VS连接SQL server数据库及实现基本CRUD操作

这篇文章主要给大家介绍了关于VS连接SQL server数据库及实现基本CRUD操作的相关资料,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
2023-01-13

编程热搜

目录