视图
应用场景:对于复杂的查询,往往是有多个数据表进行关联查询而得到,如果数据库因为需求等原因发生了改变,为了保证查询出来的数据与之前相同,则需要在多个地方进行修改,维护起来非常麻烦-----解决办法:创建视图
简单讲视图就是一张虚表,一个查询结果集,但视图不存储具体的数据(基本表数据发生了改变,视图也会跟着改变)
创建视图:create view 视图名称 as select语句;
使用视图:视图的用途就是查询,select * from 视图名;
删除视图:drop view 视图名称;
事物
什么叫事物?一句话概括:要么不做,要做就一定完成。相当远一个0-1问题,最经典的场景就是银行转账,要么不转,转就一定成功。
事物的四大特性:
事务四大特性(简称ACID)
原子性(Atomicity):一个事物就是一个最小单元,不可被分割
一致性(Consistency):一旦事物发生,所有相关的数据库以及表的状态保持一致,哪怕中间出现严重错误
隔离性(Isolation):就是事物在commit之前所做的任何操作对其他数据是不可见的
持久性(Durability):事物一旦提交,所做的修改将永源保存到数据库当中
一个完整的事物流程:
begin transaction t1_student
update sc
set CNo='001'
where SNo='00015' and CNo='003'
update sc
set CNo='006'
where SNo='00015' and CNo='004'
if @@ERROR!=0
rollback transaction
else
commit transaction t_student
创建一个事务,把学号为00015的的选修课程号003改为001、选修课程号004改为
006,第一个操作失败,事务回滚,成功则设定为保存点,第二个操作失败,则事务
回滚,查看事务执行结果。
在数据库的优化中,我们可以利用事物或者block将sql语句模块化,执行起来容错性更高,效率更强。后续再介绍
索引
索引的作用:加快查询速度
索引的原理:B树。白话文:select id from students where name = ‘xm’,普通查询,会一条一条比对name是否等于xm,如果在name那一列加上索引,就不需要一条一条的比对了,相当于将name那一列单独抽出来然后按照B树来排序,在B树种进行查找,找到之后会将结果与name做一个映射,直接返回name所在的id
索引的使用:
#查看索引
show index from 表名;
#创建索引
create index 索引名称 on 表名(字段名称(长度))#如果指定的字段不是字符串类型不需要指定长度
#删除索引
drop index 索引名称 on 表名;