数据库总结
1.常见的三种引擎
InnoDB:支持事务处理,支持外键,(支持行级锁和表级锁),有64TB的存储限制。若需要对事务的完整性要求比较高,需要实现并发控制,则选择InnoDB
MyISAM:不支持事务和外键(仅支持表级锁),插入速度快,空间和内存的使用比较低,若表主要使用于数据的插入与读取,则选择MyISAM
MEMORY:不支持事务和外键,所有的数据都在内存中,数据处理速度很快,但安全性不高,若表需要很快的读写速度,则需要选择MEMORY。
2.数据库的三大范式
- 第一范式(1NF):保证每一列不可再分。
- 第二范式(2NF):在满足1NF的条件下,多个主键时,每一列都和主键相关,而不能和部分主键相关。
- 第三范式(3NF):在满足1NF和2NF的条件下,确保表中的每一列数据都和主键直接相关,不能间接相关。
规范性 和 性能不可兼得
3.char、Varchar、text的区别
- char:长度固定,最大长度255;
- varchar:可变长度,最大长度65535
- text:不设置长度,存储长度比较大的字段
4.drop、delete的区别
- drop:从数据库中删除表,所有的数据行、索引、权限、触发器都会被删除,不能回滚。
- delete:删除表的全部或一部分数据行,每删除一行,都会在事务日志中进行记录,执行delete后用户需要提交(commit)或回滚(rollback)来执行删除或撤消删除。
5.左外连接、右外连接和内连
- 内联:(select * from 左表 join 右表 where …;)
结果集相当于取交集,左表和右表共有的属性 - 左外连接:(select * from 左表 left join 右表 where…;)
结果集以左表为准,包含左表的全部记录和右表符合连接条件的记录,如果左表在右表中没有匹配,则对应的列为null。 - 右外连接:(select * from 左表 right join 右表 where…;)
结果集以右表为准,包含右表的全部记录和左表符合连接条件的记录,如果右表在左表中没有匹配,则对应的列为null。
索引
索引
- 索引是对数据库表中的数据进行排序的数据结构,以协助快速查询、更新数据库表中的数据。
索引的分类
- 主键索引:一个表中,最多有一个主键索引,主键索引的列不可重复也不能为null,效率较高。
- 唯一索引:一个表中,可以有多个唯一索引,唯一索引的列不可重复但可以为null,效率较高。
- 普通索引:一个表中,可有多个普通索引,普通索引的列可以重复值。
- 全文索引:文章字段或有大量文字的字段进行检索,可使用全文索引机制(存储引擎必须是MyISAM)。
索引的优缺点
1. 为什么使用索引(优点)
- 提高数据查询效率。
- 通过创建唯一索引,保证数据库表中每一行数据的唯一性。
2.怎么不在所有的列上都添加索引(缺点)
- 当对表中的数据进行增加、删除和修改时,索引需要动态维护,降低了数据的维护速度。
- 索引需要占用一定的物理空间,