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)
持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来即使数据库发生故障也不应该对其
有任何影响
8.索引
索引的优缺点
优点:
- 可以大大加快数据的检索速度。
- 通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。
缺点:
- 索引需要占用空间
- 创建索引和维护索引要耗费时间,具体地,当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,会降低增/改/删的执行效率;
索引的分类
索引的使用
添加索引的方法

索引的使用情况
不建议索引的情况

mysql瓶颈
索引调优
mysql索引创建,当遇到条件判断大于小于表示范围的指令时,组合索引后面的会自动失效
双表
三表
索引失效

确认sql语句用哪个索引
delete和truncate的区别
函数
count
md5加密
常用函数

函数与group by

开窗函数
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

ID


select_type
慢查询日志





