系统学习Mysql

前言

搞开发天天都是数据库数据库的说,也很好理解数据库就是存储数据的库嘛,但是市面上有哪些数据库呢?这里来系统性的学习一下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”查询效率慢就可以使用全文索引,它是基

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值