怎么执行一条select语句
1.连接器 接收连接-》管理连接-》校验用户信息
2.查询缓存 kv存储,命中直接返回,否则继续执行 8.0已经删除
3.分析器 词法句法分析生成语法树
4.优化器 指定执行计划,选择查询成本最小的计划
5.执行器 根据执行计划,从存储引擎获取数据,并返回客户端
数据库设计三范式(目的:减少空间占用)
范式一:确保每列保持原子性:数据库表中的所有字段都是不可分解的原子值。
范式二:确保表中的每列都和主键相关,而不能只与主键的某一部分相关。
范式三:确保每列都和主键直接相关,而不是间接相关,减少数据冗余。
反范式(允许冗余存储,为了提升查询效率)
范式可以避免数据冗余,减少数据库的空间,减小维护数据完整性的麻烦;但是采用数据库范式化设计,可能导致数据库业务涉及的表变多,并且造成更多的联表查询,将导致整个系统的性能降低;因此基于性能考虑,可能需要进行反范式设计;
五大约束
not null非空约束
auto_increment自增约束
unique唯一约束
primary主键约束 非空、唯一
foreign外键约束
删除数据
drop 快 删除整张表结构和表数据,包括索引、约束、触发器等 不能进行回滚
truncate 较快 删除表数据,其他保留 不能回滚 以页为单位进行删除
delete 慢 删除部分或全部数据,其他保留 回滚 逐行删除