详细讲解MySQL(二):备份还原、试图、事务、触发器、SQL编程、存储过程、用户权限管理、表维护、杂项。

14. 备份与还原

/* 备份与还原 */ ------------------ 
备份,将数据的结构与表内数据保存起来。 
利用 mysqldump 指令完成。 
-- 导出 
mysqldump [options] db_name [tables] 
mysqldump [options] ---database DB1 [DB2 DB3...]
 mysqldump [options] --all--database 
 1. 导出一张表 mysqldump -u用户名 -p密码 库名 表名 > 文件名(D:/a.sql) 
 2. 导出多张表 mysqldump -u用户名 -p密码 库名 表123 > 文件名(D:/a.sql) 
 3. 导出所有表 mysqldump -u用户名 -p密码 库名 > 文件名(D:/a.sql) 
 4. 导出一个库 mysqldump -u用户名 -p密码 --lock-all-tables --database 库名 > 文件名(D:/a.sql)
  可以-w携带WHERE条件
   -- 导入 
   1. 在登录mysql的情况下:
 source 备份文件 
   3. 在不登录的情况下 
 mysql -u用户名 -p密码 库名 < 备份文件

15. 视图

 什么是视图: 
 视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但 
 是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在 
 引用视图时动态生成。 
 视图具有表结构文件,但不存在数据文件。 
 对其中所引用的基础表来说,视图的作用类似于筛选。定义视图的筛选可以来自当前或其它数据库的一个 
 或多个表,或者其它视图。通过视图进行查询没有任何限制,通过它们进行数据修改时的限制也很少。 
 视图是存储在数据库中的查询的sql语句,它主要出于两种原因:安全原因,视图可以隐藏一些数据, 
 如:社会保险基金表,可以用视图只显示姓名,地址,而不显示社会保险号和工资数等,另一原因是可使复杂 
 的查询易于理解和使用。
  -- 创建视图
  CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}] VIEW view_name 
  [(column_list)] AS select_statement 
    - 视图名必须唯一,同时不能与表重名。
    - 视图可以使用select语句查询到的列名,也可以自己指定相应的列名。
    - 可以指定视图执行的算法,通过ALGORITHM指定。
    - column_list如果存在,则数目必须等于SELECT语句检索的列数
  -- 查看结构 
 SHOW CREATE VIEW view_name 
  -- 删除视图 - 删除视图后,数据依然存在。
    - 可同时删除多个视图。 DROP VIEW [IF EXISTS] view_name ... 
  -- 修改视图结构
    - 一般不修改视图,因为不是所有的更新视图都会映射到表上。 
  ALTER VIEW view_name [(column_list)] AS select_statement 
  -- 视图作用 
  1. 简化业务逻辑 
2. 对客户端隐藏真实的表结构
  -- 视图算法(ALGORITHM) 
  MERGE         合并 
     将视图的查询语句,与外部查询需要先合并再执行!
  TEMPTABLE     临时表 
     将视图执行完毕后,形成临时表,再做外层查询! 
  UNDEFINED     未定义(默认),指的是MySQL自主去选择相应的算法。

16. 事务(transaction)

 事务是指逻辑上的一组操作,组成这组操作的各个单元,要不全成功要不全失败。
    - 支持连续SQL的集体成功或集体撤销。 
   - 事务是数据库在数据完整性方面的一个功能。 
   - 需要利用 InnoDB 或 BDB 存储引擎,对自动提交的特性支持完成。 
   - InnoDB被称为事务安全型引擎。
-- 事务开启 
START TRANSACTION; 或者 BEGIN; 
开启事务后,所有被执行的SQL语句均被认作当前事务内的SQL语句。 
-- 事务提交
COMMIT; 
-- 事务回滚 
ROLLBACK; 
如果部分操作发生问题,映射到事务开启前。 
-- 事务的特性 
1. 原子性(Atomicity) 
事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。 
2. 一致性(Consistency) 
事务前后数据的完整性必须保持一致。 
- 事务开始和结束时,外部数据一致 
- 在整个事务过程中,操作是连续的 
3. 隔离性(Isolation) 
多个用户并发访问数据库时,一个用户的事务不能被其它用户的事物所干扰,多个并发事务之间的 
数据要相互隔离。 
4. 持久性(Durability) 一个事务一旦被提交,它对数据库中的数据改变就是永久性的。
-- 事务的实现 
 1. 要求是事务支持的表类型 
 2. 执行一组相关的操作前开启事务 
 3. 整组操作完成后,都成功,则提交;如果存在失败,选择回滚,则会回到事务开始的备份点。 
-- 事务的原理 
利用InnoDB的自动提交(autocommit)特性完成。 
普通的MySQL执行语句后,当前的数据提交操作均可被其他客户端可见。 
而事务是暂时关闭“自动提交”机制,需要commit提交持久化数据操作。
-- 注意
 1. 数据定义语言(DDL)语句不能被回滚,比如创建或取消数据库的语句,和创建、取消或更改表或存 
储的子程序的语句。 
 3. 事务不能被嵌套 
-- 保存点 
SAVEPOINT 保存点名称 -- 设置一个事务保存点 
ROLLBACK TO SAVEPOINT 保存点名称 -- 回滚到保存点 
RELEASE SAVEPOINT 保存点名称 -- 删除保存点 
-- InnoDB自动提交特性设置 
SET autocommit = 0|1; 0表示关闭自动提交,1表示开启自动提交。 
 - 如果关闭了,那普通操作的结果对其他客户端也不可见,需要commit提交后才能持久化数据操作。
 - 也可以关闭自动提交来开启事务。但与START TRANSACTION不同的是, 
SET autocommit是永久改变服务器的设置,直到下次再次修改该设置。(针对当前连接) 
而START TRANSACTION记录开启前的状态,而一旦事务提交或回滚后就需要再次开启事务。(针 
对当前事务) /* 

17. 锁表

锁表 */ 
表锁定只用于防止其它客户端进行不正当地读取和写入 
MyISAM 支持表锁,InnoDB 支持行锁 
-- 锁定
LOCK TABLES tbl_name [AS alias] 
-- 解锁
UNLOCK TABLES 

18. 触发器

/* 触发器 */ ------------------ 触发程序是与表有关的命名数据库对象,当该表出现特定事件时,将激活该对象 监听:记录的增加、修改、删除。
-- 创建触发器 
CREATE TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EACH ROW 
trigger_stmt 
参数: 
trigger_time是触发程序的动作时间。它可以是 before 或 after,以指明触发程序是在激活它的 语句之前或之后触发。 
trigger_event指明了激活触发程序的语句的类型 
INSERT:将新行插入表时激活触发程序 
UPDATE:更改某一行时激活触发程序 
DELETE
  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值