Mysql数据库
它是一个储存和操作数据的仓库,本质上是一个文件系统,对数据的操作就是对文件的操作【IO操作】,是一个用于储存和操作数据的文件系统。
库操作:create database ....
表操作:create table ...
alter table ...
drop table ...
truncate table ...
表数据操作:
DQL:select 查询 不能写* select 字段 form 表名
DML:insert 插入 insert into 表名(字段列表) values (值列表)
update 更新 必须加条件 update 表名 set 字段1 = 值1,... where 条件
delete 删除 必须加条件 delete form 表名 where 条件
储存引擎:InnoDB 和 MyISAM
InnoDB:默认的存储引擎,支持事务,支持外键,天生支持行锁,手动支持表锁,使用聚簇(集)索引:索引与原数据在同一个文件中——表名.ibd,只有主键索引是聚簇索引,其他索引是非聚簇索引。
MyISAM:不支持事务,不支持外键,不支持行锁,只支持表锁,,使用非聚簇索引:索引跟数据不在一个文件中——表名.MYD 存放数据 表名.MYI存储索引。
InnoDB 和 MyISAM 的区别?
InnoDB 支持事务,支持外键,天生支持行锁,手动支持表锁,索引和原数据在同一个文件中。
MyISAM 不支持事务,不支持外键,不支持行锁,只支持表锁,索引和原数据不在一个文件中。
索引:是一种排好序,能够提升查询速率的数据结构。
优点:提高数据的查询的效率,减低数据库IO操作。
通过索引对数据进行排序,降低数据排序成本,降低CPU消耗。
缺点:索引会占用存储空间。
索引提高了查询效率,但是会降低insert、update、delete的效率。
索引的底层采用B+树,为什么不用hash,二叉树、红黑树?
二叉树:当我们向二叉查找树保存数据时,是按照从大到小(或从小到大)的顺序保存的,此时就会形成一个单向链表,搜索性能会打折扣。
红黑树:是一种自平衡的二叉查找树。
hash:底层用和红黑树。
hash只支持等值查询,不支持范围查询。
B树:索引:8B 行数据:1K 总共:1024B 第一层:15数据 第二层:1515数据 第三层:151515数据 以此类推 当存大量数据时,会导致树的深度越来越高,走的路径越来越长,查询效率越来越慢。
B+树:索引:8B 指针:4B 总共:1024B 第一层:1170 第二层:11701170 第三层:如果存储的时叶子节点 1170117015=2000W
为什么用B+树:非叶子节点和叶子节点存储的数据不一样,可以使用尽量深度低的树存储大量的数据,树的深度越低,查询的次数就越少,性能就越高。
叶子节点是一个双向链表,支持范围查询,也能够提升访问效率。

浙公网安备 33010602011771号