下面一起来了解下Mysql中的索引,事务与视图,相信大家看完肯定会受益匪浅,文字在精不在多,希望Mysql中的索引,事务与视图这篇短内容是你想要的。
索引的概念
索引是一种特殊的文件,包含着对数据表中所有记录的引用指针。更通俗地说,数据库索引好比一本书前面的目录,能加快数据库的查询速度。例如需要遍历2000条数据,在没有索引的情况下,数据库会遍历全部2000条数据后选择符合条件的;而有了相应的索引之后,数据库会直接在索引中查找符合条件的选项。数据库索引就是为了提高表的搜索效率而对某些字段中的值建立的目录。
索引的作用
(1)快速定位,大大加快数据的查询速度;
(2)降低数据库的IO(输入/输出)成本,降低数据库的排序成本;
(3)通过创建唯一性索引,可以保证数据表中的每一行数据的唯一性;
(4)加快表和表之间的联系;
索引的分类
(1)普通索引,最基本的索引类型,没有唯一性之类的限制
(2)唯一索引,索引列的所有值只能出现一次,即必须唯一,可以有一个为空值
(3)主键索引,主键是一种唯一索引,但它必须指定为“PRIMARY KEY”,不可以为空值,在数据库中为表定义主键将自动创建主键索引,主键索引是唯一索引的特殊类型。该索引要求主键中的每一个值都唯一
(4)全文索引,索引类型为FULLTEXT,全文索引可以在CHAR,VARCHAR或者TEXT类型的列上创建
(5)多列索引。多列索引可以区分其中一列可能有相同值的行。例如:如果经常在同一查询中为姓和名两列设置查询条件,那么在这两列上创建索引将很有意义
创建索引的条件
数据条目大于2000条 否则和不使用索引没有多大区别
创建及查看索引
首先进入数据库school创建一个数据表info
id name score hobby
1 张三 90 游泳
2 李四 79 看书
2 王五 68 画画
(1)创建普通索引
查看索引:show index from info \G; 在命令后面加上“\G”,可以竖向显示索引的信息
命令格式:
create index 索引名 on 表名 (列名);
(2)创建唯一索引
命令格式:create unique index 索引名 on 表(列名);
举例:create unique index unique_id_index on info(id);
(3)创建主键索引,
创建主键索引有两种方式,一种是在创建表的同时创建主键,主键索引默认创建
另一种是已经创建了表,没有指定主键,然后修改表加入主键,主键索引会自动创建,
命令格式:alter table 表名 add primary key(列名);
(4)删除索引
命令格式:drop index 索引名 on 表名;
举例:
drop index name_index on info;
drop index unique_id_index on info;
(5)删除主键
命令格式:alter table 表名 drop primary key;
举例:alter table info drop primary key;
(6)修改表的结构
增加一列,举例:alter table info add column age int;
删除表中一列;alter table info drop column age;
修改列的内容;alter table infos change hobby hobname char(16);
(7)创建全文索引:create table infos (descript text,fulltext(descript));
(8)创建多列索引:只需要在创建索引时指定多列即可
create index mulit_index on info(name,score);
事务的概念
事务是一种机制,一个操作序列,包含了一组数据库操作命令,并且把所有的命令作为一个整体一起向系统提交或撤销操作请求,即这一组数据库命令要么执行,要么都不执行。事务是一个不可分割的工作逻辑单元,在数据库系统上执行并发操作时,事务是最小的控制单元。事务适用于用户同时操作数据库系统的场景,如银行,保险公司及证券交易系统等。通过事务的整体性以保证数据的一致性。事务是保证了一组操作的平稳性和可预测性的技术。
事务的ACID特性
事务具体有四个特性:原子性;一致性;隔离性;持续性
(1)原子性:事务是一个完整的操作,各元素是不可分的,即原子的。事务中的所有元素必须作为一个整体提交或回滚。如果事务中的任何元素失败,则整个事务将失败
(2)一致性:当事务完成时,数据必须处于一致状态;在事务开始之前,数据库中存储的数据处于一致状态;在正在进行的事务中,数据可能处于不一致的状态;当事务成功完成时,数据必须再次回到一致的一致状态。
(3)隔离性:对数据进行修改的所有并发事务是彼此隔离的,这表明事务必须是独立的,它不应以任何方式依赖于或影响其他事务。修改数据的事务可以在另一个使用相同数据的事务开始之前访问这些数据,或者在另一个使用相同数据的事务结束之后访问这些数据。
(4)持久性:指不管系统是否发生故障,事务处理的结果都是永久的。一旦事务被提交,事务的效果会被永久的保存在数据库中
使用事务命令控制事务
begin:表示开始一个事务,后面会有多条数据库操作语句执行
commit:表示提交一个事务,对应前面的begin操作,它们之间的数据库操作语句一起完成
rollback:表示回滚一个事务,在begin和commit之间,如果某一个数据库操作语句出现错误,执行rollback回滚,数据库回到begin之前的状态,也就是操作语句都不执行
看完Mysql中的索引,事务与视图这篇文章后,很多读者朋友肯定会想要了解更多的相关内容,如需获取更多的行业信息,可以关注我们的数据库栏目。