函数
字符串函数
| 函数 | 作用 |
|---|---|
| CONCAT(s1, s2, ...) | 拼接字符串 |
| LOWER(str) | 转换为小写 |
| UPPER(str) | 转换为大写 |
| LPAD(str, n, pad) | 使用pad对str左边进行填充直到长度达到n |
| RPAD(str, n, pad) | 右填充 |
| TRIM(str) | 去掉首尾空格 |
| SUBSTRING(str, start, len) | 截取子串 |
数值函数
| 函数 | 作用 |
|---|---|
| CEIL(num) | 向上取整 |
| FLOOR(num) | 向下取整 |
| MOD(x, y) | 取余 |
| RAND() | 生成0到1之间随机数 |
| ROUND(x, y) | 四舍五入,保留y位小数 |
日期函数
| 函数 | 功能 |
|---|---|
| CURDATE() | 返回当前日期 |
| CURTIME() | 返回当前时间 |
| NOW() | 返回当前日期和时间 |
| YEAR(date) | 获取指定date的年份 |
| MONTH(date) | 获取指定date的月份 |
| DAY(date) | 获取指定date的日期 |
| DATE_ADD(date, INTERVAL expr type) | 返回一个日期/时间值加上一个时间间隔expr后的时间值 |
| DATEDIFF(date1,date2) | 返回起始时间date1 和 结束时间date2之间的天数 |
流程函数
| 函数 | 功能 |
|---|---|
| IF(value,t,f) | 如果value为true,则返回t,否则返回f |
| IFNULL(value1,value2) | 如果value1不为null,返回value1,否则返回value2 |
| CASE WHEN [val1] THEN [res1] ... ELSE [default] END | 如果val1为true,返回res1,... 否则返回default默认值 |
| CASE [expression] WHEN [val1] THEN [res1] ... ELSE [default] END | 如果expression的值等于val1,返回res1,... 否则返回default默认值 |
约束
外键约束
外键更新/删除行为
| 行为 | 说明 |
|---|---|
| NO ACTION(默认行为) | 当在父表中删除/更新对应记录时,首先检查该记录是否有对应外键,如果有则不允许删除/更新。(与RESTRICT一致) |
| RESTRICT | 当在父表中删除/更新对应记录时,首先检查该记录是否有对应外键,如果有则不允许删除/更新。(与NO ACTION一致) |
| CASCADE | 当在父表中删除/更新对应记录时,首先检查该记录是否有对应外键,如果有,则也删除/更新外键在子表中的记录。 |
| SET NULL | 当在父表中删除对应记录时,首先检查该记录是否有对应外键,如果有则设置子表中该外键值为null(这就要求该外键允许取null)。 |
| SET DEFAULT | 父表有变更时,子表将外键列设置成一个默认的值(Innodb不支持) |
修改更新/删除行为:ALTER TABLE 表名 ADD CONSTRAINT 外键名 FOREIGN KEY (字段名) REFERENCES 主表名(字段名) ON UPDATE 行为 ON DELETE 行为;
多表查询
联合查询
联合查询是指将多次查询的结果拼接到一起形成一张表
语法:
SELECT 字段列表 FROM 表A
UNION [ALL]
SELECT 字段列表 FROM 表B
对于联合查询的多张表必须列数一致,并且字段名和类型也一致。UNION ALL会将所有数据直接合并,而UNION会将合并后的数据去重