数据库基础

数据库

SQL优化
  1. 在表中建立索引,优先考虑WHERE,GROUP BY使用到的字段
  2. 尽量避免使用SELECT*,而是采用具体的字段
  3. 尽量避免使用IN、NOT IN、OR,会导致数据库引擎放弃索引而进行全表扫描
  4. 尽量避免在字段开头进行模糊查询
  5. 尽量避免进行NULL值判断
  6. 尽量避免在WHERE条件中等号的左侧进行函数操作
SQL注入

事务

事务相关的两个关键字

**提交事务commit:**标志事务全部成功的结束。

清空事务性活动的日志文件,将数据全部彻底持久化到数据库表中。

**回滚事务rollback:**标志事务全部失败的结束。(只能回滚到上一次的提交点

撤销事务性活动的日志文件以及所有DML操作

存储引擎 MyISAM innoDB区别
5.7版本与大版本区别
事务ACID特性

事务是逻辑上的一组操作同时执行或者不执行。比如A给B一百块钱,这背后的逻辑就是A的余额少了一百块,B的余额多了一百块,两个操作如果没有同时进行,那么就出事了。

A原子性:事务是最小的工作单元。事务在执行过程中发生错误,会被回滚到事务开始前的状态,就像这个事务从来没有执行过一样。

C一致性:在同一个事务当中,所有操作必须同时成功,不会结束在中间某个环节。

I隔离性:操作同一张表时,数据库为每一个用户开启的事务,不能被其他事务的操作所干扰,多个并发事务之间要相互隔离。

D持久性:事务提交,即把“没有保存到硬盘上的数据”保存到硬盘上

事务隔离级别

读取未提交:最低隔离级别,允许读取尚未提交的数据,存在脏读、不可重复读、幻影读

读取已提交:允许读取已经提交的数据,存在不可重复读、幻影读

可重复读:对同一字段的多次读取结果都一致,除非数据是事务本身所修改的,存在幻影读

可串行化:最高隔离级别,完全符合ACID特性,

索引

索引定义,优缺点

索引是在字段上添加的,负责缩小扫描范围,提高查询效率。主键上、unique字段上都会自动添加索引。当数据量庞大,经常出现在where后面,很少进行增删改操作的时候就可以添加索引。

优点是加快数据的检索效率,加速表与表的连接

缺点是索引需要占用物理空间

索引分类

单一索引,复合索引,主键索引(主键上),唯一性索引(具有unique约束)

索引操作

创建索引

CREATE INDEX emp_ename_index ON emp(sal); 在emp表的sal字段上创建名为emp_ename_index索引

删除索引

DROP INDEX emp_ename_index ON emp;

索引失效的情况

模糊匹配以%开头,使用or,复合索引使用右侧的列,where中索引列参与运算或使用函数。

索引使用的数据结构

MySQL索引使⽤的数据结构主要有BTree索引 和 哈希索引

索引特性
主键和唯一索引的区别
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值