- 视图就是一个虚拟表,可以当成普通表来用
-
create view 视图名 as select * from employees where department_id = 50
通过视图更改的数据 也对原表进行了修改
-
通过视图还可以对一段非常复杂的查询过程进行封装.
-
视图本质就是一个被提前封装的一个查询; 从结果来看就是一张表.视图新增的表无法影响原表
和开发紧密相关的数据库重要概念
- 逻辑上相关的一组操作DML语句;作为一个整体向数据库服务器进行提交,要么全部成功要么全部失败.不允许出现部分成功的情况 ;否则会导致严重的事故
- 引入事务的机制来保证逻辑上相关的一批sql一起执行或不执行
- 默认情况下一条DML语句代表一个事务
- 1.关闭事务的自动提交 , SET @@autocommit=0
- 2.STRAT TRANSACTION 开启一个事务 另一种写法: begin
- DML sql语句
- 3.提交事务 COMMIT 全部执行成功,结束事务
- DML sql语句出错
- 4.有任意一条执行失败;回滚ROLLBACK 回滚到sql语句执行之前
- JDBC里写法
- 事务的四大特性:ACID
- 原子性:undolog:日志文件,通过日志回滚到日志初始状态
- 一致性:事务执行的前后表中的数据从一种一致状态到另一种一致状态
- 持久性: 一个事务在提交commit之后,对表中数据的修改必须永久保存到数据库中
- 在mysql中,为了实现持久性;引入了另外一个日志:redolog;
- 隔离性:一个事务在执行过程中不能受到另外事务的影响;
- 事务四大隔离级别:
- 隔离级别越高,并发效率就越低;事务受影响性越低
- 串行化级别最高
- 读未提交 read uncommitted 一个事务可以读取到另一个事务未提交的数据;(出现脏读)
- 读已提交 read committed 一个事务只能读到另一个事务提交过的数据,但是出现不可重复读的问题 (一个事务执行期间对某条数据先后读取结果不一致 )
- 可重复读 repeatable read 可以实现一个事务中先后读取的同一份数据的结果一致,解决了不可重复读的问题;(但会出现"幻读"现象 这个事务可以读到另外线程的执行完的结果,造成预期结果不一致)
- 串行化 serializable 类似于线程锁,对于同一张表;必须等一个事务完成后,其它事务才能运行
- mysql默认隔离级别:可重复读 oracle默认为读已提交
- 设置隔离级别:set session transaction isolation level +级别
- 查询隔离查询: @@tx_isolation
- 事务四大隔离级别:



