1 视图
视图是一个虚拟的表,不同于直接操作数据表,视图是依据SELECT语句来创建的(会在下面具体介绍),所以操作视图时会根据创建视图的SELECT语句生成一张虚拟表,然后在这张虚拟表上做SQL操作。
视图是基于真实表的一张虚拟的表,其数据来源均建立在真实表的基础上。
1.1 创建视图
CREATE VIEW <视图名称>(<列名1>,<列名2>,...) AS <SELECT语句>
需要注意的是在一般的DBMS中定义视图时不能使用ORDER BY语句
- 基于单表
- 基于多表
1.2 修改视图结构
ALTER VIEW <视图名> AS <SELECT语句>
1.3 更新视图内容
对于一个视图来说,如果包含以下结构的任意一种都是不可以被更新的:
- 聚合函数 SUM()、MIN()、MAX()、COUNT() 等。
- DISTINCT 关键字。
- GROUP BY 子句。
- HAVING 子句。
- UNION 或 UNION ALL 运算符。
- FROM 子句中包含多个表。
1.4 删除视图
DROP VIEW <视图名1> [ , <视图名2> …]
2 子查询
子查询指一个查询语句嵌套在另一个查询语句内部的查询,这个特性从 MySQL 4.1 开始引入,在 SELECT 子句中先计算子查询,子查询结果作为外层另一个查询的过滤条件,查询可以基于一个表或者多个表。
- 嵌套子查询
- 标量子查询
- 关联子查询
3 函数
3.1 算数函数
+ - * / | |
ABS -- 绝对值 | 语法:ABS( 数值 ) |
MOD -- 求余数 | 语法:MOD( 被除数,除数 ) |
ROUND -- 四舍五入 | 语法:ROUND( 对象数值,保留小数的位数 ) |
3.2 字符串函数
CONCAT -- 拼接 | 语法:CONCAT(str1, str2, str3) |
LENGTH -- 字符串长度 | 语法:LENGTH( 字符串 ) |
LOWER -- 小写转换 | UPPER |
REPLACE -- 字符串的替换 | 语法:REPLACE( 对象字符串,替换前的字符串,替换后的字符串 ) |
SUBSTRING -- 字符串的截取 | 语法:SUBSTRING (对象字符串 FROM 截取的起始位置 FOR 截取的字符数) |
SUBSTRING_INDEX -- 字符串按索引截取 | 语法:SUBSTRING_INDEX (原始字符串, 分隔符,n) |
REPEAT -- 字符串按需重复多次 | 语法:REPEAT(string, number) |
3.3 日期函数
CURRENT_DATE -- 获取当前日期 | |
CURRENT_TIME -- 当前时间 | |
CURRENT_TIMESTAMP -- 当前日期和时间 | |
EXTRACT -- 截取日期元素 | 语法:EXTRACT(日期元素 FROM 日期) |
3.4 转换函数
CAST -- 类型转换 | 语法:CAST(转换前的值 AS 想要转换的数据类型) |
COALESCE -- 将NULL转换为其他值 | 语法:COALESCE(数据1,数据2,数据3……) |
4 谓词
谓词就是返回值为真值的函数。包括TRUE / FALSE / UNKNOWN
。
谓词主要有以下几个:
- LIKE
- BETWEEN
- IS NULL、IS NOT NULL
- IN
- EXISTS
4.1 LIKE谓词 -- 用于字符串的部分一致查询
前方一致:选取出“dddabc” |
中间一致:选取出“abcddd”“dddabc”“abdddc” |
后方一致:选取出“abcddd“ |
_ 下划线匹配任意 1 个字符 |