MySql:MySql非基础知识

本文探讨了MylSAM和InnoDB两种MySQL存储引擎在事务支持、数据锁定、外键约束、索引类型及空间效率上的区别,并讲解了创建索引的原则和数据库设计中的范式理论。特别关注了索引的分类和合理使用技巧。
摘要由CSDN通过智能技术生成

MylSAM和InnoDB的区别

InnoDB:数据库默认使用
MylSAM:早些年使用

MylSAMInnoDB
事务支持不支持支持
数据行锁不支持支持
外键约束不支持支持
全文索引支持不支持
表空间大小较小较大,约前者2倍
  • MylSAM 节约空间,速度较快
  • InnoDB 安全性高,多表用户操作

索引

MySQL官方对索引的定义为:索性(Index)是帮助MySQL高效获取数据的数据结构。

索引的分类

  • 主键索引(PRIMARY KEY)
    • 唯一的标识,主键不可重复
  • 唯一索引(UNIQUE KEY)
    • 避免重复的列出现,多个列都可以标识为唯一索引
  • 常规索引(KEY/INDEX)
    • 默认的
  • 全文索引(FullText)
    • 在特定的引擎下才有,MyISAM
    • 用于快速定位数据

创建索引规则:

create index id_表名_字段名 on 表名(字段名)

分享sql执行:

explain select * from 表名

建索引原则

  • 索引不是越多越好
  • 不要对经常变动的数据加索引
  • 小数据量不需要加索引
  • 索引一般加在经常用来查询的字段上

三大范式

第一范式
原子性:保证每一列都不可再分。比如家庭信息不能作为一个字段既存姓名又存年龄,正确的做法是拆分成两个字段。

第二范式
前提:满足第一范式。
每张表只描述一件事。比如订单表不能既存商品信息又存订单信息,正确的做法是拆成订单表和订单明细表。

第三范式
前提:满足第一范式和第二范式。
确保数据表中的每一列数据都和主键直接相关,而不能间接相关。

但是
考虑到性能的问题,有时候可以不完全按照三大范式去设计数据库。比如故意给某些表增加一些冗余字段,这样就不用关联查询了。

sql防注入:PreparedStatement

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值