`
nk_tocean
  • 浏览: 3496 次
  • 性别: 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)是一种最...

    如何连接SQL数据库

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

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

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

    数据库连接池技术详解

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

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

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

    Echarts连接数据库实例

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

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

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

    Delphi数据库三层连接池

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

    数据库连接 数据库 连接 模型

    6. 安全性:在数据库连接中,还需要考虑安全性问题,如使用身份验证(Windows集成身份验证或SQL Server身份验证),以及是否启用加密连接。对于远程连接,可能需要设置防火墙规则和权限,确保只有授权的用户和应用...

    Delphi几种数据库连接

    在IT行业中,数据库连接是应用程序开发中的重要环节,特别是在使用Delphi这种强大的Windows应用程序开发工具时。Delphi提供了多种方式来连接和操作数据库,使得开发者能够灵活地选择适合项目需求的解决方案。以下将...

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

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

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

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

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

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

    连接derby数据库方法—附图

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

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

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

    dreamweaver连接数据库access

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

    python 连接达梦数据库

    Python 连接达梦数据库是指在 Python 编程语言中连接达梦数据库,以便在 Python 应用程序中使用达梦数据库。下面是 Python 连接达梦数据库的详细步骤和知识点: 检查 Python 是否安装 在开始连接达梦数据库之前,...

Global site tag (gtag.js) - Google Analytics