函数是指一段可以直接被另一段程序调用的程序或代码。
常见如下:

- -- 字符串拼接
- SELECT CONCAT('hello','MySql') AS CONCAT
- -- 将字符串全部转为小写
- SELECT LOWER('HEllo MYSql') AS LOWER
- -- 将字符串全部转为大写
- SELECT UPPER('Hello MYSql') UPPER
- -- LPAD(str,n,pad) 左填充,用字符串pad对str的左边进行填充,达到n个字符串的长度
- SELECT LPAD('11',5,'-') LPAD
- -- 右填充
- SELECT RPAD('11',5,'-') RPAD
- -- 去掉字符串前后的空格
- SELECT TRIM(' 1.11 ') TRIM
- -- 截取子字符串
- SELECT SUBSTRING('Kyrie Irving',1,5) SUBSTRING
常见如下:

- -- 向上取整
- SELECT CEIL(1.1) CEIL
- -- 向下取整
- SELECT FLOOR(1.6) FLOOR
- -- 取模
- SELECT MOD(10,2) MOD
- -- 返回0-1之间的随机数
- SELECT RAND() RAND
- -- ROUND(x,y) 求参数x的四舍五入值,保留y位小数
- SELECT ROUND(3.1458,2) ROUND
-
- -- 例题
- -- 生成随机的六位验证码
- SELECT LPAD(ROUND(RAND()*1000000,0),6,0) AS num

- -- 返回当前日期
- SELECT CURDATE()
- -- 返回当前时间
- SELECT CURTIME()
- -- 返回当前日期和时间
- SELECT NOW()
- -- 获取指定date的年份
- SELECT YEAR(NOW())
- -- 获取指定date的月份
- SELECT MONTH(NOW())
- -- 获取指定date的日期
- SELECT DAY(NOW())
- -- 返回一个日期/时间值加上一个时间间隔expr后的时间值
- SELECT DATE_ADD(NOW(),INTERVAL 10 DAY)
- -- 返回起始时间date1和结束时间date2之间的天数
- SELECT DATEDIFF('2022-10-21','2022-9-22')

a.概念:约束是作用于表中字段上的规则,用于限制存储在表中的数据。
b.目的:保证数据库中数据的正确性、有效性和完整性。
c.分类:

注:约束是作用于表中字段上的,可以在创建表/修改表的时候添加约束 。
a.语法
①
CREATE TABLE 表名(
字段名 数据类型,
...
[CONSTRAINT] [外键名称] FOREIGN KEY(外键字段名) REFERENCES 主表(主表列名)
)
②
ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY(外键字段名) REFERENCES 主表(主表列名)
eg:
- -- 添加外键约束后,在对表中的数据进行任意操作,不能导致外键列和主键列对应不上
- -- CONSTRAINT 约束名(有固定的约束名规则)
- ALTER TABLE student ADD CONSTRAINT fk_student_major_majorid FOREIGN KEY(majorid) REFERENCES major(id)
b.删除/更新行为

ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY(外键字段名) REFERENCES 主表(主表列名) ON UPDATE CASCADE
注:ON UPDATE CASCADE 设置在进行删除行为进行的操作