【每日一练】你了解数据库的内连接和外连接吗

简介: 【每日一练】你了解数据库的内连接和外连接吗

【每日一练】你了解数据库的内连接和外连接吗

      emmmm....内连接就是内部连接,外连接不就是外部连接。不知道你是不是也这样想的呢?

  哈哈哈~似乎很有道理啊。不过言归正传,这里举一个例子来介绍一下,看起来更容易理解。首先建立三个表:

表a

image.png

表b

image.png

表c

image.png

数据库的内连接

       1、等值连接:在连接条件中使用等号(=)运算符比较被连接列的列值,其查询结果中列出被连接表中的所有列,包括其中的重复列。

image.png

       2、自然连接:在连接条件中使用等号(=)运算符比较被连接列的列值,但它会删除连接表中的重复数据列。

image.png

特别注意一下:

       注意自然连接的时候,必须有相同名称的属性类,查询的结果会去除相同的属性列,如上图的查询结果。

       ②如果两个这个两个属性列的类型不同,则查询的结果会保存为前面那个表的属性的类型。例如现在把a表的userid改成int类型的,b表的userid是varchar类型的。

image.png

则查询结果如下所示:

image.png

       ③我试了一下,当自然连接的两个表没有共同的属性时会产生如下的结果。如下所示:

image.png

不等值连接只是改变查询条件,不做重点介绍

数据库的外连接

外连接分:左外连接、右外连接、全外连接


1、左外连接(LEFT  JOIN或LEFT OUTER JOIN )

       左外连接的结果包括  LEFT OUTER子句中指定的左表的所有行。如果左表的某行在右表中没有匹配行,则在相关联的结果中右表对应行为空值。

image.png

2、右外连接(RIGHT  JOIN 或 RIGHT  OUTER JOIN )  

       右外连接是左外连接的反向连接。查询结果与左外连接正好相反。

image.png

3、全外连接(FULL  JOIN 或 FULL OUTER JOIN)

       全外连接是在等值连接的基础上将左表和右表的未匹配数据都加上。但是MySQL目前应该不支持此种方式,我在测试的时候出现下面的情况。如果去掉on条件语句的话,是有查询结果的。

image.png

交叉连接

       交叉连接又称笛卡尔连接(cartesian join)。如果表a和表b是两个集合的话,交叉连接即返回这两个集合的笛卡尔积。

image.png

       最后附上一张网上找到的图,感觉对这些语句的解释很到位,同学们可以借鉴一下。

image.png


最后说一点,本文使用的数据库为 MySQL 5.6

目录
相关文章
|
29天前
|
存储 Go API
使用GoFrame连接和操作TDengine时序数据库
通过使用GoFrame框架和TDengine Go驱动,我们可以方便地连接和操作TDengine时序数据库。无论是插入、查询还是分析时序数据,都可以通过简单的API调用来实现。GoFrame提供了强大的Web开发功能,结合TDengine的高性能时序数据存储和查询能力,可以构建高效、可扩展的时序数据应用。
|
27天前
|
NoSQL 关系型数据库 PHP
php连接数据库
要使用PHP连接PolarDB或MongoDB数据库,需先准备连接信息,并编写相应代码。对于PolarDB,需设置主机地址、端口、数据库名及凭据,使用`pg_connect`函数建立连接;而对于MongoDB副本集,需安装MongoDB PHP驱动,通过`MongoDB\Client`连接指定的副本集实例。请确保替换示例代码中的占位符为实际值,并正确配置副本集名称和主机信息。更多详细信息与示例代码,请参考相关链接。
133 72
|
6天前
|
关系型数据库 MySQL 数据库
6-2|测试连接数据库的命令
6-2|测试连接数据库的命令
|
6天前
|
SQL 关系型数据库 MySQL
ThinkPHP6 连接使用数据库,增删改查,find,select,save,insert,insertAll,insertGetId,delete,update方法的用法
本文介绍了在ThinkPHP6框架中如何连接和使用数据库进行增删改查操作。内容包括配置数据库连接信息、使用Db类进行原生MySQL查询、find方法查询单个数据、select方法查询数据集、save方法添加数据、insertAll方法批量添加数据、insertGetId方法添加数据并返回自增主键、delete方法删除数据和update方法更新数据。此外,还说明了如何通过数据库配置文件进行数据库连接信息的配置,并强调了在使用Db类时需要先将其引入。
ThinkPHP6 连接使用数据库,增删改查,find,select,save,insert,insertAll,insertGetId,delete,update方法的用法
|
6天前
|
SQL 关系型数据库 数据库连接
php连接数据库之PDO,PDO的简单使用和预定义占位符的使用以及PDOStatement对象的使用,占位符的不同形式,bindValue和bindParam绑定预定义占位符参数的区别
本文介绍了PHP中PDO(PHP Data Objects)扩展的基本概念和使用方法。内容包括PDO类和PDOStatement类的介绍,PDO的简单使用,预定义占位符的使用方法,以及PDOStatement对象的使用。文章还讨论了绑定预定义占位符参数的不同形式,即bindValue和bindParam的区别。通过具体示例,展示了如何使用PDO进行数据库连接、数据查询、数据插入等操作。
php连接数据库之PDO,PDO的简单使用和预定义占位符的使用以及PDOStatement对象的使用,占位符的不同形式,bindValue和bindParam绑定预定义占位符参数的区别
|
6天前
|
SQL 关系型数据库 MySQL
php学习笔记-连接操作mysq数据库(基础)-day08
本文介绍了PHP中连接操作MySQL数据库的常用函数,包括连接服务器、设置字符集、关闭连接、选择数据库、结果集释放、获取影响行数以及遍历结果集等操作。通过书籍查询的实例演示了如何使用这些函数进行数据库操作,并提供了一个PHP操纵MySQL数据库的模板。
php学习笔记-连接操作mysq数据库(基础)-day08
|
9天前
|
SQL JavaScript 关系型数据库
Node服务连接Mysql数据库
本文介绍了如何在Node服务中连接MySQL数据库,并实现心跳包连接机制。
23 0
Node服务连接Mysql数据库
|
2月前
|
API Java 开发框架
【从零到精通】如何用Play Framework快速构建RESTful API?看完这篇你就懂了!
【8月更文挑战第31天】《Play Framework快速入门:从零开始构建RESTful API》介绍了如何使用高性能Web开发框架Play Framework构建简单的RESTful API。从环境搭建到项目创建,再到实现用户列表的增删查功能,本文档详细指导每个步骤,并解释核心概念。适合初学者快速上手。首先确保已安装JDK和sbt,然后通过sbt创建Play项目,接着定义控制器、模型及路由,最后运行应用进行测试。通过本教程,你将掌握构建RESTful API的基础知识,为进一步学习Play Framework打下坚实基础。
30 0
|
2月前
|
数据管理 数据处理 数据库
|
2月前
|
SQL 数据库 开发者
下一篇
无影云桌面