1,聚集函数不能出现在where子句中:原因是聚集函数是用来对一个结果集进行运算的,而where子句是用来产生结果集的。在where子句中用聚集函数就相当于在结果集没有产生的时候就要用聚集函数对它进行处理,这显然是不行的。
select * from emp where sal > (select avg(sal) from emp where empno = 5),这个是可以的,相当于一个无关子查询。我们所说的是select * from emp where sal > avg(sal)
2,关系代数中的除法运算
首先理解结果:R÷A = B,这个B到底是什么呢?B×A包含于R,可能等于R,这时刚好除尽,否则差集相当于余数。
在理解具体应用场合:(下面转自http://blog.csdn.net/guoxiaojie_415/archive/2009/10/11/4641208.aspx )
1,除法就是在两个实体的联系中查找实体,除的集合存在一部分属性是被除的集合的真子集。如R÷S,集合S的属性集合中存在属性是集合R属性集合的真子集。
2,假设有R,S,及它们的关系集合RS。则RS÷S,的含义就是,在R和S的关系RS中查询与S中的所有元组都有关系的R元组。
关系代数中的5种基本运算:并,差,笛卡尔乘积,选择,投影。我认为,与集合相比较,选择(横向)和投影(纵向)是二维表所特有的处理方法。