【MySQL】数据库 -- 索引与事务

在前面已经总结了关于多表查询的相关内容,本次主要对索引与事务进行总结。

表的内连和外连:

内连接:内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选,我们前面学习的查询都是内连接,也是在开

发过程中使用的最多的连接查询。

select 字段 from 表1 inner join 表2 on 连接条件 and 其他条件;


分为左外连接和右外连接
左外连接:如果联合查询,左侧的表完全显示我们就说是左外连接。

右外连接:如果联合查询,右侧的表完全显示我们就说是右外连接。

select 字段 from 表名1 right join 表名2 on 连接条件;


索引:

         提高数据库的性能,索引是物美价廉的东西了。不用加内存,不用改程序,不用调sql,只要执行正确
的‘create index’,查询速度就可能提高成百上千倍。但是天下没有免费的午餐,查询速度的提高是以插
入、更新、删除的速度为代价的,这些写操作,增加了大量的IO。所以他的价值,在于提高一个海量数
据的检索速度。
常见索引分为:主键索引(primary key),唯一索引(unique),普通索引(index),全文索引(fulltext)--解
决中子文索引问题。

实例如下:

创建主键索引(三种方式):



主键索引的特点:

1. 一个表中,最多有一个主键索引,当然可以使符合主键
2. 主键索引的效率高(主键不可重复)
3. 创建主键索引的列,它的值不能为null,且不能重复
4. 主键索引的列基本上是int

唯一键索引:


唯一索引的特点:

1. 一个表中,可以有多个唯一索引
2. 查询效率高
3. 如果在某一列建立唯一索引,必须保证这列不能有重复数据

4. 如果一个唯一索引上指定not null,等价于主键索引


普通索引的创建:

普通索引的特点:

1. 一个表中可以有多个普通索引,普通索引在实际开发中用的比较多
2. 如果某列需要创建索引,但是该列有重复的值,那么我们就应该使用普通索引

全文索引的创建
当对文章字段或有大量文字的字段进行检索时,会使用到全文索引。MySQL提供全文索引机制,但是有要求,要求

表的存储引擎必须是MyISAM,而且默认的全文索引支持英文,不支持中文。


查询索引:


删除索引:

方法1: 删除主键: alter table 表名 drop primary;

方法2: 其他索引的删除:alter table 表名 drop index 索引名;

方法3 : drop index 索引名 on 表名

创建索引的原则:

比较平凡作为查询条件的字段应该创建索引;

唯一性太差的字段不适合单独创建索引,即使频繁作为查询条件;

更新非常频繁的字段不适合作创建索引;

不会出现在where子句中的字段不该创建索引。



事务:

  事务就是一组dml语句组成,这些语句在逻辑上存在相关性,这一组dml语句要么全部成功,要么全部失败,是一个整体。MySQL提供一种机制,保证我们达到这样的效果。事务还规定不同的客户端看到的数据时不相同的。

1、开始一个事务:



2、开启事务,保存节点:

3、事务,回滚到原来的状态:

4、事务,回滚到事务的开始:

事务的特性:
1. 原子性(Atomicity):
原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。
2. 一致性(Consistency):
事务必须使数据库从一个一致性状态变到另外一个一致性状态。
3. 隔离性(Isolation):
事务的隔离性是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据
所干扰,多个并发事务之间要相互隔离。
4. 持久性(Durability):
持久性是指一个事务一旦被提交,它对数据库中的数据的修改就是永久性的,接下来即使数据库发生故障也
不应该对其有任何影响。


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值