MySQL 常用函数、备份和视图

7.4 模糊查询

使用场景

根据区域查询信息、根据日期范围、根据姓查询、查询包含了某个字的数据等等

关键字符

a.% 任意字符(任意个数及任意字符)

# 查询以张字开头的员工
select * from emp where ename like '张%';

在这里插入图片描述

# 查询以13开头的手机号
select * from emp where phone like '13%';

在这里插入图片描述

# 查询以9结尾的手机号
select * from emp where phone like '%9';

在这里插入图片描述

#查询包含有45的手机号
select * from emp where phone like '%4%5%';

在这里插入图片描述

b._ 单个的下划线代表一个任意的字符

# 找'李'的后面只有一个字符的姓名
select * from emp where ename like '李_';

在这里插入图片描述

8.常用函数

MySQL的底层使用的是SQL语言,该语言本身也类似于Java等开发语言,其中提供了相关的函数、子程序等等方式,以方便开发使用。

数据库的主要作用是用于存储数据的,而非做业务处理的,在数据库中处理业务是需要消耗性能的,因此,不建议在数据库中使用过多的函数,建议在开发语言中处理。

concat(arg0,arg1,…) 拼接

select concat('开','封','菜');

在这里插入图片描述

# 使用mybatis框架进行模糊查询时的使用方案(假设变量名为name)
select * from emp where ename like concat('%',name,'%');

now() 获取当前的系统时间

unix_timestamp() 获取当前时间的时间戳

在这里插入图片描述

date_format() 格式化日期

select date_format(now(),'%Y年%m月%d号 %H:%i:%s');

在这里插入图片描述

from_unixtime() 格式化时间戳

select from_unixtime(unix_timestamp(),'%Y年%m月%d号 %H:%i:%s');

在这里插入图片描述

mysql日期格式

常用函数与聚合函数的区别

答:聚合函数是直接操作数据的,函数是操作获取的数据的

9.数据备份

每家公司通常都会有自己的服务器,存储公司相关的一些信息数据,在使用的过程中可能会出现需要进行数据迁移(搬家),为了防止数据丢失,可以进行数据备份

9.1 数据导出

导出数据需要先退出MySQL的环境

语法:mysqldump -u root -p 数据库名 [表名] > 导出的地址

# 导出整个数据库(所有表-表结构及数据)
mysqldump -u root -p tongbaishan > e:/tongbaishan.sql
# 导出指定表
mysqldump -u root -p tongbaishan emp > e:/emp.sql
# 只导出表结构
mysqldump -u root -p -d tongbaishan > e:/tongbaishan2.sql
9.2 数据导入

在数据中运行指定的SQL文件

注意:导入数据库前提是要先选择一个数据库

source e:/tongbaishan.sql

10.视图

视图就是一张虚拟的表(和表的使用方式【增删改查】类似)

使用场景

甲方公司简称A公司,乙方公司简称B公司,A公司将项目外包给了B公司,要求B公司派遣人员到A公司的办公地点进行办公(驻场办公),A公司的工作人员都需要有门禁权限,所以A公司需要给B公司的工作人员开权限(需要B公司将对应的开发人员的信息给到A公司),同时如果开发团队人员发生了改变,B公司需要及时将改变的情况和人员信息发给A公司

上述场景中需要考虑的问题

思考:B公司如何将人员的信息给到A公司

思考:给的信息中如何对保密的信息进行屏蔽处理(B公司的人员表中有很多员工,信息中包含公司的敏感信息)

思考:如果人员信息发生了改变,如何能够更方便快捷的将变更后的信息发送给甲方

思考:B公司承接了很多公司的外包项目,B公司就需要对应多家公司,上述的几个问题都需要进行再次考虑

语法:create view 视图名 as 查询语句; (达到屏蔽字段的操作)

 create view v_a_emp
 as
 select ename,sex,phone from emp;

在这里插入图片描述

在视图关系下,emp会和v_a_emp信息同步:

在这里插入图片描述

这样双向都可以修改信息,就会导致数据混乱,没有安全性

设置工资表:

在这里插入图片描述

列出员工信息对应的薪资信息:

在这里插入图片描述

# 需求 查看部门的薪资总和
select dno,sum(salary) from emp e join salarys s on e.eno=s.eno group by dno;

在这里插入图片描述

# 需求 计算部门的薪资总和
create view v_sal 
as
select dno,sum(salary) total from emp e join salarys s on e.eno=s.eno group by dno;

注意点:在创建视图时,如果结果中的字段有使用函数或聚合函数,需要给一个别名作为视图中的字段名
在这里插入图片描述

# 尝试去修改视图中的薪资总和数据
update v_sal set total=19500 where dno=10;
#ERROR 1288 (HY000): The target table v_sal of the UPDATE is not updatable
#v_sal表中不支持update操作

当视图中的数据修改后无法推断出原表中的数据应该如何改变时,该操作就不能执行

思考:通过哪些关键词或函数等创建出来的视图中的数据是不能进行修改操作的

答:聚合函数、分组等等

通常情况下,B公司在给出对应的视图后,需要提供一个账号给甲方公司,该账号是可以设置权限的(通常只给查询的权限)

总结:视图提高了数据的安全性,用户只能看到提供的数据,同时可以设置权限

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值