1.当视图满足以下条件时才可以对视图中的数据进行更新:
SELECT 子句中未使用 DISTINCT;
FROM 子句中只有一张表;
未使用 GROUP BY 子句;
未使用 HAVING 子句。因为视图和表需要同时进行更新,因此通过汇总得到的视图无法进行更新
2.算术函数
ABS—— 绝对值 ABS(数值)
MOD—— 求余 MOD(被除数,除数)
ROUND—— 四舍五入 ROUND(对象数值,保留小数的位数)
3.字符串函数
CONCAT—— 拼接 CONCAT(字符串1,字符串2,……)
LENGTH—— 字符串长度 LENGTH(字符串)MySQL 中,LENGTH 函数返回的是字节的长度,LENGTH (“山田”) 返回的结果是 6,因为 UTF-8 编码中一个汉字占 3 个字节。若要在 MySQL 中计算字符的长度,请使用 CHAR_LENGTH 函数,CHAR_LENGTH (“山田”) 返回的结果是 2
LOWER—— 小写转换 LOWER(字符串)
UPPER—— 大写转换 UPPER(字符串)
REPLACE—— 字符串的替换 REPLACE(对象字符串,替换前的字符串,替换后的字符串)
SUBSTRING—— 字符串的截取 SUBSTRING(对象字符串 FROM 截取的起始位置 FOR 截取的字符数)
4.日期函数
CURRENT_DATE—— 当前日期 没有参数,无需使用括号
CURRENT_TIME—— 当前时间 没有参数,无需使用括号
CURRENT_TIMESTAMP—— 当前日期和时间 获取当前时间戳
EXTRACT—— 截取日期元素 EXTRACT(日期元素 FROM 日期) eg. EXTRACT(YEAR FROM CURRENT_TIMESTAMP) 该函数的返回值并不是日期类型,而是数值类型
5.CAST—— 类型转换 CAST(转换前的值 AS 想要转换的数据类型)
COALESCE—— 将 NULL 转换为其他值 COALESCE(数据1,数据2,数据3,……) 返回参数中左侧开始第一个不是 NULL 的值
6.可以在 SUM 函数中使用 CASE 表达式
-- 对按照商品种类计算出的销售单价合计值进行行列转换
SELECT SUM(CASE WHEN product_type = '衣服'
THEN sale_price ELSE 0 END) AS sum_price_clothes,
SUM(CASE WHEN product_type = '厨房用具'
THEN sale_price ELSE 0 END) AS sum_price_kitchen,
SUM(CASE WHEN product_type = '办公用品'
THEN sale_price ELSE 0 END) AS sum_price_office
FROM Product;
7.排序方式
RANK 函数 计算排序时,如果存在相同位次的记录,则会跳过之后的位次。比如,有 3 条记录排在第 1 位时:1 位、1 位、1 位、4 位……
DENSE_RANK 函数 同样是计算排序,即使存在相同位次的记录,也不会跳过之后的位次。比如,有 3 条记录排在第 1 位时:1 位、1 位、1 位、2 位……
ROW_NUMBER 函数 赋予唯一的连续位次。比如,有 3 条记录排在第 1 位时:1 位、2 位、3 位、4 位……
8.作为窗口函数使用的聚合函数
a.在按照时间序列的顺序,计算各个时间的销售额总额等的时候,通常都会使用这种称为累计的统计方法。像这样以 “自身记录(当前记录)” 作为基准进行统计,就是将聚合函数当作窗口函数使用时的最大特征
b.计算移动平均
在窗口中可以指定更加详细的汇总范围,该备选功能中的汇总范围称为框架
--指定“最靠近的3行”作为汇总对象
SELECT product_id, product_name, sale_price,
AVG(sale_price) OVER (ORDER BY product_id
ROWS 2 PRECEDING) AS moving_avg
FROM Product;
这种统计方法称为移动平均(moving average)。ROWS 2 FOLLOWING 表示 “截止到之后 2 行 “,ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING 表示从之前 1 行开始到之后 1 行结束,即包括当前记录一共 3 行
***********重点********
9.GROUPING 运算符 ROLLUP—— 同时得出合计和小计
10.GROUPING 函数 —— 让 NULL 更加容易分辨
11.使用 GROUPING 函数和 CASE WHEN 子句在超级分组记录的键值中插入字符串
12.CUBE—— 用数据来搭积木 CUBE 语法和 ROLLUP 相同
13.GROUPING SETS—— 取得期望的积木
《SQL 基础教程》笔记 | 半块苹果的日志
《SQL基础教程》笔记blog.maqingbo.com