下面来介绍事务和视图。
事务与前面介绍的有所不同的是,它是对表进行操作,不是简单的查询(不动表的数据)
一,事务四大特性
原子性:事务中的全部操作在数据库中是不可分割的,要么全部完成,要么均不执行。
一致性:几个并行执行的事务,其执行的结果必须与按某一顺序串执行的结果相一致。
隔离性:事务的执行不受其他事务的干扰,系统必须执行的中间结果对其他事务必须是透明的。
持久性:对于任意已提交的事务,系统必须保证该事务对数据库的改变不被丢失,即使数据库出现故障。
二,使用事务的情景:insert into/ update /delete
show create table students; #查询表的创建语句 ENGINE=InnoDB 数据类型是innodb
是支持事务的。
![7513ce7e6bbe5321521575aef12c1882.png](https://i-blog.csdnimg.cn/blog_migrate/ab489ac452ebe7e52f5704bddd5976e1.png)
Begin; #开始操作事务
。。。
Commit; #提交编辑的事务,不提交不会执行mysql命令
Rollback; #回滚(撤销)
事务主要是运用在与python交互的时候,就是用python直接执行mysql命令,后面会用代码详解。
索引
创建缩影主要是用来提高查询的速度,相当于告诉数据库我要查询什么,而不是每个字段都遍历。
查看索引
Show index from 表名
创建索引
Create index 索引名 on 表名(字段(长度))
查看执行的时间
开启运行时间的监测
Set profiling=1;#开启
执行查询语句
Select * from areas where title=’大同市’; #areas已有的表名
查看执行的时间
Show Profiles;
视图
视图是将很复杂的数据库做一个精简,把需要的数据提取出来,单独创建一个“表”,方便查询,所以视图还是用来查询的。
mysql> create view v_stu_sub_sco as #将as后面的查询语句赋与v_stu_sub_sco
select students.*,subject.title,scores.score[批注] from scores
inner join students on scores.stuid=students.id
inner join subject on scores.subid=subject.id;
[批注]代表查询students的所有字段,查询subject表的标题字段,查询scores表的分数字段。
![2bb2fa277f56b65097b4736eeabaf5fd.png](https://i-blog.csdnimg.cn/blog_migrate/bec5025e23c6ac73eafd52bc4e651542.png)
如果只想查学生名字,对应科目和分数,就可以这样写select 语句了。
Select name,title,score from v_stu_sub_sco; ##对于上面有的字段都可以进行相应的查询。