SQL小结(一)

一.数据库中having用法

having经常与group by和聚合函数(COUNT, SUM, AVG, MIN, or MAX)一起使用,用来过滤由GROUP BY语句返回的记录集。聚合函数通过作用于一组数据而只返回一个单个值,因此,在SELECT语句中出现的元素要么为一个聚合函数的输入值,要么为GROUP BY语句的参数,否则会出错。

HAVING语句的存在弥补了WHERE关键字不能与聚合函数联合使用的不足。

语法:

SELECT column1, column2, ... column_n, aggregate_function (expression)
FROM tables
WHERE predicates
GROUP BY column1, column2, ... column_n
HAVING condition1 ... condition_n;

同样使用本文中的学生表格,如果想查询平均分高于80分的学生记录可以这样写:

SELECT id, COUNT(course) as numcourse, AVG(score) as avgscore

FROM student

GROUP BY id

HAVING AVG(score)>=80;

在这里,如果用WHERE代替HAVING就会出错//where 的地方用到的数据是一组数据,不能是一个数

二.where、having之间的区别和用法

聚合函数是比较where、having 的关键。 
开门见山。where、聚合函数、having 在from后面的执行顺序:

where>聚合函数(sum,min,max,avg,count)>having

列出group by来比较二者。()因where和having 在使用group by时问的最多) 
若须引入聚合函数来对group by 结果进行过滤 则只能用having。(此处不多说,自己想 是先执行聚合函数还是先过滤 然后比对我上面列出的执行顺序 一看便知)

样例:select sum(score) from student  where sex='man' group by name having sum(score)>210
注意事项 : 
1、where 后不能跟聚合函数,因为where执行顺序大于聚合函数。 
2、where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,条件中不能包含聚组函数,使用where条件显示特定的行。 
3、having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件显示特定的组,也可以使用多个分组标准进行分组。

三.ALTER、MODIFY和UPDATE的区别?

1、modify是修改字段类型和长度的(即修改字段的属性)。
2、alter是修改表的数据结构(modify是alter的一种用法/属性)。
sql:alter table tablename modify (name varchar2(20));
解释:修改tablename表中name字段的长度为20个字符

modidy是修改字段的属性 ,只是alter的一个功能 ,alter还能做add,set等操作 。
修改数据表的名称用rename ,字段名以及属性用modify ,字段值用set ,这些全是alter 。

3、update是修改数据内容的。
sql:update table tablename set name =’张三‘ where name =’李四‘。
解释:更新tablename表中‘李四’的name为’张三‘。
备注:modify和alter执行命令完成即生效,update语句要“commit”之后才会生效。

参考资料:https://zhidao.baidu.com/question/98325731.html

 


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章