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