MySQL事务、视图、索引、备份和恢复

事务

1.1 为什么要用事务

假设银行转账
假定资金从A转到B,那么至少需要两步
1.账户A的资金减少
2.账户B的资金相应的增加

当A账户向B账户转账500元操作时,A账户更新完减去500,结果出现了故障,B账户没有增加500元就结束了。
如果一系列操作不能全部执行完成,那么数据的完整性就丢失了。

1.2 什么是事务?

事务时作为单个逻辑工作单元执行的一系列操作,多个操作作为一个整体向系统提交,要么都执行,要么都不执行。事务是一个不可分隔的工作逻辑单元
上面的转账实例,转账就是一个整体,它需要两条UPDATE语句来完成,这两条语句是一个整体,如果其中任意一条出现错误,则整个业务也应该取消,两个账户中的余额应该恢复到原来的数据,从而确保转帐前和转账后的余额不变。

1.3 事务的特性

事务必须具备以下四个属性,简称ACID属性

  • 原子性
    在这里插入图片描述
  • 一致性
    在这里插入图片描述
  • 隔离性
    在这里插入图片描述
  • 持久性
    在这里插入图片描述

脏读:脏读意味着一个事务读取了另一个事务未提交的数据,而这个数据是有可能回滚的

不可重复读:在数据库访问中,一个事务范围内两个相同的查询(同一块数据)却返回了不同数据,这是由于查询时系统中其他事务修改的提交而引起的。

幻读(虚读)
幻读,是指当事务不是独立执行时发生额一种现象,例如第一个事务对一个表中的数据进行了修改,这总修改涉及到表中的全部数据行,同时,第二个事务也修改这个表中的数据,这种修改是向表中插入一行新数据,那么,以后就会发生操作第一个事务的用户发现表中还没有修改的数据行,好像发生幻觉一样。
幻读和不可重复度都是读取了另一条已经提交的事务(这点就脏读不同),所不同的就是不可重复读查询都是同一个数据项,而幻读针对的是一批数据整体。

1.4 如何创建事务

开始事务
在这里插入图片描述
提交事务

在这里插入图片描述
回滚(撤销)事务
在这里插入图片描述

1.5自动关闭和开启事务

  • 默认情况下,每条单独的SQL语句视为一个事务
  • 关闭默认提交状态后,可手动开启,关闭事务

关闭/开启自动提交状态
在这里插入图片描述

值为0:关闭自动提交,值为1:开启自动提交

2.视图

2.1 为什么需要视图

在实际工作中,不同的身份用户所关注的数据库可能有所不同。企业的员工信息表中保存了该企业的所有员工的详细信息,不同职位的人员对该标总查询的数据范围可能是不同的(权限)。企业的老板关注企业员工的全部信息,他可以浏览全体员工的全部记录;企业人力资源主管主要是查询全体员工目前的岗位、薪金和绩效;企业出纳员只能查询每个员工的薪金,不能查看到企业员工的其他信息;而作为这家企业的一名员工,只能看本人记录,不得查看其他员工的任何信息。
在这里插入图片描述

2.2 什么是视图

视图是一张虚拟表,表示一张表的部分数据或多张表的总和数据,其结构和数据是建立在对表的查询基础上,视图中不存放数据,数据存放在视图所引用的原始表中,一个原始表根据不同用户的不同需求,可以创建不同的视图。
视图的用途:筛选表中的行,防止未经许可的用户访问敏感数据、降低数据库的复杂程度,将多个物理数据库抽象为一个逻辑数据库。
在这里插入图片描述

2.3 创建视图

使用SQL语句创建视图
在这里插入图片描述
使用SQL语句删除视图
在这里插入图片描述
使用SQL语句查看视图
在这里插入图片描述

2.4 使用视图的注意事项

  • 视图中可以使用多个表
  • 一个视图可以嵌套另一个视图
  • 对视图数据进行添加,更新和删除操作直接影响到所引用表中的数据
  • 当视图数据来自多个表时,不允许添加和删除数据

3.索引

3.1 什么是索引

索引是一种有效组合数据的设计方式,为快速查找到指定记录,SQL索引在数据优化中占有一个非常大的比例,一个号的索引设计,可以使工作效率成倍提升。
MYSQL索引按存储类型分类:
B-树索引:InnoDB、MyISAM均支持
哈希索引:对该列数据以等值查询为主,没有范围查询、没有排序的时候,特别适合采用哈希索引。

在这里插入图片描述

3.2 常用索引类型

在这里插入图片描述

3.3 如何创建/删除索引

创建的时候如果不指定其他类型索引那么就是一个普通索引。
创建索引
在这里插入图片描述
删除索引
在这里插入图片描述

3.4 创建索引的原则

在这里插入图片描述

3.5 使用索引的时候注意事项

在这里插入图片描述

3.6 查看索引

在这里插入图片描述

4. 数据库备份

4.1 使用mySQLdump命令数据库备份数据

mysqldump命令——MySQL一个常用的备份工具

  • 将CREATE和INSERT INTO语句保存到文本文件
  • 属于DOS命令
    在这里插入图片描述
    使用root账户登陆到MySQL服务器,备份myschool数据库下的student表
    在这里插入图片描述
    为保障账户密码安全,命令中不可写密码,但参数 -p必须有,回车后根据提示写密码

常用参数选项
在这里插入图片描述
导出部分指定的数据库:
在这里插入图片描述
导出全部数据库:
在这里插入图片描述
备份文件包含的主要信息

  • 备份后文件包含信息MySQL及mysqldump工具版本号
  • 备份账户的名称
  • 主机信息
  • 备份的数据库名称
  • SQL语句注释和服务器相关注释
  • CREATE和INSERT语句

4.2 恢复数据库

使用mysql命令恢复数据库
在这里插入图片描述
使用source命令恢复数据库
登陆MySQL服务器后使用,执行该命令之前,先创建并选择恢复后的目标数据库,因为你导出的数据是不存在建立数据库的语句的,在使用source命令进行恢复数据库时,要恢复的文件必须和数据库同名
在这里插入图片描述

4.3 通过复制文件实现数据库备份和恢复

在这里插入图片描述

4.4 表数据导出到文本文件

导出/导入数据——可实现数据库服务器间移动数据

SELECT * FROM tablename
	[WHERE contion]
	INTO OUTFILE 'filename'[OPTION]

4.5 文本文件导入到数据表

LOAD DATA INFILE fiename INTO TABLE
	tablename[OPTION]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值