目录:
1.什么是索引:
2.索引优缺点:
3.索引分类:
4.为什么使用索引:
5.索引结构:
6.聚簇索引和非聚簇索引:
7.索引的创建:
8.什么时候创建索引:
9.什么时候不用创建索引:
10.索引失效:
11.存储过程:
12.函数:
13.流程控制语句:
14.主键和唯一的区别:
15.事务的创建:
16.视图:
17.mylsam和innodb的区别:
18.sql执行顺序:
19.join相关知识:
20.sql优化:
21.读锁和写锁:
22.常见函数:
23.常见数据类型:
24.ddl
25.dml
26.mvcc:
1.什么是索引:
索引是能快速查找数据的一种数据结构。索引通常以文件的形式存在,储存在磁盘中。
2.索引优缺点:
优点:单值和范围查询效率高,降低了io成本和排序成本。
缺点:操作数据同时也要修改索引,索引操作数据变慢了,索引占用空间。
3.索引分类:
普通索引:仅加速查询
唯一索引:加速查询 + 列值唯一(可以有null)
主键索引:加速查询 + 列值唯一(不可以有null)+ 表中只有一个
联合索引:多列值组成一个索引,专门用于组合搜索,其效率大于索引合并
4.为什么使用索引:
因为mysql查询数据时是一行一行进行查询数据的,每一次查询都会进行一次io操作,io操作消耗资源,所以通常使用索引来优化。
5.索引结构:
B+tree:通过默认使用b+tree这种数据结构。
hash:hash这种结构单值查询非常快,但进行范围查询则失效了。memory引擎默认是hash结构。
6.聚簇索引和非聚簇索引:
聚簇索引:索引和数据是再一起的,通过找到了索引就找到了数据,常见于innodb引擎。
非聚簇索引:索引和数据是分开的,常见于mylsam引擎。
7.索引的创建:
1.create index 索引名 on 表名(列名)
2.创建表时也可以同时创建索引。
8.什么时候创建索引:
主键默认创建索引,频繁查询的字段,排序的字段。
9.什么时候不用创建索引:
字段中数据大量重复,例如state:0\1。数据量小,不是经常查询的字段。
10.索引失效:
1.使用了or.
2.联合索引时顺序不对。
3.使用模糊查询时刚开始不能使用%
4.使用了函数
11.存储过程:
存储过程可以看作一组sql语句的集合。
优点:减少了sql的执行次数,提高了效率,例如正常需要查询3次的sql语句,使用存储过程,则只需要查询一次了。
创建语法:
create procedure 存储过程名 (参数列表: in out inout)
begin
存储过程体
end
调用语法:
call 存储过程名(参数)
12.函数:
函数跟存储过程类似,但存储过程可以返回0-多个值。而函数只能有一个返回值。
创建语法:
create function 函数名
begin
存储过程体
end
13.流程控制语句:
顺序结构:从上到下依次进行。
分支结构:有多条路径执行。
if函数、case
循环结构:循环执行。
while、loop、repeat
14.主键和唯一的区别:
相同点:都不能重复。
不同点:主键不能为空,唯一可以为空。
15.事务的创建:
隐式事务:默认开启的事务,insert、update、delete
显示事务:有明显的开启标志。
语法:开启事务:set autocommint =0
执行sql
结束事务:commit
16.视图:
视图可以看作一张虚拟的表,可以和普通的表一样使用,封装了一条sql语句。
17.mylsam和innodb的区别:
innodb:支持外键,行锁,支持事务,表空间大。
mylsam:不支持外键,表锁,不支持事务,表空间小。
18.sql执行顺序:
from --- on --- where --- group by ---- having ---- select --- order by --- limit
19.join相关知识:
inner join:内连接,查询两张表相同部分。
left join: 左连接,左表全查,关联右表相同的部分。
right join: 右连接,右表全查,关联上左表相同部分。
full outer join: 全连接,查询左右表所有数据。
20.sql优化:
建立索引,尽量减少子查询层数,select 只列出需要查询的字段。
21.读锁和写锁:
读锁:多个读操作之间可以同时进行,互不影响。
写锁:读操作不影响,但当写入时,会阻碍其他的读写操作。
22.常见函数:
1.字符函数:
concat:字符拼接。
length:获取字符长度。
substring:截取字符。
2.数学函数:
abs:绝对值。
round:四舍五入
mod:取余
3.日期函数:
now:当前时间
date_formate:时间转字符
str_to_date:字符转时间
4.流程函数:
if函数、case函数
5.聚合函数\分组函数
avg:平均数
sum:求和
count:条数
min:最小
max:最大
23.常见数据类型:
int、double、float、decimal、char、varchar、text
date:年月日、time:时分秒、datetime:年月日时分秒、timestamp:时间戳
24.ddl
库:
创建库:creat database 库名
删除库:drop database 库名
表:
创建表:create table 表名 (字段名 类型, 字段名 类型)
修改表: alert table 表名 (字段名 类型, 字段名 类型)
删除表: drop table 表名
25.dml
插入:
insert into 表名 字段名 values 值
修改:
update 表名 set 键=值 where
删除:
delete from 表名 where
26.mvcc:
mvcc主要为了提高并发的读写,不用加锁就能让多个事务并发读写。