SQL读书笔记(九) UNION
2016-03-06 10:34
211 查看
笔记参考自SQL必知必会,写下读书时的笔记,方便以后查询阅读,也希望能帮到各位道友哦~
利用UNION操作符将多条SELECT语句组合成一个结果集。
UNION其实不难,也就注意几点就行,UNION ALL包括重复行,而UNION不包含。
很简单的例子就是,如果有两个人名字相同但是职业不同,但我们使用UNION输出所有人时只会输出其中的一人,而UNION ALL则会全输出。。
按我的理解什么时候使用UNION呢,就是我们需要从多个表中去找数据时,就类似我们要统计所有产品的顾客,而产品之间没有联系,自成一张表,我们就需要用UNION来输出所有的顾客集
主要有两种情况需要使用组合查询:
在一个查询中从不同的表返回结构数据;
对一个表执行多个查询,按一个查询返回数据。
多数情况下,组合相同表的两个查询所完成的工作与具有多个WHERE子句条件的一个查询所完成的工作相同。换句话说,任何具有多个WHERE子句的SELECT语句都可以作为一个组合查询,在下面可以看到这一点。
举个例子,假如需要Illinois、Indiana和Michigan等美国几个州的所有顾客的报表,还想包括不管位于哪个州的所有的Fun4All。当然可以利用WHERE子句来完成此工作,不过这次我们使用UNION。
可以通过两个查询语句完成上述步骤
这条语句由前面的两条SELECT语句组成,之间用UNION关键字分隔。UNION指示DBMS执行这两条SELECT语句,并把输出组合成一个查询结果集。
在这个简单的例子中,使用UNION可能比使用WHERE子句更为复杂。但对于较复杂的过滤条件,或者从多个表(而不是一个表)中检索数据的 情形,使用UNION可能会使处理更简单。
UNION规则
可以看到,UNION非常容易使用,但在进行组合时需要注意几条规则。
UNION必须由两条或两条以上的SELECT语句组成,语句之间用关键字UNION分隔(因此,如果组合四条SELECT语句,将要使用三 个UNION关键字)。
UNION中的每个查询必须包含相同的列、表达式或聚集函数(不过,各个列不需要以相同的次序列出)。
列数据类型必须兼容:类型不必完全相同,但必须是DBMS可以隐含转换的类型(例如,不同的数值类型或不同的日期类型)。 如果遵守了这些基本规则或限制,则可以将UNION用于任何数据检索操作。
利用UNION操作符将多条SELECT语句组合成一个结果集。
UNION其实不难,也就注意几点就行,UNION ALL包括重复行,而UNION不包含。
很简单的例子就是,如果有两个人名字相同但是职业不同,但我们使用UNION输出所有人时只会输出其中的一人,而UNION ALL则会全输出。。
按我的理解什么时候使用UNION呢,就是我们需要从多个表中去找数据时,就类似我们要统计所有产品的顾客,而产品之间没有联系,自成一张表,我们就需要用UNION来输出所有的顾客集
主要有两种情况需要使用组合查询:
在一个查询中从不同的表返回结构数据;
对一个表执行多个查询,按一个查询返回数据。
多数情况下,组合相同表的两个查询所完成的工作与具有多个WHERE子句条件的一个查询所完成的工作相同。换句话说,任何具有多个WHERE子句的SELECT语句都可以作为一个组合查询,在下面可以看到这一点。
举个例子,假如需要Illinois、Indiana和Michigan等美国几个州的所有顾客的报表,还想包括不管位于哪个州的所有的Fun4All。当然可以利用WHERE子句来完成此工作,不过这次我们使用UNION。
SELECT cust_name, cust_contact, cust_email FROM Customers WHERE cust_state IN ('IL','IN','MI'); SELECT cust_name, cust_contact, cust_email FROM Customers WHERE cust_name = 'Fun4All';
可以通过两个查询语句完成上述步骤
SELECT cust_name, cust_contact, cust_email FROM Customers WHERE cust_state IN ('IL','IN','MI') UNION SELECT cust_name, cust_contact, cust_email FROM Customers WHERE cust_name = 'Fun4All';
这条语句由前面的两条SELECT语句组成,之间用UNION关键字分隔。UNION指示DBMS执行这两条SELECT语句,并把输出组合成一个查询结果集。
SELECT cust_name, cust_contact, cust_email FROM Customers WHERE cust_state IN ('IL','IN','MI') OR cust_name = 'Fun4All';
在这个简单的例子中,使用UNION可能比使用WHERE子句更为复杂。但对于较复杂的过滤条件,或者从多个表(而不是一个表)中检索数据的 情形,使用UNION可能会使处理更简单。
UNION规则
可以看到,UNION非常容易使用,但在进行组合时需要注意几条规则。
UNION必须由两条或两条以上的SELECT语句组成,语句之间用关键字UNION分隔(因此,如果组合四条SELECT语句,将要使用三 个UNION关键字)。
UNION中的每个查询必须包含相同的列、表达式或聚集函数(不过,各个列不需要以相同的次序列出)。
列数据类型必须兼容:类型不必完全相同,但必须是DBMS可以隐含转换的类型(例如,不同的数值类型或不同的日期类型)。 如果遵守了这些基本规则或限制,则可以将UNION用于任何数据检索操作。
相关文章推荐
- 安卓数据库操作
- asp.net及IIS使用Oracle.DataAccess连接Oracle11g总结
- DEBUG:重装mysql失败的解决办法
- SQL编程
- redis 在spring boot工程中的应用(二)
- oracle数据库大小文件最大值的计算方式
- Redis和Memcache对比及选择
- Redis源代码分析(三)---dict哈希结构
- Transact-SQL 参考 返回并允许要查询的 Microsoft® SQL Server™ 版本信息
- hibernate的配置——数据库的基本连接信息
- 【转】WINDOWS CE 数据库编程
- 【转】WinCE数据库之CCeDBDatabase
- Canal+Otter - 前日篇(1)
- 数据库索引
- SQLiteDatabase
- SQL Server CE开发环境建立过程
- 【SQL Server CE2.0】创建加密的数据库(源代码)
- 【SQL Server CE2.0】打开加密的数据库(源代码)
- 数据库索引的使用
- SQL注入与防范