1,having:HAVING 子句对 GROUP BY 子句设置条件的方式与 WHERE 子句和 SELECT 语句交互的方式类似。WHERE 子句搜索条件在进行分组操作之前应用;而 HAVING 搜索条件在进行分组操作之后应用。例如

SELECT pub_id, SUM(advance) AS AmountAdvanced,AVG(price) AS AveragePrice FROM pubs.dbo.titles WHERE pub_id > '0800' AND price >= 5 GROUP BY pub_id HAVING SUM(advance) > 15000 AND AVG(price) < 20 ORDER BY pub_id DESC

 

2,Group by:英文的字面意义上理解就是“根据(by)一定的规则进行分组(Group)”。它的作用是通过一定的规则将一个数据集划分成若干个小的区域,然后针对若干个小区域进行数据处理。例子参加百度百科的国家水果例子

 

3,sql算子执行顺序:Where, Group By, Having, Order by

 

4,exists和in

exists作用是检验查询是否返回数据,指定一个子查询,检测行的存在

IN:确定给定的值是否与子查询或列表中的值相匹配。

exits 相当于存在量词:表示集合存在,也就是集合不为空只作用一个集合.例如 exist P 表示P不空时为真; not exist P表示p为空时 为真

in表示一个标量和一元关系的关系。例如:s in P表示当s与P中的某个值相等时 为真; s not in P 表示s与P中的每一个值都不相等时 为真。

如果两个表中一个较小,一个是大表,则子查询表大的用exists,子查询表小的用in

详细可以参看:http://baike.baidu.com/view/1229931.htm

 

5,distinct可以让行数不重复“select distinct name from score where namenotin (select distinctnamefrom scorewhere score<=80)”

 

6,比较浅显的说明三个范式:1NF 每一列只有一个值,2NF 每一行都能区分,3NF 每一个表都不包含其他表已经包含的非主关键字信息。

posted on 2012-03-26 20:04  xnfriday  阅读(389)  评论(0编辑  收藏  举报