一个SQL的查询流程是怎样的?
https://www.processon.com/view/link/6374a2f20791290b4b9e0628
一个SQL语句的更新流程是怎样的?
https://www.processon.com/view/link/632da9f65653bb1ab0ea4c00
说说MySQL服务端常用的组件有哪些?
连接管理器(连接管理、权限管理)、解析器(词法解析、语法解析)、优化器(对sql进行基本调优,生成执行计划)、执行器(调用执行引擎执行sql)
常用SQL子句的执行顺序是怎样的?
from,on,join,where,group by ,having,select,order by, limit
Mysql中innodb和myisam存储引擎有什么不同?
数据存储,事务、锁、索引,外键
你了解binlog吗?它的做用是什么?
归档日志,一般用于记录sql的更新逻辑,可以实现数据的备份,数据库节点之间数据的同步。
你了解undolog吗?它的作用是什么?
回滚日志,一般用于记录更新操作的反向sql操作,用于保证事务的原子性,一致性。
你了解redolog吗?它的作用是什么?
重做日志,可以循环使用,一般用于记录sql的物理操作,用于保证事务的持久性,可用于故障恢复。
你设计数据库时要考虑哪些问题?
数据库的名字、数据库的编码、数据库中表的数量、数据库上的基本操作
你设计数据库表时会考虑哪些问题?
表的名字,字段名,字段类型,字段约束,字段默认值,注释,字段个数,设计范式、反范式
说说mysql中常用字段类型有哪些?
字符型(char,varchar,text)、数值型(tinyint,int,bigint,decimal)、日期型(date,datetime,timestamp)、二进制(blog)、其它(enum,set,json)
你在使用数据类型时,有什么规则吗?
使用简单数据类型、最小数据类型、小数用decimal,避免使用text和blog这样的大数据类型。
说说mysql中的六大约束有哪些?
主键约束(primary key),非空约束(not null),默认值约束(default),唯一约束(unique key),检查约束(check),外键约束(foreign key)
说说表设计时的三大范式?
范式是一种设计规范,一种关系模式,可以对表的设计起到一个指导性作用。
1. 第一范式(1NF):描述的是字段名不可再分。例如姓名可再分为姓和名,这属于可再分。
2. 第二范式(2NF): 描述的是不存在非主键字段对主键字段的部分依赖。
3. 第三范式(3NF): 不存在非主键字段对主键字段的传递依赖。
如何理解表设计时的反范式?
范式设计为我们进行表设计提供一些指导性思想,但实际项目中有时为了提高查询
效率,可能会在表中适当的添加一些冗余字段。就类似于将课程名添加到成绩表中,
这样查询成绩表时可以直接查询出课程名,不需要再去关联课程表进行查询了。但
是这种冗余可能会带来更新的复杂读。例如更新课程表的课程名时,还要去更新
成绩表中的课程名。