视图
- 对于复杂的查询,在多个地方被使用,如果需求发生了改变,需要更改sql语句,则需要在多个地方进行修改,维护起来非常麻烦
- 解决:定义视图
- 视图本质就是对查询的封装
- 定义视图,建议以v_开头
create view 视图名称 as select语句;
例如:创建视图,查询学生对应的成绩信息
create view v_stu_sco as
select students.*,scores.score from scores
inner join students on scores.stuid=students.id;
查看视图
show tables
删除视图
drop view 视图名称
使用视图,查询
select * from v_stu_score
事务
事务(Transaction)是并发控制的基本单位。所谓事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。例如,银行转帐工作:从一个帐号扣款并使另一个帐号增款,这两个操作要么都执行,要么都不执行。所以,应该把他们看成一个事务。事务是数据库维护数据一致性的单位,在每个事务结束时,都能保持数据一致性
事务的四大特性
- 原子性(Atomicity):事务中的全部操作在数据库中是不可分割的,要么全部完成,要么均不执行
- 一致性(Consistency):几个并行执行的事务,其执行结果必须与按某一顺序串行执行的结果相一致
- 隔离性(Isolation):事务的执行不受其他事务的干扰,事务执行的中间结果对其他事务必须是透明的
- 持久性(Durability):对于任意已提交事务,系统必须保证该事务对数据库的改变不被丢失,即使数据库出现故障
事务命令
- 开启事务
开启事务后执行修改命令,变更会维护到本地缓存中,而不维护到物理表中
begin
- 提交事务
将缓存中的数据变更维护到物理表中
commit
- 回滚事务
放弃缓存中变更的数据
rollback
索引
当数据库中数据量很大时,查找数据会变得很慢,这个时候,就可以利用索引
主键和唯一索引都是索引,都可以提高查询速度
- 主键是数据物理存储的位置
- 索引会单独创建一个目录,对应数据的位置
索引分单列索引和组合索引
- 单列所以,即一个索引只包含单个列,一个表可以有多个单列索引
- 组合索引,即一个索引包含多个列
查看索引
show index from 表名;
创建索引
create index 索引名称 on 表名(字段名称(长度));
- 如果指定字段是字符串,需要指定长度,建议长度与定义字段时的长度一致
- 字段类型如果不是字符串,可以不填写长度部分
删除索引
drop index 索引名称 on 表名;
索引缺点
- 索引能够提高查询速度,但是会降低更新表的速度,因为更新时,mysql不仅要保存数据,还要保存索引文件
- 索引会占用磁盘空间索引文件