MySQL索引与事务

MySQL索引与事务

链接:https://pan.baidu.com/s/1ANGg3Kd_28BzQrA5ya17fQ
提取码:ekpy
复制这段内容后打开百度网盘手机App,操作更方便哦

1.索引的分类

  • 普通索引:这是最基本的索引类型,而且没有唯一性之类的限制
  • 唯一性索引:与普通索引基本相同,区别在于:索引列的所有值都只能出现一次,即必须唯一,但可为空。
  • 主键:是一种特殊的唯一索引,必须指定为PRIMARY KEY,具有唯一性的同时不能为空
  • 全文索引:MySQL3.23.23版开始支持全文索引和全文检索。在MySQL中,全文索引的类型为FULLTEXT,全文索引可以在``VARCHAR或者TEXT`类型的列上创建。贴吧的文本内容,和一些小型的网站网页内容,存放在数据库中即为全文索引模式。
  • 单列索引与多列索引:索引可以是单列上创建的索引,也可以是 列上创建的索引。

2.索引的作用

  • 设置了合适的索引之后,数据库利用各种快速的定位技术,能够大大加快查询速率,特别是当表很大时,或者查询涉及到多个表时,使用索引可使查询加快成千倍。
  • 可以降低数据库的lo成本, 并且索引还可以降低数据库的排序成本。
  • 通过创建唯一-性索引保证数据表数据的唯一性,可以加快表与表之间的连接。
  • 在使用分组和排序时,可大大减少分组和排序时间。

3.创建,查看,删除索引的方法

3.1索引的创建

已知一个表内信息数据如下

image_1ckmkmcmjb5b1tap1jk71qs01c1v75.png-8.3kB

3.1.1创建普通索引(没有唯一性限制)

image_1ckmibu8u6h8e6l1c5njlh1b8p16.png-23.1kB
(1)示例如下:
image_1ckmiegld1343smmks1pkv1mbm1j.png-5kB

查看结果:
image_1ckmifugj2blg0b12aj2tm1sfr20.png-11.4kB

(2)示例如下:
image_1ckmj91vh174f1qfe2e42kk1i84h.png-4.8kB

查看结果:
image_1ckmja7jbd0vfor13fh1t79nsn4u.png-13.7kB

3.1.2创建唯一性索引(必须唯一,但可为空)

image_1ckml40c4oqt11931oiv1aevv477i.png-32kB
示例如下:
image_1ckmjpeq014o51jr144eagi12a6b.png-5kB

查看结果:
image_1ckmjqjg61uqrc3pbp5r9rp606o.png-11.3kB

3.1.3创建主键索引

image_1ckml74901ek51pom1i9hnoeaec8v.png-43.9kB
若新创表时忘记创建主键,示例如下:
image_1ckmmmn9e1mnf1ije14fc1ec61ih6aj.png-5.1kB

查看结果:
image_1ckmmoh3moda145nkrv26g1g2obd.png-16.3kB

3.2索引的查看

3.2.1索引的查看index的使用

(1)示例如下:
image_1ckmj0mjbq1n2labdo1tvulh52d.png-11.3kB

(2)示例如下:
image_1ckmj1qed1rvsjci10m2k5i1gn22q.png-14.8kB

3.2.2索引的查看keys的使用

(1)示例如下:
image_1ckmj3o274fe1oag1utr1k6314bp44.png-11.7kB

(2)示例如下:
image_1ckmj3bjag2h8ph1n9d19rimuk3n.png-14.8kB

3.3索引的删除

image_1ckmln7001o4q183toc04968sla6.png-65.9kB

已知有以下索引:

image_1ckmn10mh192o5kl17pt83c18hmck.png-16.5kB

(1)示例如下:
image_1ckmn1nf2u9p1qq618ur12mk1j1bd1.png-4.3kB

查看结果:
image_1ckmn3ja1iidk9kc69ll1d9hde.png-16.6kB

(2)示例如下:
image_1ckmn63hmgfj1v9e1dil8krsm3dr.png-4.5kB

查看结果:
image_1ckmn88uu1s21mtr1l6n1ga215qng8.png-13.6kB

(3)示例如下:
image_1ckmnb217kik1egb2b0ujf1u25gl.png-4.8kB

查看结果:
image_1ckmnbt5k1mjd5iv1kna18li57gh2.png-3.4kB

4.事务ACID的特点

image_1ckmni95p1vgv6l11f8o1lt2rgfhf.png-50.3kB

  • 原子性:事务是一个完整的操作,事务的各元素是不可分的(原子的),事务的所有元素必须作为一个整体提交或回滚。如果事务中的任何元素失败,则整个事务将失败。
  • 一致性:当事务完成时,数据必须处于一致状态:在事务开始之前,数据库汇总存储的数据处于一致状态;在正在进行的事务中,数据可能处于不一致的状态;当事务完成时,数据必须再次回到已知的一致状态。
  • 隔离性:对数据进行修改的所有并发事务是彼此隔离的,这表明事务必须是独立的,它不应该以任何方式依赖于或影响其他事务。修改数据的事务可以在另一个使用相同数据的事务开始之前访问这些数据,或者在另一个使用相同数据的事务结束之后访问这些数据。
  • 持久性:事务的持久性指不管系统是否发生了故障,事务处理的结果都是永久的。一旦事务被提交,事务的效果会被永久地保留在数据库中。

5.事务的操作

5.1命令简介

image_1ckmp9g4a12ur8h3os41p0r1hr7i9.png-8.5kB

image_1ckmpartc4i6eljtiu1pnnbp0im.png-12kB

image_1ckmpdgu3h0n1g941q1i1r8boo9j3.png-25kB

5.2实际演练(为实验效果,开启两个窗口,实为一台虚拟机)

已知表内信息数据如下

image_1ckmpr5alk7h1kdt6r6f7qr7jg.png-8.2kB

(1)窗口①示例如下:
image_1ckmq1ptu1k3o1nm41jvv17a91h4mjt.png-3.4kB

image_1ckmq4dv75tjkpe17lmks39j2ka.png-5.8kB

image_1ckmq65ik9e4hcj8cekh8hjbkn.png-9.2kB

窗口②查看结果:
image_1ckmqatck1ub2m3scf41o2fk0ol4.png-13kB

窗口①示例如下:
image_1ckmqge06o3o1gdft1916qk73rlh.png-3.7kB

窗口②查看结果:
image_1ckmqjm5t176n19r3s0t13nhs35lu.png-11.6kB

(2)窗口①示例如下:
image_1ckmqs1vf1b8d1tdg9t9111m17gtmb.png-3.5kB

image_1ckmqsucr1ga87fifp9oer1vrpmo.png-5.9kB

image_1ckmqtc7fuu8p71hpaaud1st9n5.png-9.4kB

窗口②查看结果:
image_1ckmqu4iv2fpvsv16bt12pvvtpo2.png-13.5kB

窗口①示例如下:
image_1ckmqvakc1vfsne8gegg9dobhof.png-3.6kB

窗口②查看结果:
image_1ckmqvnn0pm1qq2fl135g196ros.png-12kB

5.3禁止自动提交

默认情况下MySQL的事务是自动提交的,当sql语句提交时事务便自动提交。

(1)窗口①示例如下(关闭自动提交):

image_1ckmroeg01v901vnk1k791g221oekp9.png-13.3kB

image_1ckmrqest8oh1kem1vg6ils1ilbpm.png-5.9kB

image_1ckmrrom0dun1v6j1ajjer6165pq3.png-9.4kB

窗口②查看结果:
image_1ckmrsh5at4v1gj61kimo6shmkqg.png-13.5kB

(2)窗口①示例如下(开启自动提交):
image_1ckms0v131qjv1ra31itq1rcv4mcqt.png-10.3kB

image_1ckms2m0j1pupp231r80e0393urq.png-9.4kB

窗口②查看结果:
image_1ckms2t25ftia3vcgn8bk9d0sn.png-9.4kB