<三>从0基础到中级DBA(MySQL篇)----------->函数与约束

目录

一、函数

        1、函数的概念

        2、函数的分类

                2.1 字符串函数

                2.2 数值函数

                2.3 日期函数

                2.4 流程函数

二、约束

       1、约束的概念

       2、约束的分类

                2.1 非空约束

                2.2 唯一约束

                2.3 主键约束

                2.4 默认约束

                2.5 检查约束

                2.6 外键约束

三、总结


一、函数

        1、函数的概念

                函数:是一段可以直接被另一端程序调用的程序或代码

        #在进行下面的学习之前呢,给大家推荐一个软件------->DataGrip     这款软件用来满足我们日常的SQL编写,十分方便!他对于多表之间的关系也有一个图形化的展示。安装方法呢,大家百度一下就得到了,小编在这里就不详细说明了!!!

        2、函数的分类

                2.1 字符串函数

        字符串函数包括有:concat(s1,s2,s3...)、lower(str)、upper(str)、lpad(str,n,pad)、rpad(str,n,pad)、trim(str)、substring(str,start,len)

1. concat(s1,s2,s3)---->字符串拼接,将s1,s2,s3拼接成一个字符串。

2. lower(str)---->将字符串内容全部转为小写

3. upper(str)---->将字符串内容全部转为大写

4. lpad(str, n, pad)---->左填充,用pad对字符串str的左面进行填充,达到 n 个字符串长度。

5. rpad(str, n, pad)---->右填充,用pad对字符串str的右面进行填充,达到 n 个字符串长度。

6. trim(str)----->去掉字符串头部和尾部的空格

7.substring(str, start, len)--->截取字符串str从start(从1开始)位置起len个长度字符串

                2.2 数值函数

1. ceil(x)----->向上取整

2. floor(x)----->向下取整

3. mod(x, y)---->x 与 y 的模,即 x 除以 y 取其余数

4. rand()-----> 随机数,随机生成一个 0-1 的随机数。

5. round(x, y)----> 求 x 四舍五入的值,保留 y 为小数。

select ceil(1.2);
-------------------------> 2
select floor(1.8);
--------------------->1
select mod(3,1);
-----------------------> 0
select mod(4,3);
-----------------------> 1

 

select round(1.2345,2);
------------------------->1.23

                2.3 日期函数

1. curdate()--------->当前日期

2. curtime()--------->当前时间

3. now()---------->当前日期和时间

4. year(date)------> 返回输入日期date的年份

5. month(date)------->返回输入日期date的月份

6. day(date)-------->返回输入日期date的天数

7. date_add(date, interval  推迟数  时间单位)------>得到的是输入日期date 推迟 输入单位个                                                                                   之后的日期。(时间单位:day ,                                                                                                 month,year)

8. datediff(date1 ,  date2)-------->得到两个日期相隔多少天。(date1 - date2

                2.4 流程函数

1. if(value, t , f)------>若value为true,则返回 t ,否则返回 f。

2. ifnull(value1, value2)------->若value1 不为空,则返回value1,否则返回value2.

3. case  when [val1] then [res1] ... else [default]   end;

        --------> 若 value1 为 true 返回 res1,...... 否则返回default 默认值

4. case [exp1] when [val1] then [res1] ... else [default]  end;

        -------->若exp1的值 = val1 ,返回res1,...... 否则返回default 默认值。

select if (true, 't', 'f');
----------------------------> t

select if('true','ok','no');
-------------------------------> no
select ifnull(null, 'nul');
-------------------------------->nul

select ifnull('null', 'nul');
-------------------------------->null

 3. case  when [val1] then [res1] ... else [default]   end;           

                 可以用于城市的划分(一线二线城市)

---工作地址在北京,上海的显示一线城市,其他显示二线城市
select name,
       (case when workadiss = '北京' then '一线城市' when workadiss = '上海' then '一线城市' else '二线城市' end) as '工作地址'
from empeo;

 4. case [exp1] when [val1] then [res1] ... else [default]  end;

                可以用于年龄等级的划分,以及薪资水平等级的划分

select name,
       (case when age >= 45 then '老年人' when age >= 25 then '中年人' when age >= 18 then '成年人' else '未成年人' end) as '年龄'
from empeo;

二、约束

       1、约束的概念

                约束:约束时作用于表中字段上的规则,用于限制存储在表中的数据;它的目的是:保证数据库中数据的正确性、有效性、完整性和一致性。

                约束是作用于表中字段上的,可在建表/改表的时候添加约束。

       2、约束的分类

                2.1 非空约束

                  关键词:not null

-- 例如 在创建 姓名 字段时
create table user(
    name varchar(10) not null comment'姓名'
)

                2.2 唯一约束

                   关键词: unique

-- 例如 在创建 id 字段时
create table emp(
    id int primary key auto_increment unique comment'主键ID'
);
--------auto_increment------>自动增加

                2.3 主键约束

                 关键词: primary key

                上示例中已展示

                2.4 默认约束

                关键词:default '  默认值  ' 

                在保存数据时,若未指定该字段的值,则采用默认值。

-- 例如 在创建 状态 字段时
create table emp(
    status char(1) default '1' comment '状态'
);

                2.5 检查约束

                关键词: check

                检查保存的数据是否满足字段的某一条件。(MySQL版本:8.0.16 之后才有此功能)

                2.6 外键约束

                外键约束:用来让两张表的数据之间建立连接,从而保证数据的一致性和完整性。

                        #添加外键 

-- 在创建表时建立外键
create table emp(
    字段   数据类型 ......  constrain [外键名称] foreign key (外键字段) references 主表(列名)
);
-- 在表结构已经建立完成添加外键
alter table 表名 add constraint 外键名称 foreign key (外键字段) references 主表(列名);

                        #删除外键

alter table 表名 drop foreign key 外键名称;

        在建立外键之后,当我们删除父表数据时,有时候会报错导致删除/更新失败,那这是什么原因导致的????下面就让我们一起来了解一下外键约束中的删除/更新行为!

                #外键约束中的删除/更新行为 

1. no action / restrict-----> 当父表中 删除/更新 对应记录时,首先检查记录是否有对应外键,如果有 则不允许 删除/更新---------(MySQL中的外键约束默认行为)

2. cascode------> 当父表中 删除/更新 对应记录时,首先检查记录是否有对应外键,如果有 则也删除/更新 外键在子表中的记录

3. set null------> 当父表中 删除/更新 对应记录时,首先检查记录是否有对应外键,如果有,则设置子表中该外键值为 null (要求:外键允许取 null )

4. set default ------> 父表有变更时,子表将外键设置成一个默认值(innodb 不支持(innodb是存储引擎,后续将会介绍))

-- 更改约束行为
alter table 表名 add constraint 外键名称 foreign key (外键字段) references 主表(列名) 
on update 新行为名称 on delete 新行为名称;

三、总结

        经过以上的学习,相信大家对MySQL中的函数与约束有了一定的了解,如果想要继续深入了解,关注小编,后续会一只更新下去的,让我们一起成长!!!

        也希望这一系列的文章能够对您有所帮助,谢谢大家!!!

  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值