`
nzm918
  • 浏览: 4269 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

数据库查询内连接 左连接 右连接

 
阅读更多

id  name  
1,  Jack
2,  Tom
3,  Kity
4,  nono
--表exam
id   grade
1,   56
2,   76
11,  89

内连接 (显示两表id匹配的)
select stu.id,exam.id,stu.name, exam.grade from stu inner join exam on stu.id=exam.id
stu.id   exam.id  name     grade
--------------------------------
1 1 Jack 56
2 2 Tom 76


左连接(显示join 左边的表的所有数据,exam只有两条记录,所以stu.id,grade 都用NULL 显示)
select stu.id,exam.id,stu.name, exam.grade from stu left join exam on stu.id=exam.id
1 1 Jack 56
2 2 Tom 76
3 NULL Kity NULL
4 NULL nono NULL

右连接(与作连接相反,显示join右边表的所有数据)
select stu.id,exam.id,stu.name, exam.grade from stu right join exam on stu.id=exam.id
1 1 Jack 56
2 2 Tom 76
NULL 11 NULL 89

 

 

 

 

 

 

 

 

 

 

1.
a. 并集UNION
SELECT column1, column2 FROM table1
UNION
SELECT column1, column2 FROM table2

b. 交集JOIN
SELECT * FROM table1 AS a JOIN table2 b ON a.name=b.name

c. 差集NOT IN
SELECT * FROM table1 WHERE name NOT IN(SELECT name FROM table2)

d. 笛卡尔积
SELECT * FROM table1 CROSS JOIN table2

SELECT * FROM table1,table2相同


2. SQL中的UNION
UNION与UNION ALL的区别是,前者会去除重复的条目,后者会仍旧保留。

a. UNION
SQL Statement1
UNION
SQL Statement2

b. UNION ALL
SQL Statement1
UNION ALL
SQL Statement2

3. SQL中的各种JOIN
SQL中的连接可以分为内连接,外连接,以及交叉连接

(即是笛卡尔积)

a. 交叉连接CROSS JOIN
如果不带WHERE条件子句,它将会返回被连接的两个表的笛卡尔积,返回结果的行数等于两个表行数的乘积;

举例
SELECT * FROM table1 CROSS JOIN table2
等同于
SELECT * FROM table1,table2

一般不建议使用该方法,因为如果有WHERE子句的话,往往会先生成两个表行数乘积的行的数据表然后才根据WHERE条件从中选择。
因此,如果两个需要求交际的表太大,将会非常非常慢,不建议使用。

b. 内连接INNER JOIN
如果仅仅使用
SELECT * FROM table1 INNER JOIN table2
没有指定连接条件的话,和交叉连接的结果一样。

但是通常情况下,使用INNER JOIN需要指定连接条件。
-- 等值连接(=号应用于连接条件, 不会去除重复的列)
SELECT * FROM table1 AS a INNER JOIN table2 AS b on a.column=b.column
-- 不等连接(>,>=,<,<=,!>,!<,<>)
例如
SELECT * FROM table1 AS a INNER JOIN table2 AS b on a.column<>b.column
-- 自然连接(会去除重复的列)


c. 外连接OUTER JOIN
首先内连接和外连接的不同之处:
内连接如果没有指定连接条件的话,和笛卡尔积的交叉连接结果一样,但是不同于笛卡尔积的地方是,没有笛卡尔积那么复杂要先生成行数乘积的数据表,内连接的效率要高于笛卡尔积的交叉连接。

指定条件的内连接,仅仅返回符合连接条件的条目。
外连接则不同,返回的结果不仅包含符合连接条件的行,而且包括左表(左外连接时), 右表(右连接时)或者两边连接(全外连接时)的所有数据行。

1)左外连接LEFT [OUTER] JOIN
显示符合条件的数据行,同时显示左边数据表不符合条件的数据行,右边没有对应的条目显示NULL
例如
SELECT * FROM table1 AS a LEFT [OUTER] JOIN table2 AS b ON a.column=b.column
2)右外连接RIGHT [OUTER] JOIN
显示符合条件的数据行,同时显示右边数据表不符合条件的数据行,左边没有对应的条目显示NULL
例如
SELECT * FROM table1 AS a RIGHT [OUTER] JOIN table2 AS b ON  a.column=b.column
3)全外连接 FULL [OUTER]  JOIN  
显示符合条件的数据行,同时显示左右不符合条件的数据行,相应的左右两边显示NULL
SELECT * FROM table1 AS a   FULL [OUTER]  JOIN  table2 AS b on a.column=b.column


分享到:
评论

相关推荐

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

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

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

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

    左外连接右外连接,内连接区别

    本文将深入探讨三种主要的连接类型:左外连接、右外连接和内连接,并通过具体的例子来阐述它们之间的区别。 首先,让我们从内连接(INNER JOIN)开始。内连接返回的是两个表中满足特定连接条件的记录。在示例中,`...

    oracle数据库 左连接 右连接 自连接 。。

    在Oracle数据库中,连接操作是查询数据的核心部分,它允许我们合并来自多个表的数据。这里主要涉及三种类型的连接:左连接、右连接和自连接。理解这些连接方式对于有效地管理和查询数据库至关重要。 1. **左连接...

    数据结构左右连接

    左连接是一种数据库查询操作,其目的是将两个表进行连接,并返回左表的所有记录及右表中匹配的记录。如果右表没有与左表相匹配的记录,则结果集中相应的列将显示为NULL。在SQL中,左连接通常通过`LEFT JOIN`或`LEFT ...

    数据库连接测试及数据的查询

    数据库连接测试及数据查询是IT领域中常见的任务,特别是在开发和维护基于MS SQL Server的应用程序时。这个过程涉及确保应用程序能够正确地与SQL Server数据库建立连接,并执行有效的数据查询操作。下面将详细介绍这...

    C#Winform基于SQL Server的网络连接数据库和本地连接,实现增删改查(内附数据库查询语句以及数据库配置,适合新手)

    1. 数据库连接字符串:这是连接到SQL Server的关键。一个典型的连接字符串包含服务器名称、数据库名、用户名和密码。例如: ``` Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;...

    数据库表连接(内外、左右连接).docx

    - 右外连接(RIGHT OUTER JOIN 或 RIGHT JOIN):与左外连接相反,返回右表的所有行,左表中没有匹配的行同样填充NULL。 - 全外连接(FULL OUTER JOIN 或 FULL JOIN):返回两个表的所有行,无论是否存在匹配。如果...

    thinkPHP5框架实现多数据库连接,跨数据连接查询操作示例

    本文实例讲述了thinkPHP5框架实现多数据库连接,跨数据连接查询操作。分享给大家供大家参考,具体如下: 1. 多数据库连接 方法1:在需要连接其他数据库的地方,使用Db::connect()方法动态连接数据库,方法参数为...

    数据库多表连接查询详解

    外连接则返回的是左表、右表或两个表中的所有数据行,而不仅仅是与连接条件相匹配的行。交叉连接则返回的是连接表中所有数据行的笛卡尔积。 在 SQL 语句中,连接查询可以使用 FROM 子句或 WHERE 子句来实现。FROM ...

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

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

    数据库表连接(内外、左右连接).pdf

    本文主要探讨了四种基本的表连接类型:内连接、外连接(包括左外连接、右外连接)以及交叉连接。 首先,内连接(INNER JOIN)基于指定的连接条件,返回两个表中匹配的行。它又分为等值连接、自然连接和不等连接。...

    数据库内外连接举例

    数据库连接是数据查询和分析的关键部分,理解不同类型的连接可以帮助我们更有效地组合和汇总来自多个表的信息。在设计查询时,应根据实际需求选择合适的连接类型,以确保获取到正确且完整的信息。

    Gbase 8s查询之连接查询

    左外连接返回左表中的所有行和右表中的匹配行,右外连接返回右表中的所有行和左表中的匹配行,完全外连接返回两个表中的所有行。 自连接是指一个表与自身进行链接操作,这实际上是一种特殊形式的内连接。例如,我们...

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

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

    SQL关于内连接,外连接(左右连接)等的总结

    当我们需要从多个表中获取数据并合并它们时,SQL提供了不同类型的连接操作,包括内连接、外连接(左连接和右连接)。以下是这些连接方式的详细说明。 **内连接(Inner Join)** 内连接返回两个表中存在匹配的记录。...

    数据库实验报告——数据库的简单查询和连接查询

    在提高操作实验中,创建了职工部门库和相关表,然后通过SQL语句实现职工和部门间的内连接、左外部连接和右外部连接,进一步巩固了对各种连接查询的理解。 总的来说,这个实验全面覆盖了SQL语言中的基本查询和连接...

    MYSQL数据库中关于左连接右连接和内连接的区别.doc

    MYSQL数据库中关于左连接右连接和内连接的区别.doc

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

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

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

    在IT领域,数据库连接组件是用于程序与数据库交互的关键工具,而易语言作为一种中文编程语言,为开发者提供了简便的方式来操作数据库。本篇文章将详细讲解如何使用易语言的数据库连接组件来打开并操作Excel文件。 ...

Global site tag (gtag.js) - Google Analytics