如标题所说,本文重点只有两个:MySQL语句里面的函数和约束
1. 函数
因为在前一篇文章里面有讲到聚合函数,所以在这里就不重复介绍了,本文所介绍的函数有4类:字符串函数,数值函数,日期函数和流程函数
1.1 字符串函数
由于字符串函数比较多,所以只介绍常用的
函数 | 说明 |
---|---|
concat(s1,s2,s3…) | 拼接字符串 |
lower(str)/upper(str) | 字符串全部转为小写/大写 |
trim(str) | 删除字符串头尾的空格 |
substring(str,start,len) | 截取字符串,从start位置开始,截取长度为len |
lpad(str,n,pad) | 左填充,用pad对str的左边进行填充使字符串长度达到n,相应的还有右填充,函数名为rpad,参数和用法与lpad一致 |
上面的这些函数,如果你学过Java的话,那么对这些函数应该不会陌生
这里lpad和rpad可能不好理解,我们来看看示例
使用+对字符串01进行填充,直至01长度到达5
1.2 数值函数
函数 | 说明 |
---|---|
ceil(i) | i向上取整 |
floor(i) | i向下取整 |
rand() | 返回0~1之间的随机数 |
mod(x,y) | 返回x/y的模 |
round(x,y) | 对x进行四舍五入,保留y位小数 |
1.3 日期函数
函数 | 说明 |
---|---|
curdate()/curtime() | 返回当前日期/当前时间 |
now() | 返回当前的日期和时间 |
year(date) | 获取指定日期的年份,同样的,还有month(date)和day(date) |
datediff(date1,date2) | 计算date1和date2之间的天数,如果date1小于date2,计算的结果为负数 |
date_add(date,interval expr type) | 在date后加上一段时间,可以为年,月,日 |
date_add这个函数还是演示下怎么使用
1.4 流程函数
流程函数在SQL语句中主要进行条件筛选
函数 | 说明 |
---|---|
if(value,t,f) | 类似if语句,value值为真返回t,否则返回f |
ifnull(value1,value2) | value1不为空时返回value1,否则返回value2 |
case when [val] then [res]…else [default] end | 当val的值为true时返回res,否则返回default,when和then可以有多个 |
case [expr] when [val] then [res]…else [default] end | 当expr的值等于val的时候返回res,否则返回default,when和then可以有多个 |
2.约束
约束用于字段,是用来限制存储在数据表上的数据,这样做是为了保证数据的有效性,比如age字段你就不能写除数字以外的数据,常见的约束有下面几种:
约束 | 说明 |
---|---|
not null | 非空约束,此字段的数据不能为空 |
unique | 唯一约束,此字段的所有数据不能重复 |
defaule | 默认约束,此字段中如果有数据没有指定值,那么就采用默认值 |
primary key | 主键约束,主键是一行数据的唯一标识,主键要求非空且唯一 |
foreign key | 外键约束,用于两张数据表建立连接,保证数据的完整性和一致性 |
因为约束是作用于字段,所以我们在建表的时候就可以为字段添加约束,在建表之后通过alter修改字段数据类型时加上约束也可以
此外还有一个关键字:auto_increment;这个关键字表示的是自动增长,是MySQL才有的一个关键字
在创建数据表的时候一般会选择id作为主键,而id又是从1开始往后递增的,所以primary key和auto_increment经常同时使用实现主键自增
我在这里新建一个简单的数据表,然后来看看数据表的结构
首先是没有约束的:
然后是有约束的:
然后是外键约束的使用
外键所关联的是另一张数据表的主键,两张表中含有外键的称为子表,关联的另一张为父表
外键同样可以在创建数据表的时候指定,也可以是在创建数据表之后再添加
添加外键:
creat table 表名(字段1 数据类型,
[constraint] [外键名称] foreign key (外键字段名) references 主表(主表列名));
alter table 表名 add constraint 外键名称 foreign key (外键字段名) references 主表(主表列名);
删除外键:
alter table 表名 drop foreign key 外键名称;
2.1 外键的删除更新行为
在对父表进行修改的时候子表的外键的行为,可以指定
行为 | 说明 |
---|---|
no action | 在父表中更新/删除记录时,先检查此记录有没有外键,有则不允许更新/删除 |
restrict | 在父表中更新/删除记录时,先检查此记录有没有外键,有则不允许更新/删除 |
cascade | 在父表中更新/删除记录时,先检查此记录有没有外键,有则更新/删除外键在子表中的记录 |
set null | 在父表中删除记录时,先检查此记录有没有外键,有则将子表中对应的外键设为null(前提是此外键允许为null) |
set default | 父表有变更时,子表外键设为一个默认值(MySQL默认的Innodb引擎不支持) |
使用外键的删除更新行为需要使用的关键字为on文章来源:https://www.toymoban.com/news/detail-431483.html
alter table 表名 add constraint 外键名称 foreign key (外键字段名) references 主表(主表列名) on update 行为 on delete 行为;
本篇到此结束,下一篇是多个数据表之间的查询操作,完文章来源地址https://www.toymoban.com/news/detail-431483.html
到了这里,关于【MySQL】函数和约束的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!