SQL Union vs联盟全部 - 相似之处和差异
如果必须组合两个或多个查询的结果集,并将每个查询返回的所有行显示为单个结果集,您使用哪个操作符?解决方法是使用联盟集合操作符。除了在MySQl中,set操作符联盟和UNION ALL由DB2,Oracle,SQL Server和Postgre SQL等大多数数据库平台支持。
当使用UNION时,请记住在所有查询中列的顺序、编号和数据类型都应该相同。数据类型不必完全相同,但它们应该是兼容的。例如,CHAR和VARCHAR是兼容的数据类型。如果您想重新收集关于表、SQL数据库操作和编程的信息,那么SQL数据库为初学者和在6天内学习SQL是伟大的复习课程。如果您需要进一步了解编写SQL查询并学习如何构建应用程序或生成业务报告,请参阅SQL培训简介。
联盟和联盟之间的比较
联盟
union命令用于从两个表中选择相关信息,就像加入命令一样。与UNION,默认情况下只选择不同的值。union语句有效地在结果集中选择不同的选择。
SQL Server中的UNION语句
Union运算符用于组合两个或多个SELECT语句的结果集。
以下是SQL中使用Union的一些简单规则:
- UNION中的每个SELECT语句必须具有相同数量的列,且列必须具有相似或兼容的数据类型。
- 每个SELECT语句中的列必须按照相同的顺序。
- 如果两个表的列大小不同,那么在返回数据时,SQL server使用两个列中较大的列。因此,如果选择....联盟statement has a CHAR (5) and CHAR (10) column, then it will display output data of both the columns as a CHAR (10) column.
- 如果表中的列具有不同的列名称,则通常使用不同的列名称。
SQL UNION语法
从表1中选择column_name
联盟
从表2中选择column_name;
UNION ALL
UNION ALL与UNION类似,不同之处在于UNION ALL选择所有的值。因此,使用UNION时,所有重复的行不会被消除,而是被包含。这个操作符只是从满足查询的所有表中提取所有行,并将它们组合成一个表。如果您确信UNION操作返回的所有记录都是唯一的,那么使用UNION all是一个更好的选择,因为它会提供更快的结果。UNION的结果都是未排序的。因此,在获得结果之后,可以使用ORDER by子句对它们进行排序。应该使用最后的SELECT语句插入ORDER BY。
SQL UNION所有语法
从表1中选择column_name
UNION ALL
从表2中选择column_name;
例子
比较联盟和联盟所有人让我们拍摄下表的“联系人”城市,州和拉链列。
城市国家邮政编码
纳什维尔TN 37235.
劳伦斯ks 66049
科瓦利斯或97333
UNION ALL SQL语句
如果我们应用UNION ALL SQL语句,那么我们将合并两个查询,这两个查询将从田纳西州(' TN ')检索并合并记录两次。
语法:
从('ks','tn')中的联系人中选择城市,州,zip
UNION ALL
选择城市,州,Zip从联系人('或' ' TN ')
UNION ALL语法的结果:
城市国家邮政编码
纳什维尔TN 37235.
劳伦斯ks 66049
纳什维尔TN 37235.
科瓦利斯或97333
使用UNION ALL语法,TN记录出现两次,因为两个SELECT语句都检索TN记录。
Union SQL语句
我们现在通过编写语法来使用SQL Union命令:
从('ks','tn')中的联系人中选择城市,州,zip
联盟
选择城市,州,Zip从联系人('或' ' TN ')
联合查询的结果如下:
城市国家邮政编码
科瓦利斯或97333
劳伦斯ks 66049
纳什维尔TN 37235.
请注意,即使SELECT语句检索TN记录,TN记录才会出现一次。Union语法会自动消除两个SQL语句之间的重复记录,也可以对结果进行排序。结果显示的记录按字母顺序排序,因此首先出现CorVallis记录,即使它来自第二个SELECT语句。可以在最后添加组逐个子句以对列表进行排序。
根据定义,一个Union查询消除了所有重复行,并与Union相比,它在排序操作时慢一点。要在SQL Server中执行此操作,union语句必须在两个查询返回的所有列上构建临时索引。如果索引不能为查询构建,那么您将获得SQL错误。在这种情况下,最好使用联盟所有语句。
在其他数据库中的应用程序
在甲骨文中
在这些情况下,Oracle不支持查询的联盟或联盟:
- 包含长,BLOB,CLOB,BFILE或VARRAY数据类型列的查询。
- 包含FOR UPDATE子句或表集合表达式的查询。
在DB2中
在DB2数据库系统中,您可以使用协会和联合以及值子句。
结论
如果您记得使用Union和Union的简单规则和同样的语法,那么根据您的要求组合表变得一件容易的任务。如果要探索基本的SQL查询和其他代码语句,那么请退房是个好主意SQL查询101.。如果您想收集Oracle SQL和Oracle PL / SQL编程的知识,那么它可能值得偷看Oracle SQL简介, 或者Oracle PL/SQL教程-一个全面的培训课程。