MySql入门篇

Posted 小布丁value

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySql入门篇相关的知识,希望对你有一定的参考价值。

索引

定义:排好序的快速查找的数据结构

官方给出的定义:
除了维护数据本身外,mysql还提供了一种维护某种排好序的查找特点算法的数据结构,这种数据结构以某种特定的引用指向数据,这种数据结构就是索引。
优点:提高查询效率, 缺点:降低cpu利用率

索引分类

普通索引:没有限制条件,对任何的类型的字段都可以添加普通索引
唯一性索引:使用unique修饰的字段,值是不能重复的,该字段添加索引是唯一性索引 主键索引:使用primary
key修饰的字段会自动创建索引 单列索引:在单个属性上创建的索引 多列索引:联合索引:在多个属性上创建的索引
全文索引:使用fulltext参数设置的是全文索引,只支持char\\varchar和text类型字段上,常使用在数据量较大的字符串类型上,方便提高查询效率
(myisam 存储引擎支持)

索引SQL

在创建表时创建索引

create table table_name(
属性名1 类型[完整性约束],
属性名2 类型[完整性约束],
。。。
属性名n 类型[完整性约束],
[unique|fulltext] index|key [别名](属性名1[长度][ASC|DESC)
);

UNIQUE是可选参数,表示索引为唯一性索引; FULLTEXT是可选参数,表示索引为全文索引;
INDEX和KEY参数用来指定字段为索引的,两者选择其中之一就可以了,作用是一样的; "别名"是可选参数,用来给创建的索引取的新名称;
"属性1"参数指定索引对应的字段的名称,该字段必须为前面定义好的字段; "长度"是可选参数,其指索引的长度,必须是字符串类型才可以使用;
"ASC"和"DESC"都是可选参数,"ASC"参数表示升序排列,"DESC"参数表示降序排列。

详细用法可查看
https://www.cnblogs.com/jiangxiaobo/p/6278136.html

在以创建的表上添加索引

a.通过create语法创建

create [unique|fulltext] index 索引名称 on  表名(属性)

create unique index idx_id_name(id,name);

b.通过alter语法创建

alter table 表名 add[unique|fulltext] index 索引名(属性)
alter table tulun add index idx_name_1 (name);

删除索引


drop index idx_name_1 on tulun;

索引的执行过程

注意:研究索引的执行过程使用explain查看SQL的执行计划 explain的使用是直接在查询SQL前添加该关键字即可

分析字段:主要是:
possible_keys表示SQL执行可能命中的索引,
key属性表示在执行过程中实际使用的索引名称,
rows:表示查询操作影响表中数据的行数

给定需求:对student表中查询姓名为’GYSX’的用户信息
在Sname不添加索引时,查询操作的执行计划

在Sname未添加索引时,在执行过程中没有使用索引,查询时是全表扫描(rows=14),当数据库表数据量特别大时,这种查询效率是比较低的
添加索引:idx_name

在分析SQL执行计划:

’ 添加索引后,通过explain分析,执行过程中命中了idx_name的索引,执行过程只影响了一行数据,在大数据量查询是使用索引的效率有大的提高’

索引如何做到提高查询效率的??(底层实现b树b+树)

事务

事务的定义

一个事务是有一条或者多条对数据库操作的SQL语句所组成的一个不可分割的整体,
事务要么全部执行完成,要么全部不执行

事务的特征(ACID)

原子性(Atomic)
事务是一个不可分割的整体,即对数据的修改要么全部执行,要么全不执行,不存在部分事务执行完成

一致性(Consistency)
一个事务执行前和执行后,数据库的数据必须保持一致性状态
例如:银行转账:A向B转账,A账户金额减少,B账户的金额增长,整个系统中金额不发生改变

隔离性(Isolation)
当两个或者多个事务并发执行是,为了保证数据的安全性,将一个事务的内部操作与其他的事务的操作隔离开,不被其他的事务所看到。

持久性(Durability)
事务完成之后,对数据库中的数据修改是永久性的,即使数据库出现故障重启,也应该恢复数据

事务的使用

1、查看事务是否自动提交

select @@autocommit

查看MySQL事务是否自动提交,默认是自动提交
1:自动事务提交 0:表示手动事务提交

2、修改是否自动提交

set autocomIt=0

使用set autocomit=0操作,设置事务为手动提交

3、事务操作

3.1、开启事务:begin或者start transaction

begin 和start transaction显式开启一个事务

3.2、事务提交 commit

当事务中所有的SQL执行完成后,通过commit将事务提交到数据库

3.3事务回滚 rollback

在事务执行过程中当有SQL执行失败将事务回滚,回滚到最初状态

另一个窗口查看:

3.5、保存点 savepoint point1(保存点名)

savepoint point1 设置一个保存点为point1的保存点
rollback to point1:事务回滚到保存点1

以上是关于MySql入门篇的主要内容,如果未能解决你的问题,请参考以下文章

MySQL--------入门简介篇

MySQL入门篇

MySql入门篇

PHP代码审计入门-DVWA靶场暴力破解篇

入门MySQL——基础语句篇

推荐net开发cad入门阅读代码片段