sql篇

56 阅读2分钟

函数

字符串函数

函数作用
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会将合并后的数据去重