mysql理论知识学习

1.存储引擎

(1)mysql默认存储引擎是InnoDB,字符集UTF-8,我们建表的时候可以指定存储引擎,也可以指定字符集
(2)mysql有多种存储引擎,不同的存储引擎有不同的存储方式,每个存储引擎有自己的优缺点,选择最合适的存储引擎。
(3)mysql> show engines \G mysql8.0存储引擎有9个,这里主要说三个常见存储引擎。

*************************** 1. row ***************************
Engine: MEMORY
Support: YES
Comment: Hash based, stored in memory, useful for temporary tables
Transactions: NO
XA: NO
Savepoints: NO
*************** 6. row ***************************
Engine: MyISAM
Support: YES
Comment: MyISAM storage engine
Transactions: NO
XA: NO
Savepoints: NO
*************************** 7. row ***************************
Engine: InnoDB
Support: DEFAULT
Comment: Supports transactions, row-level locking, and foreign keys
Transactions: YES
XA: YES
Savepoints: YES

(4)Engine: MyISAM
  • 不支持事务
  • mysql最常用的存储引擎,但不是默认的
  • 三个文件保存一张表,表结构文件,表数据文件,表索引文件
  • 优点:可被转换为压缩,只读表节省空间,提高检索效率
(5)InnoDB
  • 支持事务,行级锁,外键等。这种存储引擎最安全
  • mysql服务器崩溃后,自动回复机制
  • 级联删除,更新。
(6)MEMORY
  • 不支持事务
  • 数据容易丢失,数据和索引都存储在内存当中
  • 查询速度最快

2.事务

(1)什么是事务?

一个事务是一个完整的业务逻辑单元,不可再分。要么都成功要么都失败,不能一个成功一个失败,例如银行转账

(2)insert,delete,update和事务相关的语句。
(3)事务的存在是为了保证数据的完整性和安全性
(4)假设业务只使用了1条DML语句,还需要事务吗?

不需要。但是实际情况中,通常一个事儿需要多条DML语句共同完成。

(5)事务的特性

ACID

  • A:原子性:事务是最小的工作单元,不可再分
  • C:一致性:事务必须保证多条DML语句同时成功或者失败
  • I: 隔离性:事务A与事务B之间具有隔离
  • D:持久性:最终数据必须持久到硬盘文件中,事务才算成功结束。

3.索引

(1)什么是索引?有什么用

1.索引就相当于一本书的目录,通过目录可以快速查找对应的资源
2.在数据库方面,查询一张表有两种检索方式

  • 全表扫描
  • 根据索引检索
    3.索引为什么能够提高检索效率呢?
    缩小了扫描的范围
    4.索引虽然可以提高检索效率,但不能随意的添加索引,因为索引是数据库中的对象,需要数据库不断的维护。
    比如:表中的数据经常的被修改,索引就需要重新排序,是由维护成本的。
(2)怎么创建索引对象?

create index 索引名 on 表名(字段名);

(3)什么时候考虑给字段添加索引?
  • 数据量庞大
  • 该字段很少的DML操作
  • 经常性的根据某个字段查询
(4)主键和具有unique约束的字段自动添加索引
(5)实现原理 B+Tree

4.数据库设计三范式

设计表的依据,按照这个三范式设计的表不会出现数据冗余

第一范式:任何一张表都应该有主键,并且每个字段原子性不可再分
第二范式:所有非主键字段必须完全依赖与主键(复合主键,不满足)
多对多三张表,关系表两外键
在这里插入图片描述

第三范式 所有非主键字段直接依赖主键,不能产生传替依赖
一对多,两张表,多的表加外键

©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页