摘要:通常称为内部结合,它可以应付大部份的结合查询需求,内部结合有两种写法,差异在把结合条件设定在子句或子句中。使用执行结合查询除了使用上列讨论的方式外,还有另外一种结合查询语法虽然这两种写法看起来的差异很大,不过它们的想法会是一样的。
系列文章目录
1 使用多个表格在「world」资料库的「country」表格中,储存世界上所有的国家资料,其中有一个栏位「Capital」用来储存首都资料,不过它只是储存一个编号;另外在「city」表格中,储存世界上所有的城市资料,它主要的栏位有城市编号和城市的名称:
虽然「country」表格自己没有储存城市名称,不过它可以使用「Capital」栏位的值,对照到「city」表格中的「ID」栏位,也可以知道城市的名称。在这样的表格设计架构下,如果你想要查询「所有国家的首都名称」:
这样的查询需求就称为「结合查询」,也就是你要查询的资料,来自于一个以上的表格,而且两个表格之间具有上列讨论的「对照」情形。
2 Inner Join
在「cmdev」的员工资料(emp)表格中,部门编号(deptno)栏位是用来储存员工所属的部门用的;不过有一些员工并没有部门编号:
所以如果你使用「内部结合」的作法执行下列的查询,你会发现少了两个员工的资料:
这是因为使用「内部结合」的查询,一定要符合「结合条件」的资料才会出现:
如果你想查询的资料是「包含部门名称的员工资料,可是没有分派部门的员工就不用出现了」,那使用「内部结合」就可以完成你的工作了;可是如果你想要查询的资料是「包含部门名称的员工资料,没有分派部门的员工也要出现」,那你就要使用「OUTER JOIN」,这种结合查询通常称为「外部结合」:
除了多一个「LEFT」或「RIGHT」,还有把「INNER」换成「OUTER」外,其它的部份与内部结合的作法都是一样的。
3.1 LEFT OUTER JOIN所以在结合查询的应用中,如果你想要查询的资料是「包含部门名称的员工资料,没有分派部门的员工也要出现」,也就是希望不符合结合条件的资料也要出现的话,就要换成使用「LEFT OUTER JOIN」来执行结合查询。OUTER JOIN分为LEFT和RIGHT两种,在这个范例中,要使用LEFT才符合查询的需求:
3.2 RIGHT OUTER JOIN其实使用「LEFT OUTER JOIN」或是「RIGHT OUTER JOIN」并没有差异,以上列的需求来说,要查询「包含部门名称的员工资料,没有分派部门的员工也要出现」,就是要以「cmdev.emp」表格的资料为主,所以下列两种写法所得到的结果是完全一样的:
了解两种「OUTER JOIN」的后,下列这两个看起来会有点混淆的查询,虽然只有「LEFT」与「RIGHT」的差异,它们所完成的查询需求,却是完全不一样的:
所以使用「RIGHT OUTER JOIN」的查询需求,就成为「部门名称与该部门的员工资料,没有员工的部门也要出现」:
4 合并查询在关联式资料库中,因为表格的设计,你常会使用结合查询来取得需要的资料,结合查询指的是在「一个」查询叙述中使用「多个」资料表。而现在要讨论的「合并、UNION」查询,指的是把一个以上的查询叙述所得到的结果合并为一个,有这样的需求时,你会在多个查询叙述之间使用「UNION」关键字:
以下列这两个独立的查询来说,它们在执行以后会得到各自传回查询的纪录:
如果使用「UNION」关键字把这两个查询合并起来的话,就只会得到一个查询结果,不过这个查询结果会包含两个查询所得到的纪录:
在执行合并查询的时候,有一些规则要知道与遵守。第一个规则是回传结果的栏位名称:
第二个规则是所有查询叙述的栏位数量一定要一样:
上列的范例比较看不出为什么要使用合并查询,一般来说,你大概会因为下列的原因,把原来的查询叙改用合并查询的写法来完成你的需求:
via codedata
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/46329.html
摘要:通常称为内部结合,它可以应付大部份的结合查询需求,内部结合有两种写法,差异在把结合条件设定在子句或子句中。使用执行结合查询除了使用上列讨论的方式外,还有另外一种结合查询语法虽然这两种写法看起来的差异很大,不过它们的想法会是一样的。 系列文章目录 1 使用多个表格 在「world」资料库的「country」表格中,储存世界上所有的国家资料,其中有一个栏位「Capital」用来储存首都...
摘要:,是专门用来查询关系型数据库的语言。分组单独使用是没什么意义的,除非是和聚合函数一起用。联合操作符用于合并两个或多个语句的结果集。列出在中国和美国的所有的雇员子查询实际上就是用子语句返回一个值,来方便主句查询。 SQL Structured Query Language,是专门用来查询关系型数据库的语言。也就是说不是关系型数据库,就不能用SQL查询了。 MySQL的主要学习,其实都是集...
摘要:不过根据史料的考证,其实华雄的头是被孙坚砍掉的。这就是超新手入门系列文章的目的,内容的范围涵盖认证考试,因为它的范围也是一个开发人员必须具备的技能。 三国演义 三国演义是一部在华人世界非常普及的历史小说,是由罗贯中根据元朝的三国志平话改编,他以东汉末年魏、蜀、吴三国斗争为主题,收集历史资料和说书人的故事,成为这一部大家都非常熟悉的故事。或许我们现在觉得这些历史已经跟我们没什么关系了,...
摘要:不过根据史料的考证,其实华雄的头是被孙坚砍掉的。这就是超新手入门系列文章的目的,内容的范围涵盖认证考试,因为它的范围也是一个开发人员必须具备的技能。 三国演义 三国演义是一部在华人世界非常普及的历史小说,是由罗贯中根据元朝的三国志平话改编,他以东汉末年魏、蜀、吴三国斗争为主题,收集历史资料和说书人的故事,成为这一部大家都非常熟悉的故事。或许我们现在觉得这些历史已经跟我们没什么关系了,...
摘要:列与值必须按一一对应增加多行刘备皇室成员孙策江东集团曹操宦官后裔纵横结合定位,增加数据。刘备每条记录都有字段来约束。代表填充必须是和配合使用场景学号,。范围的满足取出不在第个栏目和不在第个栏目的商品或分别实现。 数据库概念 一台服务器下有多个库,一个库下有1到多张表,表有多行多列的数据。postgresql也是一个开源数据库,而且sql标准执行方面,比mysql要严格。 表格 -->...
阅读 2404·2021-11-18 10:07
阅读 2123·2021-11-16 11:44
阅读 941·2021-08-03 14:04
阅读 626·2019-08-30 13:08
阅读 2460·2019-08-29 15:33
阅读 887·2019-08-29 14:07
阅读 2828·2019-08-29 14:04
阅读 1307·2019-08-29 11:19