一、视图 视图: view, 是一种有结构(有行有列)但是没结果(结构中不真实存放数据)的虚拟表, 虚拟表的结构来源不是自己定义, 而是从对应的基表中产生(视图的数据来源). 1、创建视图 基本语法 create view 视图名字 as select语句; (as不可省略) 创建单表视图: 基表只有一个 创建多表视图: 基表来源至少两个 2、查看视图 查看视图: 查看视图的结构 视图是一张虚拟表: 表, 表的所有查看方式都适用于视图: show tables [like]/desc 视图名字/show create table 视图名; 视图一旦创建: 系统会在视图对应的数据库文件夹下创建一个对应的结构文件: frm文件 3、使用视图 使用视图主要是为了查询: 将视图当做表一样查询即可.( 其实本质就是执行封装的select语句.) 4、修改视图 视图本身不可修改, 但是视图的来源是可以修改的. 修改视图: 修改视图本身的来源语句(select语句) alter view 视图名字 as 新的select语句; 5、删除视图 drop table/view 视图名字; 6、视图意义 1. 节省SQL语句: 将一条复杂的查询语句使用视图进行保存: 以后可以直接对视图进行操作(你搜索了一个好的网站,收藏下,下次就不用搜索) 2. 数据安全: 视图操作是主要针对查询的, 如果对视图结构进行处理(删除), 不会影响基表数据(相对安全). 3. 视图往往是在大项目中使用, 而且是多系统使用: 可以对外提供有用的数据, 但是隐藏关键(无用)的数据(数据安全) 4. 视图可以对外提供友好型: 不同的视图提供不同的数据, 对外好像专门设计 5. 视图可以更好(容易)的进行权限控制 二、事务 场景:张三李四银行账户均有5000人民币,一日,张三给李四转账2000,但是张三刚打钱,银行系统故障。结果是:张三账户少了2000,但是李四账户还是5000。 学完事务就可以解决这个问题了 事务: transaction, 一系列要发生的连续的操作(注意存储引擎,InnoDB支持事务) 事务安全: 一种保护连续操作同时满足(实现)的一种机制 事务安全的意义: 保证数据操作的完整性 事务操作 事务操作分为两种: 自动事务(默认的), 手动事务 手动事务: 操作流程 1.开启事务: 告诉系统以下所有的操作(写)不要直接写入到数据表, 先存放到事务日志start transaction; 2.进行事务操作: 一系列操作 a)张三账户钱减少 b)李四账户钱增加 3.关闭事务: 选择性的将日志文件中操作的结果保存到数据表(同步)或者说直接清空事务日志(原来操作全部清空) a) 提交事务: 同步数据表(操作成功): commit; commit后结果 b) 回滚事务: 直接清空日志表(操作失败): rollback; rollback操作 事务原理 事务操作原理: 事务开启之后, 所有的操作都会临时保存到事务日志, 事务日志只有在得到commit命令才会同步到数据表,其他任何情况都会清空(rollback, 断电, 断开连接) commit之前 commit之前并没有多9.99 commit之后 回滚点 回滚点: 在某个成功的操作完成之后, 后续的操作有可能成功有可能失败, 但是不管成功还是失败,前面操作都已经成功: 可以在当前成功的位置, 设置一个点: 可以供后续失败操作返回到该位置, 而不是返回所有操作, 这个点称之为回滚点. 设置回滚点语法: savepoint 回滚点名字; 回到回滚点语法: rollback to 回滚点名字; 事务特性 事务有四大特性: ACID A: Atomic原子性, 事务的整个操作是一个整体, 不可分割,要么全部成功,要么全部失败; C: Consistency, 一致性, 事务操作的前后, 数据表中的数据没有变化 I: Isolation, 隔离性, 事务操作是相互隔离不受影响 D: Durability, 持久性, 数据一旦提交, 不可改变,永久的改变数据表数据 锁机制: innodb默认是行锁, 但是如果在事务操作的过程中, 没有使用到索引,那么系统会自动全表检索数据, 自动升级为表锁 行锁: 只有当前行被锁住, 别的用户不能操作 表锁: 整张表被锁住, 别的用户都不能操作 本文转载于微信公众号: phoenixframework(phoenixframework),更多微信文章请扫描关注公众号: |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|