`
nk_tocean
  • 浏览: 3558 次
  • 性别: 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不支持全连接。
 

 

分享到:
评论

相关推荐

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

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

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

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

    如何连接SQL数据库

    在实际应用中,确保数据库连接的安全性和效率是必要的。使用预编译的SQL语句防止SQL注入,定期检查和优化连接池,使用合适的事务策略,以及适时关闭不再使用的连接,都是提升系统性能和安全性的关键。 总之,连接...

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

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

    数据库连接池技术详解

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

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

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

    Echarts连接数据库实例

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

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

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

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

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

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

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

    连接derby数据库方法—附图

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

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

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

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

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

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

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

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

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

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

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

    db2 数据库连接客户端

    DB2数据库连接客户端是数据库管理员和开发人员用来与IBM DB2数据库进行交互的重要工具。在这个场景中,我们讨论的是一个基于Java编写的客户端工具,它为用户提供了方便的图形用户界面(GUI)来管理和操作DB2数据库。...

    易语言连接Oracle数据库

    数据库连接组件用于建立与Oracle数据库的物理连接,而记录集组件则负责在程序中操作数据,如查询、插入、更新和删除记录。 1. 数据库连接组件: - 在易语言中,设置数据库连接通常涉及以下参数: - 数据源(DSN)...

    delphi源码连接测试Ado方式得到数据库连接代码

    在IT行业中,数据库连接是应用程序与数据存储交互的基础。Delphi是一种流行的面向对象的编程语言,常用于开发桌面应用程序。Ado(ActiveX Data Objects)是Microsoft提供的一个数据访问接口,使得开发者能够轻松地...

Global site tag (gtag.js) - Google Analytics