MySQL相关知识

1、MySQL新建数据库的字符集与排序规则说明:

字符集:一般使用utf8或utf8mb4
utf8mb4兼容utf8,能比utf8显示更多的字符
http://blog.csdn.net/leelyliu/article/details/52879685(1-126行属于utf8区,126行以下就是utf8mb4的扩充区),什么时候需要存储那些字符,再使用utf8mb4,否则只是浪费空间。
排序规则:一般分为两种,utf8_bin 和 utf8_general_ci
bin是二进制,会区分大小写;
utf8_general_ci 不区分大小写;
在这里插入图片描述
创建数据库的SQL语句:
create database “test_llh” character set “utf8” collate ‘utf8_general_ci’;

1、事务的基本特征(ACID):

事务:是并发控制的基本单位。所谓事务,他是一个操作序列,这个操作要么全部执行,要么都不执行。被视为最小工作单元,不能再分割。
例如,银行转账工作:从一个账号扣款并使另一个账号增款。这两个操作要么都执行,要么都不执行。

  • 原子性(Atomic):一个事务的执行要么全部提交成功,要么全部失败回滚,不可能只执行其中一部分操作。
  • 一致性(Consistency):是指一个事务在执行前和执行后数据库都必须处于一致性状态。(如果事务执行成功,数据库中所有变化正确应用;如果事务出错,数据库中的所有变化自动回滚,回到原始状态)
  • 隔离性(Isolation):一个事务对数据库所做的修改,在最终提交成功之前,对其他事务是不可见的。其他事务看到的仍是该事务未修改前的数据或已经修改成功的数据。
  • 持久性(Durability):即只要事务成功结束,他对数据库所做的修改就会永久保存下来。即使系统崩溃。
2、脏读、不可重复读、幻读
  • 脏读:事务A读取了事务B更新的数据,然后事务B回滚操作,那么事务A读到的就是脏数据;
  • 不可重复读:事务A多次读取同一数据,事务B在事务A多次读取的过程中,对数据做了更新并提交,这样就导致事务A多次读取到的同一数据存在不一致。
  • 幻读:幻读解决了不可重复读的问题,保证了一个事务中,查询的结果都是事务开始时的状态(一致性)
3、事务的隔离级别:
  • 读未提交(Read uncommited):一个事务可以读取另一个未提交事务的数据。(最低级别)
  • 读已提交(Read commited):一个事务要等另一个事务提交后才能读取数据,避免了脏读。
  • 可重复读(Repeatable read):在事务开启前,不再允许修改操作,可避免脏读和不可重复读的发生。
  • 串行(Serializable):最高的事务隔离级别。及所有事务串行化顺序执行。效率低,耗性能。
    MySQL默认隔离级别是 Repeatable read。
4、数据表类型:MyISAM、InnoDB

ISAM(Index Sequential Access Method):索引顺序访问方法
MyISAM(老版本MySQL5.1前的默认存储引擎):成熟、稳定、易于管理、快速读取。不支持事务
InnoDB(MySQL的默认存储引擎):支持事务、外键等特性、数据行锁定。

5、InnoDB存储引擎的4大特性:

插入缓存(insert buffer)、二次写(double write)、自适应哈希索引(ahi)、预读(read ahead)

6、InnoDB引擎的行锁定是基于索引实现的
7、sql语句优化:
  • 避免使用select *,将需要查找的字段列出来;
  • 使用连接(join)来代替子查询;
  • 拆分大的delete或insert语句;
  • 使用limit对查询的结果进行限定;
  • 使用exists代替in是一个好选择;
  • 使用where替换having子句。(因为having要在检索出所有记录之后才对结果进行过滤)
  • 尽量避免在where子句中对字段进行null值判断,可能会导致引擎放弃使用索引而进行全表扫描;
  • 尽量避免在where子句中使用or来连接条件,可能会导致引擎放弃使用索引而进行全表扫描;
  • 尽量避免在where子句中使用!=和<>操作符,可能会导致引擎放弃使用索引而进行全表扫描;
8、MySQL中常用的函数:sum、count、avg、min、max
9、除增删查改外,在MySQL中常用的命令:

explain、describe、show、truncate

10、除增删改查外常用的关键字

distinct、limit、offset、order by、union、union all、between、group by

11、union和union all的区别:

union在表链接后会筛选掉重复的记录,union all 不会;
union会按照字段的顺序进行排序,union all不会;
因为,union all效率上比union快很多;

12、索引的作用及优缺点:

作用:数据库的搜索引擎可以利用索引加速对数据的检索;(不需要查询整本书的内容就可以找到想要的数据(目录))
创建索引允许指定单个列或多个列。
缺点:减慢了数据录入的速度

13、MySQL的主要索引类型:

普通索引:最基本的索引,没有任何限制;
唯一索引:索引列的值必须唯一,但允许有空值;
主键索引:是一种特殊的唯一索引,一个表只能有一个主键,不允许有空值。
组合索引:指多个字段上创建的索引,只有在查询条件中使用了创建索引时的第一个字段,索引才会被使用;
全文索引:主要用来查找文本中的关键字。MySQL支持全文索引而innoDB不支持;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值