从今天开始系统的学习下数据库,查缺补漏,算是记录一个学习的过程吧。
1、表集合操作
- 联合运算:从两个查询返回的结果集中去掉重复值后合并的结果,使用 UNION 运算。
- 全联合运算:返回两个结果的并集,包括重复值,使用 UNION ALL 操作 .
- 相减运算:返回在第一个查询中存在而在第二个查询中不存在的数据,用 MINUS 操作。
- 相交运算:返回多个查询结果中的相同数据,用 INSERTSECT 操作 .
1.1 联合和全联合运算区别
- 联合运算不包括重复的值,默认按select 语句第一列升序排序
- 全联合包含重复值,默认情况下输出不排序。
例如:
//创建一个和emp 相同的表emp_history .
CREATE TABLE EMP_HISTORY AS SELECT * FROM EMP ;
/* 联合运算 */
SELECT ID ,NAME ,SAL FROM EMP WHERE ID< 3
UNION
SELECT ID ,NAME ,SAL FROM EMP_HISTORY ;
ID NAME SAL
1 xiaoqiang 1789
2 wangcai 1897
3 zhangsan 1999
/* 全联合运算 */
SELECT ID ,NAME ,SAL FROM EMP WHERE ID < 3
UNION ALL
SELECT ID ,NAME ,SAL FROM EMP_HISTORY ;
ID NAME SAL
1 xiaoqiang 1789
2 wangcai 1897
1 xiaoqiang 1789
2 wangcai 1897
3 zhangsan 1999
1.2 相减运算
返回差集 。
SELECT ID ,NAME ,SAL FROM EMP WHERE ID < 3
MINUS
SELECT ID ,NAME ,SAL FROM EMP_HISTORY ;
ID NAME SAL
3 zhangsan 1999
* 1.3 相交运算 *
返回交集。
SELECT ID ,NAME ,SAL FROM EMP WHERE ID < 3
INTERSECT
SELECT ID ,NAME ,SAL FROM EMP_HISTORY ;
ID NAME SAL
1 xiaoqiang 1789
2 wangcai 1897