MySQL的自然联结+外部联结(左外连接,右外连接)+内部联结

【0】README
0.1)本文旨在review MySQL的自然联结+外部联结(左外连接,右外连接)+内部联结 的相关知识;

【1】自然联结
1)自然联结定义:无论何时对表进行联结,应该至少有一个列出现不止一个表中(被联结的列)。标准的联结返回所有数据,甚至相同的列多次出现。自然联结排除多次出现,使每个列只返回一次;(干货——自然联结的作用就是排除多次出现,使每个列只返回一次)

看个荔枝)
自然连接怎么连接?
R表                S表
A  B  C                     D  B  E
1  a  3                      2  c  7
2  b  6                      3  d  5
3  c  7                      1  a  3    <span style="font-family: SimSun; background-color: rgb(255, 255, 255);">   </span>
step1)自然连接是第一步R×S结果是(
就是用R表中的每一项乘以S表中的每一项):
A   B     C      D     B       E
1   a     3      2     c       7
1   a     3      3     d       5
1   a     3      1     a       3
2   b     6      2     c       7
2   b     6      3     d       5
2   b     6      1     a       3
3   c     7      2     c       7
3   c     7      3     d       5 
3   c     7      1     a       3

step2)选择R.B=S.B的记录:
R.A    R.B     R.C       S.D     S.B    S.E
1       a       3         1       a       3 
3       c       7         2       c       7
step3)然后去掉相同且值也相同的B属性,最后R∞S的值为:
   A     B      C      D       E1     a      3      1        33     c      7      2        7


以下部分文字描述转自:http://www.cnblogs.com/sysu-blackbear/p/4157295.html
【supplement】测试前的准备
1)假设有A,B两个表:
// 表A记录如下
aID     aNum  
1     a2010  
2     a2011  
3     a2012  
4     a2012  
5     a2013  // 表B记录如下:  
bID     bName  
1     b2010  
2     b2011  
3     b2012  
4     b2013  
8     b2014 

【2】left join (左外联结)sql语句如下: 
select*from A  left join B   on A.aID = B.bID   

对以上结果的分析(Analysis)
A1)left join是以A表的记录为基础的,A可以看成左表,B可以看成右表,left join是以左表为准的.  
A2)换句话说,左表(A)的记录将会全部表示出来,而右表(B)只会显示符合搜索条件的记录(例子中为: A.aID = B.bID). B表记录不足的地方均为NULL;

【3】right join  (右外联结)
 

【4】内联结
sql语句如下: select*from A  innerjoin B   on A.aID = B.bID  
对以上结果的分析(Analysis):
A1)很明显,这里只显示出了 A.aID = B.bID的记录.这说明inner join并不以谁为基础,它只显示符合条件的记录.  
A2)LEFT JOIN操作用于在任何的 FROM 子句中,组合来源表的记录。使用 LEFTJOIN 运算来创建一个左边外部联接。左边外部联接将包含了从第一个(左边)开始的两个表中的全部记录,即使在第二个(右边)表中并没有相符值的记录。    
A3)语法:FROM table1 LEFT JOIN table2 ON table1.field1 compopr table2.field2    
A3.1)说明:table1, table2参数用于指定要将记录组合的表的名称。  
A3.2)field1, field2参数指定被联接的字段的名称。且这些字段必须有相同的数据类型及包含相同类型的数据,但它们不需要有相同的名称。  
A3.3)compopr参数指定关系比较运算符:"=", "<", ">", "<=", ">=" 或 "<>"。  
A3.4)如果在INNER JOIN操作中要联接包含Memo 数据类型或 OLE Object 数据类型数据的字段,将会发生错误。 
Attention)left和right是外连接,Inner是内连接。(left join=left outer join,right join=right outer join)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/331206.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL 添加列+修改列+删除列

【0】REAMDE 0.1&#xff09;本文部分文字描述转自 http://blog.163.com/zhangjie_0303/blog/static/99082706201191911653778/ 0.2&#xff09;本文旨在review mysql 对列的相关操作&#xff1a;如添加&#xff0c;修改&#xff0c;删除以及重命名表名等操作&#xff1b; 【1】…

compose应用_带有PostgreSQLDocker Compose for Spring Boot应用程序

compose应用在此博客文章中&#xff0c;您将学习如何使用PostgreSQL配置Spring Boot应用程序以与Docker Compose一起运行。 这篇博客文章涵盖&#xff1a; Spring Boot应用程序Dockerfile配置&#xff0c;在依赖项和资源之间进行了清晰的分离 用于通过PostgreSQL运行应用程序…

单例模式面试题

转载自 单例模式面试题&#xff08;特点、理解&#xff09; (1)单例模式特点&#xff08;什么是单例模式&#xff09;&#xff1f;  a.单例类只能有一个实例。  b.单例类必须自己创建自己的唯一实例。  c.单例类必须给所有其他对象提供这一实例。 (2)单例模式的作用&#x…

MySQL的source命令不加分号和delimiter的使用

【0】README 0.1&#xff09;本文旨在 review source 命令&#xff0c; 这一直是我的痛&#xff0c;为什么一直导入 sql 文件不成功&#xff0c;一直没有写 blog 吧他 记录下来&#xff08;事实上&#xff0c;也间接证明我就是个小白&#xff09;&#xff1b; 0.2&#xff09…

selenium自动化测试_维持Selenium测试自动化的完美方法

selenium自动化测试毫无疑问&#xff0c; 自动浏览器测试已改变了软件开发的工作方式。 如果不是Selenium&#xff0c;我们将无法像我们一样使用各种各样的无错误的Web应用程序。 但是有时&#xff0c;甚至IT部门也误解了自动化一词。 大多数人认为计算机将为他们完成所有测试…

单例模式的优与劣

转载自 大话设计模式(四)单例模式的优与劣前言首先来明确一个问题&#xff0c;那就是在某些情况下&#xff0c;有些对象&#xff0c;我们只需要一个就可以了&#xff0c;比如&#xff0c;一台计算机上可以连好几个打印机&#xff0c;但是这个计算机上的打印程序只能有一个&…

MySQL存储过程+游标+触发器

【0】README0.1&#xff09;本文旨在 arrange mysql 存储过程及如何在存储中使用游标 的相关知识&#xff1b;0.2&#xff09;delimieter的用法&#xff1a;参见 http://blog.csdn.net/pacosonswjtu/article/details/51407756&#xff1b;【1】存储过程基础1&#xff09;intro…

java迭代器退出迭代_使用Java迭代器修改数据时要小心

java迭代器退出迭代随着本学期的结束&#xff0c;我想我会分享一个关于如何非常熟悉Java迭代器的小故事。 现实世界语境 就上下文而言&#xff0c;我开设了第二年软件组件课程&#xff0c;这是尝试进入该专业的学生的最后障碍。 当然&#xff0c;这门课程对学生来说压力很大&a…

pojo 带参构造函数_带有Java Pojo作为输入输出示例的AWS Lambda函数

pojo 带参构造函数在上一个教程中&#xff0c;我们看到了如何使用Java创建AWS Lambda函数&#xff0c;我们传递了String作为输入&#xff0c;还返回了String作为Output。如果您是第一次创建lambda函数&#xff0c;我建议先阅读该教程。 在本教程中&#xff0c;我们将看到如何传…

MySQL检索数据(过滤+通配符+正则表达式)

【0】README0.1&#xff09;本文部分文字描述转自“MySQL 必知必会”&#xff0c;旨在review “MySQL的基础知识”&#xff1b;【1】检索数据1&#xff09;检索单个列&#xff1a;select a_name from table_name;2&#xff09;检索多个列&#xff1a;select a_name,b_name from…

创建者模式

转载自 设计模式之创建者模式创建者模式又叫建造者模式&#xff0c;是将一个复杂的对象的构建与它的表示分离&#xff0c;使得同样的构建过程可以创建不同的表示。创建者模式隐藏了复杂对象的创建过程&#xff0c;它把复杂对象的创建过程加以抽象&#xff0c;通过子类继承或者重…

buildpack_使用Buildpack容器化Spring Boot应用程序

buildpack在本文中&#xff0c;我们将看到如何使用Buildpacks容器化Spring Boot应用程序。 在先前的一篇文章中&#xff0c;我讨论了Jib 。 Jib允许我们在不使用Dockerfile的情况下将任何Java应用程序构建为Docker映像。 现在&#xff0c;从Spring Boot 2.3开始&#xff0c;我们…

MySQL创建字段+数据处理函数+汇总数据(聚集函数)+分组数据

【0】README0.1&#xff09;本文部分文字描述转自“MySQL 必知必会”&#xff0c;旨在review“MySQL创建字段数据处理函数汇总数据&#xff08;聚集函数&#xff09;分组数据” 的基础知识&#xff1b;【1】创建计算字段1&#xff09;problemsolution1.1&#xff09;problem&am…

apache.camel_Apache Camel 3.2 – Camel的无反射配置

apache.camel在Apache Camel项目中&#xff0c;我们正在努力开发下一个即将发布的Apache Camel 3.2.0版本。 我们在Camel 3中努力研究的问题之一就是使其变得更小&#xff0c;更快。 其中一个方面是配置管理。 您可以按照12要素原则以多种方式完全配置Camel&#xff0c;以使配…

MySQL数据检索+查询+全文本搜索

【0】README0.1&#xff09;本文部分文字描述转自“MySQL 必知必会”&#xff0c;旨在review“MySQL数据检索查询全文本搜索” 的基础知识&#xff1b;【1】使用子查询1&#xff09;查询定义&#xff1a;任何sql 语句都是查询。但此术语一般指 select语句&#xff1b;SQL 还允许…

selenium自动化测试_49自动化测试中最常见的Selenium异常

selenium自动化测试开发人员将始终在编写代码时牢记不同的场景&#xff0c;但是在某些情况下&#xff0c;实现可能无法按预期工作。 相同的原则也适用于测试代码&#xff0c;该代码主要用于测试现有产品的功能&#xff0c;发现bug并确保产品100&#xff05;不受bug影响。 正确…

MySQL的CRUD操作+使用视图

【0】README0.1&#xff09;本文部分文字描述转自“MySQL 必知必会”&#xff0c;旨在review“MySQL数据检索查询全文本搜索” 的基础知识&#xff1b;【1】插入数据1&#xff09;insert是用来插入&#xff08;或添加&#xff09;行到数据库表的。插入可以用以下几种方式使用&a…

mega x_[MEGA DEAL] 2020年完整的Java Master Class Bundle(96%)

mega x通过超过62个小时的培训来掌握最流行的编程语言&#xff0c;从而树立信誉良好的开发人员职业 嘿&#xff0c;怪胎&#xff0c; 这一周&#xff0c;我们JCG促销专区 &#xff0c;我们有另一个极端的报价 。我们正在提供一个巨大的96&#xff05;off的完整2020 Python编程…

tomcat(11)org.apache.catalina.core.StandardWrapper源码剖析

【0】README0.0&#xff09;本文部分文字描述转自 “how tomcat works”&#xff0c;旨在学习 “tomcat(11)StandardWrapper源码剖析” 的基础知识&#xff1b;0.1&#xff09;StandardWrapper 是 Catalina中对Wrapper接口的标准实现&#xff1b;要知道&#xff0c;tomcat 中有…

lambda表达式语法_使用类似Lambda的语法作为Java中的表达式进行切换

lambda表达式语法从Java 14开始&#xff0c; switch表达式具有其他Lambda式 &#xff08; case ... -> labels &#xff09;语法&#xff0c;它不仅可以用作语句&#xff0c;还可以用作计算为单个值的表达式。 对于新的类似Lambda的语法&#xff0c;如果标签匹配&#xff0…