【mysql】事务、视图、索引

事务

事务(transaction)是作为单个逻辑工作单位执行的一系列操作,多个操作作为一个整体向系统提交,要么都执行、要么都不执行。

事务的ACID属性

原子性:(Atomicity);

事务是一个完整的操作,事务的各步操作时不可分的(原子的),要么都执行、要么都不执行。

一致性(Consistency):

当事务完成时,数据必须处于一致状态

隔离性(Isolation):

并发事务之间彼此隔离、独立,它不应以任何方式依赖于或影响其它事务

持久性(Durability):

事务完成后,它对数据库的修改被永久保持

创建事务

开始时,开启事务 or 关闭默认的自动提交:

begin; 
/*或者*/
start transaction;

提交事务:

这个语句标志一个事务会成功提交,数据保存到数据库的数据文件中,并释放连接时占用的资源。

commit

回滚事务:

取消自事务起始点到该语句的所有数据更新操作,将数据状态回滚到事务开始前,并释放事务控制的资源。

rollback

示例:

begin;
# sql语句
commit;
begin;
# sql语句
rollback;

视图

视图是一种虚拟表,它的行和列来自查询中引用的表,在执行时,它直接显示来自表中的数据,自己本身并不存储数据。它是保存在数据库中的select查询。

作用:

筛选表中的行
防止未经许可的用户访问敏感数据
降低数据库的复杂程度
将多个物理数据库抽象为一个逻辑数据库

使用视图:

创建视图:

  create view view_Name as <select子句>;

删除视图:

drop view if exists view_Name;

查看视图

select * from view_Name;

注意事项

对视图数据进行添加、更新和删除操作直接影响所引用表中的数据

当视图数据来自多个表时,不允许添加和删除数据

一个视图可以嵌套另一个视图

视图中可以使用多个表

索引

索引是一种有效的组合数据的方式,为快速查找到指定记录,对复杂的查询语句进行优化,加速查询

索引的分类

普通索引:

MySQL中基本索引类型,没有什么限制,允许在定义索引的列中插入重复值和空值,纯粹为了查询数据更快一点。

唯一索引:

索引列中的值必须是唯一的,但是允许为空值。

主键索引:

在数据库关系图中为表定义一个主键将自动创建主键索引,主键索引是唯一索引的特殊类型。主键索引要求主键中的每个值是非空、唯一的,当在查询中使用主键索引时,它还允许快速访问数据。

复合索引:

在表中的多个字段组合上创建的索引,只有在查询条件中使用了这些字段的左边字段时,索引才会被使用,使用组合索引时遵循最左前缀集合。

全文索引:

全文索引可以在char、varchar或text类型的列上创建,主要用于在大量文本文字中搜索字符串,此时使用全文索引的效率将大大高于使用SQL的like关键字的效率。

使用索引

创建索引:

create [unique|fulltext|spatial] index index_name on tableName(colum_Name[length]);

在哪些列建立索引:

  • 频繁搜索的列;
  • 经常用作查询的列;
  • 经常排序、分组的列;
  • 经常用作连接的列(主键/外键)

删除索引:

drop index tableName.index_name;

删除表,该表的所有索引将同时被删除
删除表中的列,如果要删除的列为索引的组成部分,则该列也会从索引中删除,#如果组成索引的列都被删除,则整个索引都将被删除。

查看索引:

show index from tableName;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章