事务
什么是事务:
1、事务(TRANSACTION)是作为单个逻辑工作单元执行的一系列操作,多个操作作为一个整体向系统提交,要么都执行、要么都不执行
2、事务是一个不可分割的工作逻辑单元。
事务的特性:事务必须具备以下四个属性,简称ACID 属性
1、原子性(Atomicity) --事务是一个完整的操作,事务的各步操作是不可分的(原子的),要么都执行,要么都不执行
2、一致性(Consistency)–当事务完成时,数据必须处于一致状态
3、隔离性(Isolation)–并发事务之间彼此隔离、独立,它不应以任何方式依赖于或影响其他事务
4、持久性(Durability) --事务完成后,它对数据库的修改被永久保持
创建一个事务:
begin;
update user set balance=balance-1000 where name=‘张三’;
update user set balance=balance+1000 where name=‘李四’;
commit;
回滚事务:
begin;
update user set balance=balance-1000 where name=‘张三’;
rollback;
查看事务:select * from user;
开启事务:SET autocommit=0;
关闭事务:SET autocommit=1;
视图
什么是视图
1:视图是一张虚拟表,表示一张表的部分数据或多张表的综合数据,其结构和数据是建立在对表的查询基础上
2:视图中不存放数据,数据存放在视图所引用的原始表中
视图的用途
a、筛选表中的行
b、防止未经许可的用户访问敏感数据
c、降低数据库的复杂程度
d、将多个物理数据库抽象为一个逻辑数据库
创建视图
create view info_score as
select i.name,s.grade from info i inner join score s on i.id=s.sid;
查看视图
select * from info_score;
删除视图
drop view if exists info_score;
使用视图注意事项:
1、视图中可以使用多个表
2、一个视图可以嵌套另一个视图
3、对视图数据进行添加、更新和删除操作直接影响所引用表中的数据
4、当视图数据来自多个表时,不允许添加和删除数据
索引
索引是一种有效组合数据的方式,为快速查找到指定记录
常用索引类型:1、索引的数据结构来分:B-树索引和哈希索引;2、索引的用途来分:普通索引、唯一索引、主键索引、组合索引、全文索引;
创建索引
create index index_name on USER(name);
查看索引
show index from user;
删除索引
drop index index_name on user;
创建索引的指导原则:
1、按照下列标准选择建立索引的列
a频繁搜索的列
b经常用作查询选择的列
c经常排序、分组的列
d经常用作连接的列(主键/外键)
2、请不要使用下面的列创建索引
a仅包含几个不同值的列
b表中仅包含几行
c定义为text和image和bit数据类型的列不应该增加索引
d当表的修改(UPDATE,INSERT,DELETE)操作远远大于检索(SELECT)操作时不应该创建索引,这两个操作是互斥的关系
使用索引时注意事项:
在建立索引的时候应该考虑索引应该建立在数据库表中的某些列上面 哪一些索引需要建立,哪一些所以是多余的.
一般来说,
1、在经常需要搜索的列上,可以加快索引的速度
2、主键列上可以确保列的唯一性
3、在表与表的而连接条件上加上索引,可以加快连接查询的速度
4、在经常需要排序(order by),分组(group by)和的distinct 列上加索引 可以加快排序查询的时间, (单独order by 用不了索引,索引考虑加where 或加limit)
5、在一些where 之后的 < <= > >= BETWEEN IN 以及某个情况下的like 建立字段的索引(B-TREE)
6、like语句的 如果你对nickname字段建立了一个索引.当查询的时候的语句是 nickname lick ‘%ABC%’ 那么这个索引讲不会起到作用.而nickname lick ‘ABC%’ 那么将可以用到索引
7、索引不会包含NULL列,如果列中包含NULL值都将不会被包含在索引中,复合索引中如果有一列含有NULL值那么这个组合索引都将失效,一般需要给默认值0或者 ’ '字符串
8、使用短索引,如果你的一个字段是Char(32)或者int(32),在创建索引的时候指定前缀长度 比如前10个字符 (前提是多数值是唯一的…)那么短索引可以提高查询速度,并且可以减少磁盘的空间,也可以减少I/0操作.
使用索引的优点
1、可以通过建立唯一索引或者主键索引,保证数据库表中每一行数据的唯一性.
2、建立索引可以大大提高检索的数据,以及减少表的检索行数
3、在表连接的连接条件 可以加速表与表直接的相连
4、在分组和排序字句进行数据检索,可以减少查询时间中 分组 和 排序时所消耗的时间(数据库的记录会重新排序)
5、建立索引,在查询中使用索引 可以提高性能
使用索引的缺点
1、在创建索引和维护索引 会耗费时间,随着数据量的增加而增加
2、索引文件会占用物理空间,除了数据表需要占用物理空间之外,每一个索引还会占用一定的物理空间
3、当对表的数据进行 INSERT,UPDATE,DELETE 的时候,索引也要动态的维护,这样就会降低数据的维护速度,(建立索引会占用磁盘空间的索引文件。一般情况这个问题不太严重,但如果你在一个大表上创建了多种组合索引,索引文件的会膨胀很快)。
事务、视图、索引
最新推荐文章于 2020-05-28 18:57:39 发布