`
nk_tocean
  • 浏览: 3543 次
  • 性别: Icon_minigender_1
  • 来自: 天津
最近访客 更多访客>>
社区版块
存档分类
最新评论

数据库中的内连接、外连接

阅读更多

这块知识不太牢固,一提起来就有点怵。今天抽空整理下。

当做表的关联时,有时我们只需要完全符合条件的记录,这就需要用到内连接。有时需要把其中一个表中的所有记录找出来,这就需要用到外连接。关联方法一般是select * from a (left/right/inner) join b on a.xx = b.xx

1 内连接

形式为:select * from a (inner) join b on a.xx = b.xx

只返回满足a.xx=b.xx的记录。默认的join就是内连接。

2 外连接

外连接包括左外连接和右外连接。

左外连接:select * from a left join b on a.xx = b.xx

右外连接:select * from a right join b on a.xx = b.xx

左连接会返回表a中的所有记录,如果不满足a.xx=b.xx,则返回的记录中b的字段为NULL

左连接会返回表b中的所有记录,如果不满足a.xx=b.xx,则返回的记录中a的字段为NULL

3 全连接

首先说明mysql中不支持全连接。

形式如select * from a left full join b on a.xx = b.xx

全连接返回a和b中的所有记录。如果不满足a.xx=b.xx,则返回的记录中不存在的那个表的字段为NULL.

 

上例子。

现有学生表t_student和班级表t_class。

t_student.

id name cid
1 s1 1
2 s2 1
3 s3 2
4 s4 4

t_class.

id name
1 c1
2 c2
3 c3

 

内连接:

SELECT * FROM `t_student` s join t_class c on s.cid = c.id ;

返回结果为:

1    s1    1    1    c1
2    s2    1    1    c1
3    s3    2    2    c2

左外连接:

SELECT * FROM `t_student` s left join t_class c on s.cid = c.id ;

返回结果为:

1    s1    1    1    c1
2    s2    1    1    c1
3    s3    2    2    c2
4    s4    4    null null

 

右外连接:

SELECT * FROM `t_student` s right join t_class c on s.cid = c.id ;

返回结果为:

1    s1    1    1    c1
2    s2    1    1    c1
3    s3    2    2    c2
null null null 3    c3

 

Mysql不支持全连接。
 

 

分享到:
评论

相关推荐

    数据库连接查询相关外连接内连接

    本篇文章将深入探讨数据库连接查询,包括内连接、外连接和交叉连接等,同时结合实例来帮助理解。 首先,了解数据库的基础架构。Oracle数据库由Oracle数据库(数据文件、控制文件、重做日志文件等)和Oracle实例...

    Qt 多线程连接数据库——数据库连接池

    * 数据库连接池特点: * 获取连接时不需要了解连接的名字,连接池内部维护连接的名字 * 支持多线程,保证获取到的连接一定是没有被其他线程正在使用 * 按需创建连接,可以创建多个连接,可以控制连接的数量 * 连接...

    数据库:左连接、右连接、全连接

    数据库连接操作是关系数据库管理系统中的一种常用操作,用于将多个表中的数据结合起来,以便查询和分析。连接操作可以在 SELECT 语句的 FROM 子句或 WHERE 子句中建立。 一、内连接 内连接(INNER JOIN)是一种最...

    瀚高数据库连接工具,用于连接到本地或远程的瀚高数据库 请区别于瀚高迁移工具

    注意:本地网络必须能正常连接到瀚高数据库 有2种方式: 本机和服务器网络 互通,可以直接连接到上文中安装的服务器端的瀚高数据库; 本机和服务器网络 不互通,则需要在本地安装瀚高数据库(可联系对方工程师远程...

    Java 数据库连接泄漏 解决方法

    数据库连接泄漏是指应用程序在使用完数据库连接后没有正确地关闭这些连接,导致连接池中的可用连接数量逐渐减少,最终可能耗尽所有可用连接。这种情况会严重影响系统的稳定性和响应时间。 #### 三、临时解决连接...

    数据库连接池技术详解

    在较为完备的数据库连接池实现中,可根据预先的连接占用超时设定,强制收回被占用连接。从而避免了常规数据库连接操作中可能出现的资源泄漏 。 由于数据库连接得到重用,避免了频繁创建、释放连接引起的大量性能...

    Echarts连接数据库实例

    在数据库连接方面,Java可以使用JDBC(Java Database Connectivity)API来实现。JDBC提供了一组接口和类,使得Java程序能够与各种数据库进行交互,包括MySQL。 MySQL是一个流行的开源关系型数据库管理系统,适用于...

    Delphi数据库三层连接池

    在IT行业中,数据库连接管理是系统性能优化的关键因素之一,特别是在多用户环境下。"Delphi数据库三层连接池"是一个专门针对Delphi开发环境设计的数据库访问解决方案,它着重于提高数据库连接的复用性和效率,以减少...

    一个连接多种数据库的连接池封装包

    数据库连接池是数据库管理中的重要组成部分,它优化了数据库资源的使用,提高了系统性能。本文将详细介绍一个连接多种数据库的连接池封装包,包括其功能、实现方式以及如何使用。 标题中的“一个连接多种数据库的...

    C# 数据库连接池 C# 数据库连接池

    数据库连接池是数据库管理中的一个重要概念,它在C#编程中扮演着优化数据库操作的关键角色。C#数据库连接池是一种管理数据库连接的技术,通过复用已存在的连接而不是每次请求时都创建新的连接,从而提高数据库操作的...

    常用jdbc数据库连接jar包,数据库连接池jar包

    在IT行业中,数据库连接是应用程序与数据库交互的基础。"jdbc"是Java Database Connectivity的缩写,它是Java平台标准的一部分,允许Java程序通过JDBC API与各种数据库进行通信。本资源集合了常用的JDBC数据库连接...

    如何查看sql server数据库连接数

    2. 在下面的项目中选择用户连接(User Connection),这样就可以实时查询到 SQL Server 数据库连接数。 方法二:通过系统表查询 可以通过系统表来查询 SQL Server 数据库连接数。具体步骤如下: 1. 使用以下查询...

    数据库内连接、外连接.ppt.ppt

    总结,数据库连接是数据库管理系统中的核心功能,通过内连接、外连接和交叉连接,我们可以根据需求灵活地组合和筛选数据,实现复杂的数据分析和查询。理解并熟练运用这些连接类型对于任何数据库操作人员来说都是至关...

    C#高效数据库连接池源码

    数据库连接池是数据库管理中的重要概念,特别是在高并发和大数据量的应用场景下,它能显著提升性能并降低系统资源消耗。在C#编程环境中,我们可以使用自定义的数据库连接池来实现这一功能。本篇文章将深入探讨“C#...

    连接derby数据库方法—附图

    Derby数据库连接方法详解 Derby数据库连接方法是Java应用程序连接Derby数据库的主要方式。 Derby数据库是一种嵌入式关系数据库管理系统,可以嵌入到Java应用程序中,提供了一个轻量级、可靠的数据库解决方案。 ...

    数据库中各种连接详细描述

    数据库中左连接的详细描述 内连接:把两个表中数据对应的数据查出来 外连接:以某个表为基础把对应数据查出来(全连接是以多个表为基础) 左连接(左表中所有数据,右表中对应数据) 右连接(右表中所有数据,左...

    dreamweaver连接数据库access

    A:Dreamweaver 可以连接本地的数据库,但不能直接连接外网的数据库。可以使用 IIS 服务器来连接外网的数据库。 Q:如何连接远程的 Access 数据库? A:可以使用 ODBC 连接远程的 Access 数据库。 Q:...

    易语言使用数据库连接组件打开EXCEL

    首先,我们需要理解易语言中的数据库连接组件。这个组件通常包含了连接数据库、执行SQL语句、获取数据等功能,对于Excel文件而言,我们可以将其视为一个特殊的数据库,通过ODBC(Open Database Connectivity)或者...

    Kettle所有数据库数据库连接驱动Jar

    在IT领域,数据库连接是数据集成过程中的关键环节,特别是在使用工具如Kettle(也称为Pentaho Data Integration,简称PDI)时。Kettle是一款强大的ETL(Extract, Transform, Load)工具,用于从各种数据源抽取数据,...

    Java jdbc数据库连接池总结

    预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去。我们可以通过设定连接池最大连接数来防止系统无尽的与数据库连接。更为重要的是我们可以通过连接池...

Global site tag (gtag.js) - Google Analytics