码迷,mamicode.com
首页 > 数据库 > 详细

数据库考点

时间:2014-08-27 10:53:37      阅读:251      评论:0      收藏:0      [点我收藏+]

标签:使用   io   strong   ar   数据   sp   on   c   数据库   

一、查询语句执行顺序

  查询语句执行顺序from->where->group by->having->select->order by

  当同时含有where子句、group by 子句 、having子句及聚集函数时,执行顺序如下:
--执行where子句查找符合条件的数据;
--使用group by 子句对数据进行分组;对group by 子句形成的组运行聚集函数计算每一组的值;最后用having 子句去掉不符合条件的组。

--在返回集字段要么包含在Group By语句的后面,作为分组的依据;要么就要被包含在聚合函数中。
--having 子句中的每一个元素也必须出现在select列表中。(如2题)有些数据库例外,如oracle.
--having子句和where子句都可以用来设定限制条件以使查询结果满足一定的条件限制。
--having子句限制的是组,而不是行。where子句中不能使用聚集函数,而having子句中可以。

二、例题

1、列出各个部门中工资高于本部门的平均工资的员工数和部门号,并按部门号排序。 

create table emp(
id int primary key auto_increment,
name varchar(50),
salary bigint,
deptin int
);
insert into emp values(null,‘zs‘,1000,1),(null,‘ls‘,1100,1),(null,‘ww‘,1100,1),(null,‘zl‘,900,1),
(null,‘zs2‘,1000,2),(null,‘ls2‘,900,2),(null,‘ww2‘,1000,2),(null,‘zl2‘,900,2);

错误写法:salary不能放在having子句中!
select deptin, count(*) from emp group by deptin having salary>avg(salary) order by deptin;

正确写法:

select emp.deptin, count(*) from emp, (select deptin,avg(salary) avg from emp group by deptin) temp
where emp.deptin=temp.deptin and salary>avg
group by emp.deptin order by emp.deptin;

三、存储过程和触发器

四、数据库三范式

五、数据库优化

六、union和union all的区别

七、分页

 

数据库考点

标签:使用   io   strong   ar   数据   sp   on   c   数据库   

原文地址:http://www.cnblogs.com/seven7seven/p/3938873.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!