**
Task03:复杂⼀点的查询
**
3.1 视图
1.视图与表的区别—“是否保存了实际的数据”。
2.创建视图:
CREATE VIEW <视图名称>(<列名1>,<列名2>,…) AS <SELECT语句>
3.修改视图结构:
ALTER VIEW <视图名> AS <SELECT语句> 4.视图的更新:
对于⼀个视图来说,如果包含以下结构的任意⼀种都是不可以被更新的:
聚合函数 SUM()、MIN()、MAX()、COUNT() 等。
DISTINCT 关键字。
GROUP BY ⼦句。
HAVING ⼦句。
UNION 或 UNION ALL 运算符。
FROM ⼦句中包含多个表。
5.删除视图:
DROP VIEW <视图名1> [ , <视图名2> …]
3.2 子查询—关联子查询
暂存疑;
3.3算数函数
- ABS – 绝对值: ABS( 数值 )
- MOD – 求余数: MOD( 被除数,除数 )
- ROUND – 四舍五⼊: ROUND( 对象数值,保留小数的位数 )
3.4字符串函数
1.CONCAT – 拼接:CONCAT(str1, str2, str3)
2.LENGTH – 字符串⻓度:LENGTH( 字符串 )
3.LOWER – ⼩写转换
4. REPLACE – 字符串的替换: REPLACE( 对象字符串,替换前的字符串,替换后的字符串 )
5. SUBSTRING – 字符串的截取: SUBSTRING (对象字符串 FROM 截取的起始位置 FOR 截取的字符数)
3.5转换函数
- CAST – 类型转换:CAST(转换前的值 AS 想要转换的数据类型)
- COALESCE – 将NULL转换为其他值:COALESCE(数据1,数据2,数据3……)
3.6谓词
-
LIKE谓词 – ⽤于字符串的部分⼀致查询
LIKE ‘ddd%’
LIKE ‘%ddd’
LIKE ‘%ddd%’
LIKE ‘abc_’: _ 下划线匹配任意 1 个字符 -
BETWEEN谓词 – ⽤于范围查询结果包括临界值
-
IS NULL、 IS NOT NULL – ⽤于判断是否为NULL
-
IN谓词 – OR的简便⽤法:IN(值1,值2,值3)
-
EXIST 谓词(重要也复杂)
3.7CASE 表达式
搜索case表达式:
CASE WHEN <求值表达式> THEN <表达式>
WHEN <求值表达式> THEN <表达式>
WHEN <求值表达式> THEN <表达式>
…
ELSE <表达式>
END
上述语句执⾏时,依次判断 when 表达式是否为真值,是则执⾏ THEN 后的语句,如果所有
的 when 表达式均为假,则执⾏ ELSE 后的语句。
⽆论多么庞⼤的 CASE 表达式,最后也只会返回⼀个值。