[沫忘录]mysql基础(函数及约束)
mysql内置函数
字符串函数
#字符串拼接
CONCAT(S1, S2...S3)#全转小写
LOWER(str)#全转大写
UPPER(str)#用pad将str左填充至n长
LPAD(str, n, pad)#数值也可当做字符串#用pad将str右填充至n长
RPAD(str, n, pad)#去掉首尾的空格
TRIM(str)#截取字符串
SUBSTRING(str, start, len)#start即第几个字符开始,非数组下标
数值函数
#向上取整
CEIL(x) # 1.2 -> 2#向下取整
FLOOR(x) # 1.7 -> 1#返回x%y
MOD(x, y) #返回0~1内的随机数
RAND()#求参数x四舍五入的值,保留y位小数
ROUND(x, y)
日期函数
#返回当前日期
CURDATE()#返回当前时间
CURTIME()#返回当前日期和时间
NOW()#获取指定date的年份
YEAR(date)#获取指定date的月份
MONTH(date)#获取指定date的日期
DAY(date)#返回一个日期/时间值加上
DATE_ADD(date, INTERVAL expr type)#返回起始时间到结束时间相差的天数
DATEDIFF(date1, date2) # date1 - date2
流程函数
#条件选择
IF(value, t, f) # value ? t : f#非空选择
IFNULL(value1, value2)# value != NULL ? value1 : value2#CASE 条件选择
CASE WHEN[val1] THEN ... ELSE [default] END
CASE [expr] WHEN [val1] THEN [res1] ... ELSE [default] END
mysql约束
约束语法
#在表创建字段时定义约束
CREATE TABLE 表名
(字段名 类型 约束1 约束2 ... COMMENT '字段注释',....
)COMMENT '表注释'
常见约束
#非空约束
NOT NULL #该字段不能为空#唯一约束
UNIQUE #该字段的所有值不重复#主键约束
PRIMARY KEY #主键是一行的标识,要求非空且唯一
AUTO_INCREMENT #主要用于主键自增#默认约束
DEFAULT '默认值' #该字段未赋值的默认值#检查约束
CHECK (约束条件) #限制字段的取值范围
外键约束
添加外键
#创建表时添加外键
CREATE TABLE 表名
(字段名 数据类型,...CONSTRAINT 外键名称 FOREIGN KEY(被定义为外键字段名) REFERENCES 主表(主表中关联字段名)
)#创表后删除约束
ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY(被定义外键字段名) REFERENCES 主表(主表中关联字段名)
删除外键
ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;
删除/更新行为
语法
ALTER 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段) REFERENCES 主表名(主表字段名) ON UPDATE 行为 ON DELETE 行为
行为
#主表字段有外键时,该字段不允许更新与删除
NO ACTION#同上
RESTRICT #主表字段有外键时,外键字段同步该字段更新与删除
CASCADE#主表字段有外键时且该字段更新与删除时,外键字段设为NULL
SET NULL#外键字段设默认值,但兼容性差
SET DEFAULT
行为
#主表字段有外键时,该字段不允许更新与删除
NO ACTION#同上
RESTRICT #主表字段有外键时,外键字段同步该字段更新与删除
CASCADE#主表字段有外键时且该字段更新与删除时,外键字段设为NULL
SET NULL#外键字段设默认值,但兼容性差
SET DEFAULT