目录
函数
定义
一段可以直接被另一字段程序调用的程序或代码。
字符串函数
常见字符串函数
函数 | 功能 |
---|---|
CONCAT(S1,S2,…,Sn) | 字符串拼接,将S1,…,Sn拼接成一个字符串 |
LOWER(str) | 将字符串str全部转成小写 |
UPPER(str) | 将字符串str全部转成大写 |
LPAD(str,n,pad) | 左填充,用字符串pad对str的左边进行填充,达到n个字符串长度 |
RPAD(str,n,pad) | 右填充,用字符串pad对str的右边进行填充,达到n个字符串长度 |
TRIM(str) | 去掉字符串头部和尾部的空格 |
SUBSTRING(str,start,len) | 返回字符串str从start位置起的len个字符串长度 |
语法
SELECT 函数(参数);
数值函数
常见数值函数
函数 | 功能 |
---|---|
CEIL(X) | 向上取整 |
FLOOR(X) | 向下取整 |
MOD(x,y) | 返回x/y的模 |
RAND() | 返回0~1内的随机数 |
ROUND(x,y) | 求参数x的四舍五入的值,保留y位小数 |
语法
SELECT 函数(参数);
案例
利用数据库函数,生产一个六位数随机数验证码
select rpad(round(rand()*1000000,0),6,'0');
#rpad 补零
#round 保留小数
#rand 生成随机数
日期函数
常见日期函数
函数 | 功能 |
---|---|
CURDATE() | 返回当前日期 |
CURTIME() | 返回当前时间 |
NOW() | 返回当前日期和时间 |
YEAR(date) | 获取指定date的年份 |
MONTH(date) | 获取指定date的月份 |
DAY(date) | 获取指定date的日期 |
DATE_ADD(date,INTEVAL expr type) | 返回一个日期/时间值加上一个时间间隔expr后的时间值 |
DATEIFF(date1,date2) | 返回起始时间date1和结束时间date2之间的天数 |
语法
SELECT 函数(参数);
流程函数
在SQL语句中实现条件筛选,提高语句的效率
常见流程函数
函数 | 功能 |
---|---|
IF(value,t,f) | 如果value为true,则返回t,否则返回f |
IFNULL(value1,value2) | 如果value1不为空,返回value1,否则返回value2 |
CASE WHEN [val1] THEN [res1]...ELSE [default] END | 如果val1位true,返回res1,...否则返回default默认值 |
CASE [expr] WHEN [val1] THEN [res1] ...ELSE [default] END | 如果expr的值等于val1,返回res1,...否则返回default默认值 |
约束
概念
约束是作用于表中字段上的规则,用于限制存储表中的数据
目的
保证数据库中数据的正确性、有效性和完整性。
分类
约束 | 描述 | 关键字 |
---|---|---|
非空约束 | 限制该字段的数据不能为null | NOT NULL |
唯一约束 | 保证该字段的所有数据都是唯一、不重复的 | UNIQUE |
主键约束 | 主键是一行数据的唯一标识,要求非空且唯一 | PRIMARY LEY |
默认约束 | 保存数据时,如果未指定该字段的值,则采用默认值 | DEFAULT |
检查约束 | 保证该字段的值满足一个条件 | CHECK |
外键约束 | 用来让两张表的数据之间建立连接,保证数据的一致性和完整性 | FOREIGN KEY |
检查约束在8.0.16版本之后才有
约束是作用于表中字段上的,可以在创建表/修改表的时候添加约束
案例
create table user(
id int primary key auto_increment comment '主键', #primary key主键
name varchar(10) not null unique comment '姓名', #not null 非空
age int check ( age >= 0 && age <= 120 ) comment '年龄', #check 满足条件0-120
status char(1) default '1' comment '状态', #default 默认值
gender char(1) comment '性别'
)comment '用户表';
外键约束
概念
用来让两张表的数据之间建立连接,保证数据的一致性和完整性
语法
添加外键
CREATE TABLE 表名(
字段名 数据类型,
...
[CONSTRAINT] [外键名称] FOREIGN KEY(外键字段名)REFERENCES 主表(主表列名)
);
ALTER TABLE 表名 ADD CONSTRAINT 外键名称
FOREIGN KEY (外字段名称) REFERENCES 主表(主表列名) ;
删除外键
ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;
删除/更新行为
行为 | 说明 |
---|---|
NO ACTION | 当在父表中删除/更新对应记录时,首先检查该记录是否有对应外键,如果有则不允许删除/更新。(与RESTRICT一致) |
RESTRICT | 当在父表中删除/更新对应记录时,首先检查该记录是否有对应外键,如果有则不允许删除/更新。(与NO ACTION一致) |
CASCADE | 当在父表中删除/更新对应记录时,首先检查该记录是否有对应外键,如果有,则也删除/更新外键在子表中的记录。 |
SET DEFAULT | 当在父表中删除对应记录时,首先检查该记录是否有对应外键,如果有则设置子表中该外键值为null(这就要求该外键允许取nul)。 |
SET DEFAULT | 父表有变更时,子表将外键列设置成一个默认的值(Innodb不支持) |
ALTER TABLE表名 ADD CONSTRANT 外键名称 FOREIGN KEY (外键字段) REERENCES主表名 (主表字段名)ONUPDATE CASCAODE ONDELETE CASCADE;