`
lgcpeter
  • 浏览: 89767 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

数据库常见的三种join方式(收藏)

阅读更多

数据库常见的join方式有三种:inner join, left outter join, right outter join(还有一种full join,因不常用,本文不讨论)。这三种连接方式都是将两个以上的表通过on条件语句,拼成一个大表。以下是它们的共同点:

  1. 关于左右表的概念。左表指的是在SQL语句中排在left join左边的表,右表指的是排在left join右边的表。
  2. 在拼成的大表中,左表排在左边,右表排在右边。
  3. on条件语句最好用=号对两表相应的主外键进行连接。当然,也可以用其他操作符,如>, <, 来连接两表的任一字段,此时的关系将非常复杂,连接后的记录数也随之而变得不确定。如果在一些特殊的场合中需要用到这种方式,必须通过简单的实例加以确认,否则,连接结果很可能不是我们所想要的!
  4. on条件语句不能省略。
  5. 可以连锁使用join,每次使用join都令另一表与当前的表或连接的结果相连接。


在下文中,用到了两个表,"部门"表与"组织"表,其中,"部门"表有一名为"组织编号"的外键,指向"组织"表中的主键"编号"。

inner join

  格式:select * from 部门 inner join 组织 on 部门.组织编号 = 组织.编号

  目的:将两表中符合on条件的所有记录都找出来。

  规律:

    1. 拼出的大表记录不会增加。
    2. 如果左边与右表的关系是一对多的关系,在选出的任一记录中,假若右表有多个记录与其对应,那么,连接后的左表,主键将不再唯一。

  典型应用:将存在多关系的引用表放在左表,将存在一关系的被引用表放在右表,通过=号将主外键进行连接,通过对右表设定过滤条件,选出相应的且主键唯一的左表记录。

  备注:inner join 是默认的连接方式,可缩写为join。

  转化为where子句:

    select * from 部门, 组织 where 部门.组织编号 = 组织.编号

 

left outter join

  格式: select * from 部门 left join 组织 on 部门.组织编号 = 组织.编号

  格式: select * from 组织 left join 部门 on 组织.编号 = 部门.组织编号

  目的:将左表的所有记录列出,右表中只要符合on条件的,与左表记录相拼合,不符合条件的,填以null值。

  规律:

    1. 选出所有符合条件的左表,如果左边与右表的关系是一对一的关系,则拼成的大表记录不会改变。
       如果左边与右表的关系是多对一的关系,则拼成的大表记录也不会改变。
       如果左边与右表的关系是一对多的关系,则拼成的大表记录会增加。对于每一具有一对多关系的左表记录,如果左表1:N与右表对应,那么会多出N-1条记录。例如,如果左表第一条记录1:3对应于右表,多出2条记录。如果左表第二条记录1:2对应于右表,则再多出1条记录。这样,总共多出3条记录。其他类推。
    2. 如果左边与右表的关系是一对多的关系,在选出的任一记录中,假若右表有多个记录与其对应,那么,连接后的左表,主键将不再唯一。
    3. 如果左边与右表的关系是一对多的关系,对于左表任一记录,如果右表没有记录与其相对应,则全部填以null值。

  典型应用:将存在多关系的引用表放在左表,将存在一关系的被引用表放在右表,通过对右表设定过滤条件,选出相应的且主键唯一的左表记录。

  备注:left outter join可用left join代替。在有些数据库中,如HSqlDb, 只能使用left join而不能使用left outter join。

  转化为where子句:

    select * from 部门, 组织 where 部门.组织编号 = 组织.编号


right outter join

  格式: select * from 部门 right join 组织 on 部门.组织编号 = 组织.编号

  格式: select * from 组织 right join 部门 on 部门.组织编号 = 组织.编号

  目的:将右表的所有记录列出,左表中只要符合on条件的,与右表记录相拼合,不符合条件的,填以null值。

  规律:(与left outter join相反)

  典型应用:可转化成left outter join。例如

    select * from 组织 right join 部门 on 部门.组织编号 = 组织.编号
    与
    select * from 部门 left join 组织 on 部门.组织编号 = 组织.编号
    的效果一样

  备注:right outter join可用right join代替。在有些数据库中,如HSqlDb, 没有实现right join功能。

  转化为where子句:

    select * from 部门, 组织 where 部门.组织编号 = 组织.编号



beyondduke 2006-05-18 09:43 发表评论
分享到:
评论

相关推荐

    MySQL数据库的常见面试题解析,建议收藏!(附答案)

    7. **视图**:视图是基于SQL查询的虚拟表,提供了一种抽象数据的方式,可以简化复杂的查询,增强数据安全性,但修改视图可能影响到基础表。 8. **视图的特点和使用场景**:视图可以跨越多个表,可以简化复杂的SQL...

    MySQL数据库的常见面试题解析,建议收藏!(附答案).zip

    这份文档集包含了一些MySQL数据库在面试中常见的问题及其解答,是准备面试或深入理解MySQL知识的宝贵资源。以下是一些主要的知识点解析: 1. **数据类型**: - MySQL中的基本数据类型包括整数类型(如TINYINT、INT...

    a多年总结得出的一套数据库综合能力提升以及面试必备试题 值得收藏!

    【数据库综合能力提升与面试必备知识点】 在信息技术领域,数据库是不可或缺的一部分,它负责存储、管理、检索数据,是各种应用程序的基础。对于IT专业人士来说,掌握数据库知识并能灵活运用,尤其是在面试时展现出...

    数据库系统概论大学版

    3. 查询操作是数据库中的常见任务。通过使用`SELECT`语句和`JOIN`操作,可以查询特定条件下的数据。在题目中,查询了计算机系学生选修数据库课程的成绩,按照成绩降序排序,相同成绩时按学号升序排序。 4. 域演算是...

    2021-2022收藏资料海量数据库的 查询优化及分页算法方案81976.doc

    本文档"2021-2022收藏资料海量数据库的查询优化及分页算法方案81976.doc"以"办公自动化"系统为例,探讨了在MSSQL SERVER数据库中对1000万条数据进行高效查询和分页的方法。 首先,查询优化是提升数据库性能的基础。...

    数据库查询语句 sql 自学资料

    以下是一些关于SQL的重要知识点,这些内容通常会出现在《SQL参考手册》、《SQL 21日自学通》、《语法大全》、《语法手册》以及《收藏的SQL语句》等学习资源中: 1. SQL基础: - SELECT语句:SQL中最常用的语句,...

    ACCESS数据库管理系统应用经验交流.pptx

    3. **窗体**:窗体是用户界面,提供了一种可视化的方式来输入、查看和编辑数据,可以包含多个控件,如文本框、复选框等,用于展示表中的字段。 4. **报表**:报表用于汇总和打印数据,通常用于数据分析和报告生成。...

    绝版 sql 语句大全收藏

    《绝版 SQL 语句大全收藏》是一份珍贵的 SQL 学习资源,涵盖了 SQL 查询、数据处理和数据库管理等多个方面。这份文档旨在为开发者提供一个全面的 SQL 参考,帮助他们在实际工作中解决各种问题。 一、统计查询 SQL ...

    数据库SQL语句优化总结(收藏)

    以下是一些常见的SQL优化策略: 1. **使用索引**:为经常用于WHERE子句和ORDER BY子句中的列创建索引,可以加速查询过程。索引减少了数据库需扫描的数据量,提高了查询速度。例如,如果经常查询`num`列,应该在`num...

    sql实现的一些查询 收藏着学习的。

    在IT领域,SQL(Structured Query Language)是一种标准的数据库查询语言,用于管理和操作关系型数据库中的数据。根据给定的文件信息,我们可以深入探讨其中涉及的SQL查询技巧和概念,这些知识点对于理解和优化...

    本人收藏的mssql合集

    【标题】"本人收藏的mssql合集"中包含了关于Microsoft SQL Server(简称MSSQL)的各种学习资源,这些资源涵盖了MSSQL的基础到高级应用,对于SQL开发者来说是宝贵的参考资料。 【描述】中提到的“isql命令参数”是指...

    一些常用的sql查询语句收藏

    在IT行业中,SQL(Structured Query Language)是一种用于管理和处理关系数据库的强大语言,广泛应用于数据查询、更新、插入和删除等操作。"一些常用的sql查询语句收藏"这个资源显然是一个汇集了多种实用SQL查询技巧...

    Oracle经典面试题(个人精心收集,值得收藏)

    Oracle数据库是全球最广泛使用的商业关系型数据库管理系统之一,它以其高效、稳定和强大的功能而闻名。本资料集合了多年以来个人精心收集的Oracle经典面试题,旨在帮助求职者或数据库管理员更好地准备面试,理解...

    2021-2022计算机二级等级考试试题及答案No.5561.docx

    14. 数据库验证方式:连接数据库时,验证方式包括Windows验证、SQL Server验证以及Windows和SQL Server混合验证,From验证不是一种常见方式。 15. 重启计算机:计算机重启有两种方式,即冷启动(完全断电重启)和热...

    sql和pb常用自己收藏的代码

    PowerBuilder是一种面向对象的开发工具,主要用于构建企业级的Windows应用程序,特别是与数据库交互的应用。以下是PB相关的知识点: 1. **数据窗口(DataWindow)**:PB的核心组件,用于显示、编辑和操作数据库中的...

    MySQL详细学习教程(建议收藏)

    MySQL是一种广泛使用的开源关系型数据库管理系统,以其高效、可靠和易于使用的特点深受开发者喜爱。本教程将深入探讨MySQL的核心概念、安装与配置、数据类型、SQL语言基础、表的创建与管理、索引、查询优化、事务...

    sql语句经典查询帖子收藏.

    这个"sql语句经典查询帖子收藏"很显然是一个集合,包含了一系列实用且常见的SQL查询示例,对于学习和提升SQL技能非常有帮助。下面我们将深入探讨一些SQL查询的关键知识点。 1. **基础查询**:SQL的基础查询包括...

    java面试题库 整合完美收藏版

    1. 设计模式:常见的23种设计模式及其在Java中的应用。 2. 架构设计:MVC、微服务、SOA等架构模式。 3. 性能调优:CPU、内存、网络等方面的监控和调优。 这个“java面试题库 整合完美收藏版”不仅包含了以上知识...

    114la导航SQL

    优化SQL查询、调整数据库参数、增加硬件资源都是常见的优化手段。 9. 分布式数据库:随着业务增长,可能需要采用分布式数据库架构,如主从复制、分区、分片等,以分散负载、提高可扩展性和可用性。 10. 数据分析:...

    经典SQL语句收藏版

    SQL(Structured Query Language)是用于管理和操作关系数据库的...以上就是SQL语句的一些典型应用场景和用法,它们在实际数据库管理、数据分析和应用开发中非常常见。了解和掌握这些语句有助于更高效地进行数据操作。

Global site tag (gtag.js) - Google Analytics