二,函数与约束条件

115 阅读5分钟

一,函数

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()				->返回01之间的小数(精度很长!比如说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 分类

约束描述关键字
非空约束限制字段数据不能为nullnot 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引擎中不支持)