1.基础

1.数据存储在数据库的优势
1.数据永久保存(优于保存再内存中)
2.使用sql语句,查询方便效率高(相对于存在文件)
2.SQL是Structured Query Language 结构化查询语言的简称
3.RDBMS全称为 Relational Database Management System,关系数据库管理系统
4.三大范式
第一范式:每个列都不可以再拆分。
第二范式:在第一范式的基础上,非主键列完全依赖于主键,而不能是依赖于主键的一部分。
第三范式:在第二范式的基础上,非主键列只依赖于主键,不依赖于其他非主键。
5.mysql权限表
1.user: 记录允许连接到服务器的用户帐号信息,里面的权限是全局级的。
2.db:记录各个帐号在各个数据库上的操作权限。
3.table_priv权限表:记录数据表级的操作权限。
4.columns_priv权限表:记录数据列级的操作权限。
6.mysqlbinlog的录入方式

  • statement模式,每一条会修改数据的sql都会记录在binlog中。不需要记录每一行的变化,减少了binlog日志量,节约了IO,提高性能。由于sql的执行是有上下文的,因此在保存的时候需要保存相关的信息,同时还有一些使用了函数之类的语句无法被记录复制。
  • row级别,不记录sql语句上下文相关信息,仅保存哪条记录被修改,记录单元为每一行的改动,基本是可以全部记下来但是由于很多操作,会导致大量行的改动(比如alter table),因此这种模式的文件保存的信息太多,日志量太大。
  • mixed,一种折中的方案,普通操作使用statement记录,当无法使用statement的时候使用row。

    7.事务ACID

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

image.png
image.png

8.索引

show index from table;

索引的优缺点

优点:

  • 可以大大加快数据的检索速度。
  • 通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。

缺点:

  • 索引需要占用空间
  • 创建索引和维护索引要耗费时间,具体地,当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,会降低增/改/删的执行效率;

索引的分类

image.png

索引的使用

image.png

添加索引的方法

image.png

索引的使用情况

image.png

不建议索引的情况

image.png

mysql瓶颈

image.png

索引调优

mysql索引创建,当遇到条件判断大于小于表示范围的指令时,组合索引后面的会自动失效
image.png
image.png

双表

image.png

三表

image.png

索引失效

image.png

确认sql语句用哪个索引

image.png

delete和truncate的区别

image.png
image.png

函数

image.png

count

image.png

md5加密

image.png

常用函数

image.png

函数与group by

image.png

开窗函数

over开窗函数:分区加排序,partiton by ‘字段’ order by ‘字段’,不可用group by
row_number() over(partition by ‘a’ order by ‘b’ desc) 结果 1 2 3 4
rank() over(partition by ‘a’ order by ‘b’ desc) 结果 1 2 2 4
dense_rank() over(partition by ‘a’ order by ‘b’ desc) 结果 1 2 2 3

EXPLAIN

image.png

ID

image.png
image.png

select_type

image.png
image.png

慢查询日志

image.png
image.png