刷题总结1.0
文章目录
1.union all 和 union
- union用于合并两个或多个select语句的结果集
- union内部的select语句必须拥有相同数量的列
- 同时,列也必须拥有相似的数据类型
- 同时,每条select语句中的列的顺序必须相同
- union操作符选取不同的值,即union是去重的;而union all 是不去重的。
- union结果集的列名 == union中第一个select语句中的列名
2.round()、floor() 、ceiling()
1.round(value,n)
- 对value进行**运算——>取n位小数**
- 取小数时,进行四舍五入计算
2.floor(value)
- 返回 <= value 的最小整数
3.ceiling(value)
- 返回 >= value 的最小整数
3.日期函数
- curdate()——返回当前日期
- curtime()——返回当前时间
- now()————返回当前日期和时间
- year(date)——返回date的年份
- month(date)—返回date的月份
- day(date)——返回date的日期
- date_add(date,interval exper type)——返回在date的基础上加上一个expr大小的type类型的日期
- datediff(date1,date2)——date1-date2的天数(可以是负数)
4.case函数的两种用法
1.有单值表达式
CASE <单值表达式>
WHEN <表达式值> THEN <SQL语句或者返回值>
WHEN <表达式值> THEN <SQL语句或者返回值>
...
WHEN <表达式值> THEN <SQL语句或者返回值>
ELSE <SQL语句或者返回值>
END 命名
- 单值表达 = when之后的表达式值 ,就返回 then 后的语句
- 最后都没有,就返回else后的语句
- end 之后的是该项的替代命名
- 缺点:只能做=比较,不能做>或< 或<>比较
1.无单值表达式
-
CASE WHEN <表达式> THEN <SQL语句或者返回值> WHEN <表达式> THEN <SQL语句或者返回值> ... WHEN <表达式> THEN <SQL语句或者返回值> ELSE <SQL语句或者返回值> END 命名
5.if判断的两种用法
1.三个条件
-
IF(expr1,expr2,expr3)
- 如果 expr1 是TRUE,则返回expr2, 否则返回expr3
- IF() 的返回值为数字值或字符串值,具体情况视其所在语境而定。
2.两个条件(IFNULL)
-
IFNULL(expr1,expr2)
- 假如 expr1 不为 NULL,就返回 expr1,否则返回 expr2。
- IF() 的返回值为数字值或字符串值,具体情况视其所在语境而定。
3.两个条件(NULLIF)
-
NULLIF(expr1,expr2)
- 如果 expr1 = expr2 成立,那么返回值为NULL,否则返回值为 expr1。
6.字符串截取
1.left()
-
left(str,length)
从左侧开始截取-
left(被截取字符串, 截取长度)
-
SELECT LEFT('www.yuanrengu.com',8)
结果为:www.yuan
-
2.right()
-
right(str, length)从右侧开始截取
-
right(被截取字符串, 截取长度)
-
SELECT RIGHT('www.yuanrengu.com',6)
结果为:gu.com
-
3.substring(str,pos, length)
-
substring(被截取字符串, 从第几位开始截取,截取长度)
-
SELECT SUBSTRING('www.yuanrengu.com', 9, 3)
结果为:ren
4.substring_index(str, delim, count)
-
substring_index(被截取字符串,关键字,关键字出现的次数)
-
SELECT SUBSTRING_INDEX('www.yuanrengu.com', '.', 2);
结果为:www.yuanrengu
-
count可以为负数,从末尾开始往前截取
-
如果关键字不在,则返回整个字符串
7.having和where的区别
- having 是在分组后对数据进行过滤,where 是在分组前对数据进行过滤
- having后面可以使用分组函数(统计函数),where后面不可以使用分组函数
- where 是对分组前记录的条件,如果某行记录没有满足where字句的条件,那么这行记录不会参加分组;而having是对分组后数据的约束
8.sql书写顺序
select——>from——>where——>group by——>having——>order by——>limit
9.窗口函数
1.语法
-
<窗口函数> over (partition by <用于分组的列名> order by <用于排序的列名>)
2.<窗口函数>的位置
- 专用窗口函数,比如rank, dense_rank, row_number等
- 聚合函数,如sum. avg, count, max, min等
3.功能
- 具有分组和排序功能
- 不减少原表行数
- 原则上只在selec子句中