数据库中的一些简单小问题
1.常见SQL语句的执行顺序是怎样?
(from,on,join,where,group by,having,select,order by,limit)
2.MySQL服务端的常见组件有哪些?
连接器,解析器,优化器,执行器
3.MySQL中的InnoDB和MyISAM存储引擎的区别?
事务:InnoDB支持事务,MyISAM不支持事务
外键:InnoDB支持外键,MyISAM不支持外键
索引:InnoDB为聚集索引,MyISAM为非聚集索引
锁粒度:InnoDB为行级锁,MyISAM为表级锁
4.你知道MySQL中常用的日志文件有哪些?
bin log日志文件:主要用来进行数据同步、数据恢复
redo log日志文件:重做日志,故障恢复,保证事务的持久性
undo log日志文件:记录sql更新的反向操作,用于保证事务的原子性和一致性
5.数据库设计时要考虑哪些问题?
名字:见名知意
字符集编码:尽量与数据库的字符集编码保持一致
字段名:见名知意,多个单词之间要用下划线分隔
字段类型:尽量选择简单数据类型,尽量选择最小数据类型,基于Decimal存储小数,避免使用text和blog类型
字段约束:主键约束(非空且唯一)
非空约束(MySQL在定义索引值为NULL的列时,需要额外的存储空间。另外,在进行比较和计算时,MySQL 要对NULL值做特别的处理,使用效率较低)
唯一约束(值唯一)
检查约束(这个约束挑版本,不同版本中可能规则不同,设置是无效)
外键约束
字段默认值(建议允许为空的字段给个默认值,这样可以提高基于这个字段的查询效率)
注释
索引
宽表/窄表
6.设计表时常用的数据类型有哪些?
字符型,数值型,日期型,二进制,枚举,set,json
7.如何查看字段数据类型的表示范围?
基于help指令,例如help'datetime'
8.字段设计时常用的约束有哪些?
主键约束、非空约束、唯一约束、外键约束、检查约束
9.字段类型在应用有什么原则吗?
简单、最小数据类型、小数使用decimal、避免text和blob类型
10.如何理解表设计时的三大范式?
范式是一种设计规范,一种关系模式,可以对表的设计起到一个指导性作用
1)第一范式(1NF):字段名不可再分(原子性)。例如姓名可再分为姓和名,这属于可再分
2)第二范式(2NF):在满足1NF的基础上,确保数据库中的每个非主键列完全依赖于主键
3)第三范式(3NF):在满足2NF的基础上,确保数据库中的每个非主键列都不传递依赖于主键
11.如何理解表设计时的反范式应用?
为了提高查询效率,打破三大范式的设计规则,例如表中添加冗余字段,添加冗余字段的目的就是为了提高查询效率,但是会增加更新操作的成本。
12.查询SQL语句的执行顺序?
select(7)
from (1)
join (3)
on (2)
where(4)
group by(5)
having(6)
order by (8)
limit(9)
浙公网安备 33010602011771号