广告
返回顶部
首页 > 资讯 > 数据库 >SQL中的连接操作
  • 329
分享到

SQL中的连接操作

2024-04-02 19:04:59 329人浏览 安东尼
摘要

本篇内容主要讲解“sql中的连接操作”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“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中的连接操作”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

您可能感兴趣的文档:

--结束END--

本文标题: SQL中的连接操作

本文链接: https://www.lsjlt.com/news/59104.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • SQL中的连接操作
    本篇内容主要讲解“SQL中的连接操作”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SQL中的连接操作”吧! 利用连接操作,可以根据表与表之间的逻辑联系从两个或...
    99+
    2022-10-18
  • linq中的连接操作符
    linq中的连接操作符主要包括Join()和GroupJoin()两个。 一、Join()操作符 Join()操作符非常类似于T-SQL中的inner join,它将两个数据源进行连...
    99+
    2022-11-13
  • MySQL中的连接操作:内连接、外连接和交叉连接详解
    MySQL中的连接操作:内连接、外连接和交叉连接详解在MySQL数据库中,连接操作是一种常用的操作技术,用于将两个或多个表中的数据按照一定的条件进行合并。连接操作可以帮助我们处理复杂的数据查询和分析需求。在MySQL中,我们通常使用内连接、...
    99+
    2023-10-22
    连接操作 内连接 外连接
  • python连接并简单操作SQL server数据库
    环境: pycharm 、SQLserver版本2019 首先,在pycharm中点击File,找到setting——project:***,点击”+“,引入pymssql库 编写代码连接数据库,并对数据库进行查询等简单操作(此处仅展示查...
    99+
    2023-09-04
    数据库 sqlserver pycharm
  • sql中的连接方式
    这篇文章主要讲解了“sql中的连接方式”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“sql中的连接方式”吧!SQL连接可以分为内连接、外连接、交叉连接。数据...
    99+
    2022-10-18
  • SQL中内连接和外连接的区别
    在这篇文章中,我们将了解 SQL 中内连接和外连接的区别。内连接子句使用的是“INNER JOIN”和“JOIN”。它返回两个或多个表的组合元组。当没有共同属性时,结果为空。如果元组数量较多,则“INNER JOIN”比“OUTER”工作得...
    99+
    2023-10-22
  • sql的四种连接——左外连接、右外连接、内连接、全连接
    一、内连接   满足条件的记录才会出现在结果集中。 二、 左外连接(left outer join,outer可省略) 左表全部出现在结果集中,若右表无对应记录,则相应字段为NULL   举例说明: 客户表: 订单表: 左外连接(...
    99+
    2023-09-10
    sql mysql 数据库
  • VS连接SQL server数据库及实现基本CRUD操作
    目录连接数据库使用dataGridView控件显示表中的数据。实现基本CRUD操作总结连接数据库 打开vs,点击 视图,打开sql资源管理器,添加SQL Server 输入服务器...
    99+
    2023-01-13
    vs连接sqlserver数据库实现代码 vs连接sqlserver数据库 vs连接sqlserver
  • VS连接SQL server数据库及实现基本CRUD操作
    目录连接数据库使用dataGridView控件显示表中的数据。实现基本CRUD操作总结连接数据库 打开vs,点击 视图,打开sql资源管理器,添加SQL Server 输入服务器名称,用户名,密码,进行连接。 如图...
    99+
    2023-01-13
    vs连接sqlserver数据库实现代码 vs连接sqlserver数据库 vs连接sqlserver
  • 通过Java连接SQL Server数据库的超详细操作流程
    目录一.明确JDK版本和下载驱动1.1 JDK版本查看1.2 SQL Server官网下载驱动1.3 加载驱动类1.4 eclipse导入驱动jar包二.运行程序2.1 终极结局方案...
    99+
    2023-03-06
    java连接sqlserver数据库教程 java连接sql sever数据库 java如何连接sqlserver数据库
  • SQL中如何连接Oracle
    SQL中如何连接Oracle,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、设置PL/SQL,添加服务名称打开Net Manager:开始&...
    99+
    2022-10-18
  • SQL中的连接查询详解
    Join 连接 (SQL Join) SQL Join (连接) 是利用不同数据表之间字段的关连性来结合多数据表之检索。 SQL Join是结合多个数据表而组成一抽象的暂时性数据表以供数据查...
    99+
    2022-06-18
    SQL 连接查询
  • PHP连接数据库的操作
                  路径如图所示  注意,一定要建好数据库,不然的话会显示数据库不存在     数据的导入: 方法一:通过命令行备份与导入 方法二:如果是myisam引擎表可以直接拷贝粘贴到data中 方法三:通过可视化界面进...
    99+
    2023-09-10
    php
  • sqlyog连接mysql的操作步骤
    小编给大家分享一下sqlyog连接mysql的操作步骤,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!sqlyog连接mysql的方法:1、在桌面上点击sqlyog快捷方式,打开sqlyog窗口...
    99+
    2022-10-18
  • navicat连接mysql的操作步骤
    这篇文章主要介绍了navicat连接mysql的操作步骤,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。navicat连接mysql的方法:首...
    99+
    2022-10-18
  • Oracle表连接操作——Hash Join(哈希连接)下
     Hash Join是Oracle CBO时代经常出现的一种连接方式,对海量数据处理时经常出现在执行计划里。本篇的上篇(http://space.itpub.net/17203031/viewspace-697442) ...
    99+
    2023-06-06
  • Oracle表连接操作——Hash Join(哈希连接)上
     在Oracle中,确定连接操作类型是执行计划生成的重要方面。各种连接操作类型代表着不同的连接操作算法,不同的连接操作类型也适应于不同的数据量和数据分布情况。  无论是Nest Loop Join(嵌套循环),...
    99+
    2023-06-06
  • C#连接SQL数据库和查询数据功能的操作技巧
    大数据时代在编程可能需要用到一些文本内容,不可能全部写到代码里,不好更改,用户也不方便使用 所以需要用到我们的数据库来保存这些数据,直接更改数据 SQL: 下载地址:https://...
    99+
    2022-11-12
  • sql语句中左外连接、右外连接、内连接是什么
    小编给大家分享一下sql语句中左外连接、右外连接、内连接是什么,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!以下的代码演示均基于name表和country表展开。name表idname1西...
    99+
    2022-10-18
  • sql中左连接、右连接、内连接、全外连接对比有哪些区别
    小编给大家分享一下sql中左连接、右连接、内连接、全外连接对比有哪些区别,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!区别:左连接返回包括左表中的所有记录和右表中连接字段相等的记录;右连接...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作