Mysql简介
Mysql 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
数据库的三范式
第一范式:强调的是列的原子性,即数据库表中的每一列都是不可分割的原子数据项。
第二范式:要求实体的属性完全依赖关键字。不能仅依赖部分。
第三范式:任何非主属性不依赖其他非主属性。
Mysql的存储引擎
Mysql支持多种存储引擎,比如InnoDB、MyLSAM,Memory、Archive等。但是一般来说Mysql主要用innoDB,也是默认的存储引擎。
这里介绍常见的两种存储引擎InnoDB和MyLSAM的区别
InnoDB支持事务 | MylSAM不支持事务 |
InnoDB支持外键 | MylSAM不支持外键 |
InnoDB是聚集索引 | MylSAM是非聚集索引 |
InnoDB不支持全文索引 | MylSAM支持查询效率高 |
InnoDB不保存标的具体行数 | MylSAM用一个变量保存了整个表的行数 |
这里引入介绍下索引相关知识:
什么是索引
索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它包含着对数据库表里所有记录用的引用指针。
索引(index)就像一本书的目录一样,包含这书里的关键信息。对于每一个部分都能精准指向它所在的地址。
索引的建立,对于数据库的高效运行有很大的提升,能够大大提升检索速度。使用优化隐藏器,提高系统的西能。
缺点:时间上,创建和维护需要耗费时间,具体地对表中数据进行增加删除修改时,也需要动态的维护,会降低增/改/删的效率
空间上,占有一定的内存。
不过比较得来索引的创建利大于弊。
MySQL的索引类型
1、从存储结构上划分:BTree索引、Hash索引等。
2、从应用层次来划分:普通索引,唯一索引,复合索引。
3、从数据物理顺序和键值的逻辑顺序:聚集索引,非聚集索引。
创建索引的方式
1、在执行CREATE TABLE时创建索引。
例:CREATE TABLE user_index
2、使用ALTER TABLE命令去增加索引(创建普通索引、UNIQUE索引或PRIMARY索引)
例:ALTER TABLE table_name ADD INDEX index_name(,,)
3.使用CREATE INDEX命令创建
CREARE INDEX index_name ON table_name ()
下面介绍下数据库的事务
什么是数据库的事务
事务是一个不可分割的数据库操作序列,也是数据库并发控制的基本单位,其执行的结果必须数据库从一致性状态变到另一种一致性状态。事务是逻辑上的一组操作,要么都执行,要么都不执行。
其具有以下四个特征:
1.原子性。事务是数据库的逻辑工作单位,事务中包含各操作要么都做,要么都不做。
2.一致性。事务执行的结果必须是使数据库从一个一致性状态变成另一个状态。
3.隔离性。一个事务不能被其他事务干扰。
4.持续性。也称为永久性,指一个事务一旦提交,他对数据库改变就是永久性的。
什么是Mysql的binlog?
binlog记录所有数据库表结构的变更(create、alter)以及dml的(INSERT,UPDATE,DELETE)二进制日志。binlog不会记录SELETE和SHOW的操作,因为其对数据库数据没有修改。
以事件形式记录,还包含语句所消耗的时间。是事务安全型的主要目的是复制和恢复。