MySQL索引、事务(数据库管理与高可用)

一、索引的概念

索引:排序的列表,对数据进行快速的查询;

针对不同的产品需求,或者不同的数据库结构,会创建不同的索引;

1:普通索引(默认索引)

2:唯一索引(可以多个)

3:主键索引(只能一个)

4:组合索引(最左查询)

5:全文索引

oracle:B树索引

将表一份为二进行查询;

70

1--35 36--70

1--17 18--35

先把实验环境创建出来:

先创建库;再创建表;

一:创建普通索引;

create index aaa on users(user_name(20));

普通索引创建命令 索引名 users表 哪个列作为索引;索引的大小;尽量和列的大小;保持一致;

如何查看索引;

show create table users\g

使用另外一种创建索引的命令:慎用;此命令是用来修改表的结构的,同时还可以添加索引;

alter table users add index bbb (user_name(20));

另外一种查看索引的方法:

show index from users\G

而且普通索引的类型就是oracle中的B树索引;

第三种创建索引的方法;

在创建表的时候创建索引;

create table t1 ( id int(10) , name char(20) , sex char(2), index ccc (id) );

查看该索引;

二:创建唯一索引

指定创建索引类型(unique)(唯一索引,它的值,要在表中是唯一性的;)

create unique index ddd on t1(id);

第二种创建唯一索引的方法:

创建表的时候创建索引;

create table t2 ( id int(10) , name char(20) , sex char(2), unique eee (id) );

第三种创建唯一索引的方法:

alter命令添加唯一索引;

表的约束:

实体完整性约束(主键)(主键是唯一的,且不能为空。)

域完整性约束(数据类型。)

引用完整性约束(外键一定对应另外一个表的主键。)

用户自定义的完整性(大小约束性。)

三:创建主键索引

主键是创建表的时候声明出来的;

查看主键:

show create table t3\G

四:创建组合索引(特点是一个索引对应多个列;且列与列可以有间隔)

create table t4 (id int(10),name char(20),age int(5),index ggg(id,name,age));

组合索引如何使用?

提供的搜索语句要和索引列对应起来;如果顺序有错误;将不会使用到索引;

五:创建全文索引

全文索引只针对字符串,而数字不能作为全文索引;

create fulltext index hhh on t4 (name);

创建索引的原则;

(1)主键或外键必须有索引

(2)300行以下,没有必要创建索引

(3)经常用于跨表查询,需要有索引

(4)唯一性比较差的列或表不适合建立索引

(5)更新太频繁的列不适合建立索引

(6)经常用where指定的条件进行查询的,适合创建索引

(7)建立索引的列尽量是小字段

索引的维护:

删除,再创建;重建索引;

如何删除索引:

使用drop命令来删除索引;然后指定索引的名称及所在的表;

drop index ggg on t4;

事物:一系列sql语句的集合,这些语句全都指定,要么都不执行;

语句1

语句2

语句3

原子性:

一致性:

隔离性:

持久性:(提交)

内存(数据缓冲区)(可以回滚)

服务器宕机的话,没有来得及写入硬盘的话,数据会丢失;

提交意味着写入硬盘;

硬盘(永久存储)(不可以回滚的)

例:银行转账:

账户1

2000

-1000

=1000

账户2

+1000

如果转账不成功会撤销前面所有的步骤;执行事物之前与执行事物之后要保证一致性。

创建实验环境:

创建一个表;

往表里填写数据,并且关闭自动提交的功能;

然后再提交第二条数据;且随后进行回滚;发现数据没有被及时写入到硬盘中;

位于缓冲区的可以回滚的,写入到硬盘中的数据不可以回滚;

如何手动提交:commit

如何将多个语句写入到事物中;

先使用begin;作为开头;然后中间写语句;最后以提交命令commit做结尾;此时;这些语句就会被及时写入到硬盘中;

创建普通索引的三种方法

创建唯一索引的三种方法

创建主键索引的两种方法

创建组合索引只有一种方法

创建全文索引有三种方法

小结

索引的概念、

索引的作用、

索引的分类、

索引的创建、

索引的查看、

索引的删除

  • 13
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值