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

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

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

      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

目录
相关文章
|
关系型数据库 MySQL Java
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
【YashanDB知识库】原生mysql驱动配置连接崖山数据库
|
安全 Linux 网络安全
YashanDB数据库服务端SSL连接配置
YashanDB支持通过SSL连接确保数据传输安全,需在服务端生成根证书、服务器证书及DH文件,并将根证书提供给客户端以完成身份验证。服务端配置包括使用OpenSSL工具生成证书、设置SSL参数并重启数据库;客户端则需下载根证书并正确配置环境变量与`yasc_env.ini`文件。注意:启用SSL后,所有客户端必须持有根证书才能连接,且SSL与密码认证独立运行。
|
9月前
|
SQL Java 关系型数据库
Java连接MySQL数据库环境设置指南
请注意,在实际部署时应该避免将敏感信息(如用户名和密码)硬编码在源码文件里面;应该使用配置文件或者环境变量等更为安全可靠地方式管理这些信息。此外,在处理大量数据时考虑使用PreparedStatement而不是Statement可以提高性能并防止SQL注入攻击;同时也要注意正确处理异常情况,并且确保所有打开过得资源都被正确关闭释放掉以防止内存泄漏等问题发生。
412 13
|
9月前
|
SQL 关系型数据库 MySQL
MySQL数据库连接过多(Too many connections)错误处理策略
综上所述,“Too many connections”错误处理策略涉及从具体参数配置到代码层面再到系统与架构设计全方位考量与改进。每项措施都需根据具体环境进行定制化调整,并且在执行任何变更前建议先行测试评估可能带来影响。
1773 11
|
11月前
|
SQL XML Java
配置Spring框架以连接SQL Server数据库
最后,需要集成Spring配置到应用中,这通常在 `main`方法或者Spring Boot的应用配置类中通过加载XML配置或使用注解来实现。
770 0
|
Oracle 安全 关系型数据库
【Oracle】使用Navicat Premium连接Oracle数据库两种方法
以上就是两种使用Navicat Premium连接Oracle数据库的方法介绍,希望对你有所帮助!
2570 28
|
SQL 数据库连接 数据库
在C++的QT框架中实现SQLite数据库的连接与操作
以上就是在C++的QT框架中实现SQLite数据库的连接与操作的基本步骤。这些步骤包括创建数据库连接、执行SQL命令、处理查询结果和关闭数据库连接。在实际使用中,你可能需要根据具体的需求来修改这些代码。
852 14
|
数据库
【YashanDB知识库】YDC连接数据库报错yasdb return code is zero
【YashanDB知识库】YDC连接数据库报错yasdb return code is zero

热门文章

最新文章