赞
踩
函数的作用是把我们经常使用的代码封装起来,需要的时候直接调用即可。这样既提高了代码效率,又提高了可维护性。在SQL中使用函数,极大地提高了用户对数据库的管理效率。
操作数据对象。
接受参数返回一个结果。
只对一行进行变换。
每行返回一个结果。
可以嵌套。
参数可以是一列或一个值。
注意:字符串的位置是从1开始的。
获取日期、时间:
日期与时间戳:
获取月份、星期、星期数、天数等函数:
时间和秒钟转换的函数:
计算日期和时间的函数:
日期的格式化与解析:
聚合函数作用于一组数据,并对一组数据返回一个值。
AVG(),SUM(),MAX(),MIN(),COUNT()
聚合函数不能嵌套调用。比如不能出现类似“AVG(SUM(字段名称))”形式的调用。
- SELECT column,group_function(column)
- FROM table
- [WHERE condition]
- [GROUP BY group_by_expression]
- [ORDER BY column];
2.4 GROUP BY中使用WITH ROLLUP
使用WITH ROLLUP关键字字后,在所有查询出的分组记录之后增加一条记录,该记录计算查询出的所有记录的总和,即统计记录数量。
- SELECT department_id,AVG(salary)
- FROM employee
- WHERE department_id>80
- GROUP BY department_id WITH ROLLUP;
注意:当使用ROLLUP时,不能同时使用ORDER BY 子句进行结果排序,即ROLLUP和ORDER BY是互相排斥的。
过滤分组:HAVING子句
1、行已经被分组
2、使用聚合函数
3、满足HAVING子句中条件的分组将被显示。
4、HAVING不能单独使用,必须要跟GROUP BY一起使用。
- SELECT column,group_function
- FROM table
- [WHERE condition]
- [GROUP BY group_by_expression]
- [HAVING group_condition]
- [ORDER BY column];
非法使用聚合函数:不能在WHERE子句中使用聚合函数。
WHERE和HAVING的对比
区别1:WHERE可以直接使用表中的字段作为筛选条件,但不能使用分组中的计算函数作为筛选条件;HAVING必须要与GROUP BY配合使用,可以把分组计算的函数和分组字段作为筛选条件。
区别2:如果需要通过连接从关联表中获取需要的数据,WHERE是先筛选后连接,而HAVING是先连接后筛选。
- SELECT
- FROM
- WHERE 多表的连接条件
- AND 不包含组函数的过滤条件
- GROUP BY
- HAVING 包含组函数的过滤条件
- ORDER BY ASE/DESC
- LIMIT
- #其中:
- #1、from:从哪些表中筛选
- #2、where:从表中筛选的条件
- #3、group by:分组依据
- #4、having:在统计结果中再次筛选
- #5、order by:排序
- #6、limit:分页
1.关键字的顺序是不能颠倒的:
SELECT...FROM...WHERE...GROUP BY...HAVING...ORDER BY...LIMIT...
2.SELECT语句的执行顺序:
FROM->WHERE->GROUP BY->SELECT->ORDER BY->LIMIT
子查询指一个查询语句嵌套在另一个查询语句内部的查询。
语法结构:
- SELECT select_list
- FROM table
- WHERE expr operator
- (SELECT select_list
- FROM table);
子查询(内查询)在主查询之前一次执行完成。
子查询的结果被主查询(外查询)使用。
注意事项:
子查询要包含在括号内
将子查询放在比较条件的右侧
单行操作符对应单行子查询,多行操作符对应多行子查询
单行子查询:
单行子查询操作符:
多行子查询:
多行子查询操作符
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。