第8章MySQL进阶;学习目标/Target;学习目标/Target;学习目标/Target;学习目标/Target;章节概述/Summary;目录/Contents;目录/Contents;事务;;在MySQL中,事务是针对数据库的一组操作,它可以由一条或多条SQL语句组成,且每条SQL语句是相互依赖的。
事务执行过程中,只要有一条SQL语句执行失败或发生错误,其他语句就都不会执行。
也就是说,要么事务的执行成功,要么数据库的状态退回到执行事务前的状态。;;原子性是指一个事务必须被视为一个不可分割的最小工作单元,只有事务中所有的数据操作都执行成功,整个事务才算执行成功。
事务中如果有任何一条SQL语句执行失败,已经执行成功的SQL语句也必须撤销,数据库的状态退回到执行事务前的状态。;一致性是指在使用事务时,无论执行成功还是失败,都要使数据库处于一致的状态,保证数据库不会返回到一个未处理的事务中。
MySQL中事务的一致性主要由日志机制实现,通过日志记录数据库的所有变化,为事务恢复提供跟踪记录。;隔离性是指当一个事务在执行时,不会受到其他事务的影响。隔离性保证了未完成事务的所有操作与数据库系统的隔离,直到事务完成后才能看到事务的执行结果。;持久性是指事务一旦提交,其对数据库中数据的修改就是永久性的。事务不能做到百分之百的持久性,只能从事务本身的角度来保证持久性,而如果一些外部原因(如硬盘损坏等)导致数据库发生故障,那么数据库中的所有数据都有可能会丢失。;;默认情况下,用户执行的每一条SQL语句都会被当成单独的事务自动提交。
要将一组SQL语句作为一个事务,则需要先启动事务,开启事务的语句如下:;通过案例演示如何使用事务。;步骤一:;步骤二:;步骤三:;步骤四:;步骤五:;步骤六:;;回滚事务时,事务内的所有操作都将撤销。如果希望只撤销一部分,可以使用事务保存点来实现。在事务中设置保存点的语句:;通过案例演示事务保存点的使用。;步骤一:;步骤二:;步骤四:;步骤六:;步骤七:;视图;;视图是一种虚拟表,视图的结构和数据来源于数据库中的数据表。从概念上讲,数据库中的数据表被称为基本表。通过视图不仅可以看到基本表中的??据,还可以对基本表中的数据进行添加、修改和删除。
数据库只保存视图的定义,不保存视图对应的数据。
若基本表中的数据发生了变化,通过视图查询出来的数据也会发生变化。若通过视图修改数据时,基本表中的数据也会发生变化。;视图不仅可以简化用户对数据的理解,还可以简化用户对数据的操作。例如,在日常开发中经常使用一个比较复杂的语句进行查询,此时就可以将该语句定义为视图,从而避免大量重复且复杂的查询操作。;通过视图可以很方便地进行权限控制,指定某个用户只能查询和修改指定数据,例如,不负责处理工资单的员工,不能查看员工的工资信息。;视图可以帮助用户屏蔽数据表结构变化带来的影响,例如,数据表增加字段,不会影响基于该数据表创建的视图。;;使用CREATEVIEW语句创建视图的语法格式:;通过案例演示视图的使用。;步骤一:;步骤二:;步骤三:;;使用ALTERVIEW语句可以修改视图,使用DROPVIEW语句可以删除视图。
修改视图和删除视图的语法格式:;通过案例演示视图的修改和删除。;步骤一:;步骤二:;步骤三:;步骤四:;;视图是虚拟表,不保存数据。通过视图进行数据操作时,实际上操作的是基本表中的数据。通常对基于单表的视图进行数据操作,主要的操作包括查询数据、添加数据、修改数据和删除数据。;通过案例演示对视图进行数据操作。;步骤一:;步骤三:;步骤四:;步骤六:;数据备份和数据还原;;在MySQL的bin目录中提供了mysqldump命令行工具。该工具用于将数据库的数据导出成SQL脚本,实现数据的备份。
使用mysqldump命令备份数据库或数据表时,不需要登录MySQL,直接在命令行窗口执行命令即可。
mysqldump命令可以备份单个数据库或数据表、备份多个数据库和备份所有数据库。;1.备份单个数据库或数据表
使用mysqldump命令备份单个数据库或数据表的语法格式:;2.备份多个数据库
使用mysqldump命令备份多个数据库的语法格式:;通过案例演示使用mysqldump命令备份单个数据库。;步骤一:;查看备份文件:;;在数据备份后,当数据丢失、损坏或需要迁移时,数据就可以通过备份文件还原。
数据还原有两种常用的方式,分别是使用mysql命令还原数据和使用source命令还原数据。;1.使用mysql命令还原数据
使用mysql命令还原数据的语法格式:;通过案例演示将mydb数据库的备份数据还原到mydb2数据库中。;步骤一:;步骤二:;2.使用source命令还原数据
source命令是MyS