##TCL(Transaction Control Language)事务控制语言
事务简介:
一个或一组sql语句组成一个执行单元,这个执行单元要么全部执行,要么全不执行
如果其中一条语句执行失败或产生错误,整个单元将会回滚。所有受到影响的数据将返回到事务开始以前的状态。
若单元中的所有sql语句均正确执行,则事务被顺利执行
存储引擎:
myisam
memory
innodb(支持事务)默认存储引擎
.....
#查看存储引擎
show engines;
#################
###事务的ACID属性
#################
①、原子性(Atomicity)
原子性是指事务是一个不可分割的单位,事务的操作要么都发生,要么都不发生
②、一致性(Consistency)
事务必须使数据库从一个一致性状态转换成另一个一致性状态。(比如一个人给另一个人转账后的两人的金额之和是不变的)
③、隔离性(Isolation)
一个事务的执行不被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能相互干扰
④、持久性(Durability)
持久性是指一个事务一旦提交,它对数据库中数据的改变就是永久性的,接下来的其他操作和数据库故障不应该对其有任何影响。
#事务的创建:
隐式事务:事务没有明显的开启和结束的标记。比如insert,update,delete语句
显式事务:事务具有明显的开启和结束的标记
#1.开启事务
set autocommit = 0;
start transaction;
#2.编写sql语句
#3.结束事务
commit;
rollback;
#delete和truncate在事务中使用的区别
#1.演示delete
set autocommit = 0;
start transaction;
delete from copy2;
rollback;
select * from copy2;
#2.演示truncate
set autocommit = 0;
start transaction;
truncate table t_course;
rollback;
select * from t_course;
#################
###视图
#################
含义:虚拟表,和普通表一起使用
mysql5.1版本出现的新特性,是通过表动态生成的数据
应用场景:
1.多个地方用到同样的查询结果
2.该查询结果使用的sql语句较复杂
#一.创建视图
语法:
create view 视图名
as 查询语句
视图的优点:
1.重用sql语句
2.简化复杂的sql操作 ,不必知道它的查询细节
3. 保护数据,提高安全性
创建语法的关键字 是否实际占用物理地址 使 用
视图 create view 只保存了sql逻辑 增删改查(不建议使用)
表 create table 保存了数据 增删改查
#1.创建视图学生中年龄大于16的学生信息
create view mystudent
as
select * from t_student where age > 16;
#2.查看视图学生中年龄大于16的学生信息
select * from mystudent;
#二、视图的修改
语法1:create or replace view 视图名 as 查询语句
语法2:alter view 视图名 as 查询语句
#三、视图的删除
语法: drop view 视图名, 视图名 ...
#四、查看视图
desc mystudent;
show create view mystudent;
#五、视图的更新
视图不可以更新的情况:
1.视图中包含分组函数,distinct,group by ,having ,union或者union all
2.常量视图
3.有子查询的视图
create view myem
as
select * from t_employee;
#1.插入视图(原始表也会有)
select * from myem;
insert into myem(id,name,job,mgr) values (1014,'Heber','人事主管',1001);
#2.修改 (对原始表也会修改)
update myem set name='Vetor' where id = 1007;
#3.删除(对原始表也会删除)
delete from myem where id = 1014;