一,函数
1.1 用法
函数最常用的地方就是查询语句
select 函数(字段) from 表名;
select 字段列表 from 表名 group by 分组字段 having 函数(字段);
1.2 字符串函数
1.2.1 Concat
Concat(s1,s2,....,sn);
用途:将多个字符串拼接成一个
1.2.2 Lower和Upper
Lower(x)
Upper(x)
用途:Lower将x字符串全部转化为小写,Upper将字符串全部转化为大写
1.2.3 Lpad和Rpad
Lpad(str,n,pad)
Rpad(str,n,pad)
用途:Lpad是左填充,Rpad是右填充,将str字符串左/右边填充pad字符串知道他们之和为n,原本字符串+填充字符串=n时停止
1.2.4 Trim
trim(x)
用途:将字符串x的首尾处空格去掉
1.2.5 Substring
substring(str,star_index,len)
用途:从star_index处截取字符串str,截取len个字符(下标从1开始)
1.3 日期函数
1.3.1 获取当前时间
Curdate() ->返回日期,年-月-日
Curtime() ->返回日期,时-分-秒
Now() ->返回日期,年-月-日-时-分-秒
1.3.2 截取当前时间其中一部分
Year(date) ->返回date日期中的年
Month(date) ->返回date日期中的月
day(date) ->返回date日期中的日
1.3.3修改时间的
Date_add(date,interval 数值 值类型)
用法:
select date_add(now(),interval 70 hour);在当前日期之后增加70小数后是什么时候
数值类型有:year,month,day,hour,minute,second
Datediff(day1,day2) ->返回day2与day1之间相差多久
1.4 数值函数
1.4.1 对值取整
ceil(x) ->对x向上取整
floor(x) ->对x向下取整
1.4.2 其他
mod(x,y) ->返回x处于y的余数
rand() ->返回0到1之间的小数(精度很长!比如说0.5151915616)
round(x,y) ->求x四舍五入之后的值,保留y位小数
1.5 流程控制函数
1.5.1 if判断
if(value,t,f) -->如果value的逻辑值是true就返回t值,如果为false就返回f值
1.5.2 ifnull判断
ifnull(value_1,value_2) 如果value_1不为null就返回value_1要不然就返回value_2
value可以为表达式/值,等形式
1.5.3 case 表达式 when 值 形式的判断
语法
case 表达式 when 值a then 返回值1 when 值b then 返回值2 .....else 抄底返回值 end;
解释:如果表达式=值a,就返回值1,如果表达式=值b,就返回值2,如果都不等于就返回抄底返回值 这个就和编程语言中的switch大致一致!
1.5.4 case when 值形式的判断
语法
case when 条件表达式a then 返回值1 when 条件表达式b then 返回值2 else 抄底返回值 end;
解释:如果条件表达式a成立即为true就返回值1,如果条件表达式b成立就返回值2,都不成立就返回抄底返回值 这个就和编程语言中的if大致一致
二,约束条件
2.1 描述
约束就是限定表数据的规则 目的:保证数据库中的数据的正确性,有效性,完整性
用法:在建表/修表的时候添加约束条件,多个约束用空格分割。
作用:约束是作用于表中的字段上的。
2.2 分类
| 约束 | 描述 | 关键字 |
|---|---|---|
| 非空约束 | 限制字段数据不能为null | not null |
| 唯一约束 | 保证字段数据是唯一不重复的 | unique |
| 主键约束 | 主键是一行数据的唯一标识,要求非空且唯一 | primary key |
| 默认约束 | 保存数据的时候如果没给字段值就给出默认值 | default |
| 检查约束 | 保证数据满足条件 | check |
| 外键约束 | 用于俩张表之间建立连接 | foreign key |
| 主键约束一般搭配自动增长auto_imporment一起使用 |
2.3 用法
Create table 表名(
字段名1 类型 约束条件,
....
字段名n 类型 约束条件,
);
check用法举例
age int check(age>5 && age<10)
default用法举例
age int default 1
修改字段约束
Alter table 表名 add 字段 类型 约束;
Alter table 表名 change 旧字段 新字段 类型 约束
2.4 外键
具有外键的表叫子表,外键关联的表叫父表 语法 创建外键
alter table 子表 add foreign(子表关联字段) references 父表(父表的关联字段);
alter table 子表 add constraint 外键名 foreign key(子表字段) referencnes 父表(父表关联字段名);
在创建表的时候创建外键
foreign key(子表关联字段) references 父表(父表关联字段);
如果在创建外键的时候没有设置外键名字那么mysql会默认给一个外键名
查看外键名
show create table 表名;
删除外键
alter table 子表名 drop foreign key 自定义的外键名;
默认删除/更新外键数据行为
Alter table 子表名 add constraint 外键名 foreign key(外键名) references 父表(关联字段) on update 关键字 on delete 关键字;
行为关键字:
| 行为 | 描述 |
|---|---|
| No action | 当在父表中删除/更新记录的时候,首先检查该记录是否存在外键,如果存在就不允许删除/更新 |
| restrict | 与no action一致 |
| cascade | 当在父表中删除/更新记录的时候,首先检查该记录是否存在外键,如果存在,就也删除/更新子表中的记录 |
| set null | 当在父表中删除/更新记录的时候,首先检查该记录是否存在外键,如果存在,如果有就设置子表外键值为null(注意子表约束是否运行为null) |
| set default | 父表有变更的时候,子表将外键值设为一个默认值(innodb引擎中不支持) |