第一范式:每一列必须是不可拆分的最小单元
第二范式:表中所有列必须依赖主键
第三范式:表中每一列和主键是直接相关
是否设置主键,是否设置唯一性约束,默认值,非空约束,外键约束
主键默认非空,且是唯一。只有主键才能设置自增,自增一定是主键。主键不一定自增。Primary key(id)
Inno支持事务,sam不支持。Inno支持行锁,sam支持表锁。
是一种数据结构,可以帮助我们快速的进行数据的查找
列参与了数学运算,like查询,使用in或者not in会全表扫描
不再需要一张表的时候,用drop
想删除部分数据行时候,用delete,并且带上where子句
保留表而删除所有数据的时候用truncate
char的长度是不可变的,而varchar是可变的,char的存取速度比varchar要快,因为其长度固定,方便程序的存储与查找
带where查询,不使用select*,去掉不必要的字段,减少访问数据库次数,字段设置not null,加索引
保证一组数据库操作,要么全部成功,要么全部失败
原子性(成功或失败)
一致性(执行过程,数据库完整性不会被破坏)
独立性(防止交叉执行导致数据不一致)
持久性(修改永久,系统故障也不丢失)
控制事务大小,合理使用索引,让innodb在索引上加锁更准
乐观锁:先修改,保存时判断是否更新过(自己写代码实现)。更新时间戳可以实现
悲观锁:先获取锁,在操作修改。Sql后加for update
聚簇索引和非聚簇索引的区别是 索引和数据是否放在一起。Innodb聚簇sam非聚簇