数据集
关系数据库起源于数学中的集合概念,所以集合与集合之间,也同样继承了数学集合之间的运算。数据集可以是一张表,一张表的子集,多张表,临时表变量,虚拟列,scalar值
数据集运算的种类
在T-SQL中,关系运算实际上可以分为4类,这里有个例子:
分别为两个不同会议参加人员的记录,分为Meeting1和Meeting2,如下
1.A∩B,取A和B的交集,也就是相同的数据
2.A∪B,取A和B的并集,也就是两个表的数据相加
3.A-B,取A和B的补集,也就是取A有的,在B没有的数据;B-A功能一样,意义相反,取B有的,A没有的数据。
数据集的运算条件
并不是所有的数据集都可以做运算,就像一个苹果+一个压力不能等于2一样,在T-SQL中,数据集之间的运算需要满足3个条件:
1.两个数据集之间必须有相同数量的列
2.两个数据集之间的列顺序应该一一对应
3.每个对应的列都得是数据类型一致
说白了就是,两个数据集之间的运算,对应的列都要一毛一样
数据集运算在T-SQL中的实现
1.A∪B 使用UNION实现
UNION表示了A∪B的关系 ,当遇到两个数据集中相同的行时,保留唯一一个
UNION ALL同样表示了A∪B的关系,但与UNION不同的是,当遇到两个数据集中重复的行,全部保留
2.A∩B,使用INTERSECT关键字来实现
3.A-B,使用EXCEPT实现
数据集运算的别名和排序
如果没有为数据列指定别名,则按照第一个数据集中对应的列名来算。
比如上面说的例子表,Meeting1的列名为name和age,Meeting2的列名为name2和age2
如果我们想自定义别名,则需要为数据集运算中出现在第一位的数据集指定别名
对运算之后的结果进行排序是一件非常简单的事,只需要在运算的最后加上ORDER BY子句。
1.排序是针对整个数据集运算后的最终结果进行排序的,并不是针对单个数据集
2.ORDER BY后面排序的z字段名称s是第一个数据集的字段名或别称