前言
搞开发天天都是数据库数据库的说,也很好理解数据库就是存储数据的库嘛,但是市面上有哪些数据库呢?这里来系统性的学习一下mysql数据库,相信搞代码开发的都不陌生,mysql是一款关系型数据库,什么叫关系型数据库呢,简单理解就是用行和列(表格)来存储数据的。这里介绍一下mysql的索引,存储引擎,以及使用过程中的各种问题
mysql的三范式
首先我们说一下设计表的时候需要注意什么,这里mysql有三范式,是关系数据库设计中的重要原则,用于确保数据结构合理、减少数据冗余和提高数据的一致性,三范式要求数据库设计中的每个表都必须满足以下三个条件:
第一范式:
数据库表中的每一列都是不可分割的原子值,即每一列都不可再分,这意味着列中不能有多个值或者重复的组合值
如:一个订单表中,不应该有一个 "商品" 列存储多个商品的名称,而应该拆分为多个行,每行对应一个商品。
第二范式:
在满足第一范式的基础上,表中的非主键列(即非唯一标识行的列)必须完全依赖于主键,而非依赖于主键的一部分
如:一个订单详情表,如果包含了订单号和商品号作为复合主键,那么任何关于商品的信息(如商品名称、价格等)都应该依赖于商品号这个完整的主键,而非一部分只依赖订单号
第三范式:
在满足第二范式的基础上,表中的非主键列之间不能存在传递依赖关系,
换句话说:如果一个非主键列依赖于另一个非主键列,那么应该将其抽取出来成为一个新的表,使每个非主键列只依赖于主键
包含员工信息的表,如果存在一个列 "
部门地址
" 依赖于 "部门名称
"而不直是接依赖于主键(例如部门编号),那么最好将 "部门地址
" 作为独立的表,通过部门名称关联到主表
通过遵循三范式,可以帮助设计出结构良好、高效的数据库模型,提高数据存储和管理的效率,减少数据冗余和更新异常的发生。
mysql的索引
什么是索引呢,就是一种数据库中用来加快数据检索速度的一种数据结构,它类似于书籍的目录,通过提供一种快速访问数据的方式,帮助数据库系统在执行查询时能够迅速定位到需要的数据行,而不是每次都从头开始遍历整个数据表。她虽然能大大的加快数据的查询,然而索引也并非没有成本。索引会占用额外的存储空间,并且在数据更新时可能会影响性能,因为更新操作不仅要更新表中的数据,还要更新索引。因此,在设计数据库时,需要权衡索引的使用。那么索引有哪些呢:
主键索引
主键索引数据列不允许重复,且不允许为空(NULL),一个表里只能有一个主键索引,是一种特殊的唯一索引
ALTER TABLE tableName ADD PRIMARY KEY (column)
唯一索引
索引数据列必须是唯一的,但是允许空值(NULL)但确定是唯一的NULL
ALTER TABLE tableName ADD UNIQUE (column)
普通索引
普通索引是mysql使用中基本的索引类型,索引列允许重复,允许有空值(NULL)
ALTER TABLE tableName INDEX indexName (cloumn)
全文索引
为了快速检索大文本数据,字段长度比较大时,普通索引“like”查询效率慢就可以使用全文索引,它是基