处理数据就是好好利用。java数据库一个重要的能力,因为数据库中有很多数据,当我们想要找到一个或一个类别的数据时,它将通过数据查询的功能来实现。在数据操作中,union合并集合运算这是其中之一。让我们谈谈union合并集合运算的相关知识点。
不管你是java程序员还是java零基础相信小白对集合的概念并不陌生。在集合论中,两个集合(A和B)并集是包含A和B中所有元素的集合。换句话说,如果一个元素属于任何输入集,它也属于结果集。union合并集合运算的概念也是一样的,union集合运算可以将两个输入查询的结果集合成一个结果集。如果一行出现在任何输入集合中,也会出现在union运算的结果中。
对于union合并集合运算,有以下三点需要注意:
(1)参与集合运算的两个查询生成的结果集必须包含相同的列数,相应的列必须具有兼容的数据类型;
(2)集合运算结果中的列名由第一个查询决定。因此,如果要将别名分配给结果列,则应在第一个查询中分配相应的别名;
(3)集合运算对行进行比较时,认为有两个NULL值相等。
union集合运算分为unionall和union distinct两者的区别在于两种情况unionall会保留重复行,但是union distinct重复行将被删除。
unionall合并两个集合,并保留重复行。关于unionall需要注意:unionall事实上,它不会比较行,也不会删除重复行。它只是一个合并操作;
因为unionall重复行不会被删除,所以它的结果是多集,而不是真正的集合,因为同样的行可能会在结果中出现很多次。
SQL查询代码:
USE TSQLFundamentals2008;
GO
-- UNION ALL合并两个集合,并保留重复行
SELECT country,region,city FROM HR.Employees
UNION ALL
SELECT country,region,city FROM Sales.Customers
查询结果如下:
union distinct会合并两个集合,但会删除重复行。对于union distinct需要注意:从处理过程来看union distinct首先将多个集合合并为多个集合,然后将重复行删除为集合;从运算结果来看,union distinct这是一个真正的集合,而不是多集。
SQL查询代码:
USE TSQLFundamentals2008;
GO
-- UNION(隐含DISTINCT)合并两个集合,但重复行将被删除
SELECT country,region,city FROM HR.Employees
UNION
SELECT country,region,city FROM Sales.Customers
查询结果如下:
在集合并查询结果时要注意:合并结果集时,查询字段的数量必须相同;查询字段类型在MySQL不一定是完全一样的,但是Oracle必须有相同的类型。例如:查询包含MANAGER 和SALESMAN 的员工信息
select * from emp where job = ‘MANAGER’and job = ‘SALESMAN’;
或 者 select * from emp where job in(‘MANAGER’, ‘SALESMAN’);
以上内容是对的union合并集合运算的介绍,希望本文能对您有所帮助,关于unionall和union distinct两种情形区分,在学习了上述知识点后,每个人都应该练习几次实际操作,以便真正掌握它union合并集合操作,然后提高自己java编程水平。