目录
##SQL优化(面试必问):替 返索件 多查 //##数据库优化的方案
###检查SQL的执行是否高效/效率/是否用了索引/查看索引的扫描次数/解释说明SQL的执行计划/性能(Explain Select)–面试问的多次
##事务隔离级别(面试必问,要会读英文)–Spring中的隔离级别–面试
#数据库分类
分类(主要观察数据之间的关系): 关系型数据库MySQL
非关系型数据库Redis
#数据库字段约束 面试:
非默主唯外检
非空约束:如果为一个列/字段添加了非空约束,那么这个列里写的/insert into值就不能为空,但可以重复
默认约束:给字段设置默认值而不是默认的null,使用default
主键约束:如果为一个列/字段添加了主键约束,那么这个列就是主键
唯一约束:如果为一个列/字段添加了唯一约束,那么这个列里写的/insert into值就即不能重复,但可以为空。
外键约束:使用明确的一段代码,表示两个表之间的关系 一个表可以有多个外键
检查约束:可以用什么来确保表格里的字段只接受特定要求的值
#面试问一个表里多少个字段合适:
小点的十几个,大点的二三十个
#SQL语句分类
分类:(面试问什么是DML,和DDL有什么区别?)
1.DML数据操作语言
2.DDL数据库定义语言
3.DCL数据库控制语言
4.DQL数据库查询语言
#sql语句函数关键字
基础函数_注释_条件查询_聚合函数_分组_单表查询_男人应该冷静,沸腾的水只会蒸发的博客-CSDN博客
1.分页
MySQL的分页关键词limit
SELECT * FROM student3 LIMIT 2,6; 查询学生表中数据,从第三条开始显示,显示6条
2.分组
MySQL的分组关键字:group by
SELECT sex, count(*) FROM student3 GROUP BY sex;
3. 去重
去重关键字:distinct
select DISTINCT NAME FROM student3;
##聚合函数(必会)
1.聚合函数
SQL中提供的聚合函数可以用来统计、求和、求最值等等。
2.分类
COUNT:统计行数量
SUM:获取单个列的合计值
AVG:计算某个列的平均值
MAX:计算列的最大值
MIN:计算列的最小值
##sql分组怎么实现–面试
##分页查询关键字
#SQL Select 语句完整的执行顺序: (必会)
FROM 从哪个数据表检索数据
WHERE 过滤表中数据的条件
GROUP BY 如何将上面过滤出的数据分组算结果
使用聚合函数进行计算
HAVING
ORDER BY 对结果集进行排序
limit… 分页,展示几条数据
#数据库增删改查语句
二阶段数据库_男人应该冷静,沸腾的水只会蒸发的博客-CSDN博客
#数据库多表联查 –见桌面
https://download.csdn.net/download/fhefhffg/85017667
笛卡尔积
1.用逗号隔开多张表 2.表关系where 3.业务条件and
连接查询
1.用join隔开多张表 2.表关系on 3.业务条件where
#数据库中的优化(面试必问)
##SQL优化(面试必问):替 返索件 多查 插 //##数据库优化的方案
一、插入数据时:1.使用varchar代替char 2.用具体字段代替* 2.使用默认值代替null 3.尽量使用数值替代字符串类型
4.批量处理:批量插入,批量删除,最好使用分页
二、查询时
+单表查询:1.用具体字段名称代替*/(查询SQL尽量不要使用select *)
2.查询尽量避免返回大量数据:
3. where后面的条件里:1)尽量用and不用or 2)尽量用=不用!= 、<> , 条件越精确越好 ,
3)避免在where中对字段进行表达式操作 4)优化like语句-最好确定最前面开始查询
4.索引:1)索引不宜太多,一般5个以内 2)索引不适合建在有大量重复数据的字段上
3)给经常用的字段加索引,每个表的name字段都要加索引,因为经常要用
4)复合索引要遵循最左特性不然就失效了
5)索引表及时删掉多余的索引
6)使用explain分析你SQL执行计划 +查看慢查询日志,找出执行时间长的SQL进行优化
5、尽量避免使用order by
+多表查询
1.不要有超过5个以上的表连接
2.inner join 、left join、right join,优先使用inner join
#数据库中 慢SQL
##判别系统中遇到了SQL慢查询问题:
2,IO负载高导致服务器卡住。这个一般和全表查询没索引有关系。
##SQL慢查询的解决 面试 索引 日志 负载
1、查询语句和索引都正常但是还是慢。如果表面上索引正常,但是查询慢,需要看看索引是否生效。
2、 打开慢日志查询,确定是否有SQL语句占用了过多资源,如果是,在不改变业务原意的前提下,对insert、group by、order by、join等 可以对SQL语句进行优化。
2. 考虑调整MySQL的系统参数//: innodb_buffer_pool_size、innodb_log_file_size、table_cache等。
3、 确定是否是因为高并发引起行锁的超时问题。查询语句中有很多计算逻辑,导致数据库cpu负载。如果数据量过大,需要考虑进一步的分库分表,或者利用分页查询减少返回的数据量
#数据库三范式(必会)–面试
原唯值
范式:数据库的专业术语,用来设计表要遵循的原则,范式NF
第一范式:1NF 原子性,列或者字段不能再分
第二范式:2NF 唯一性,一张表只说一件事
第三范式:3NF 直接性,数据不能存在传递关系,即每个属性都跟主键有直接关系,而不是间接关系。
范式化设计:优缺点: 优点: 可以尽量得减少数据冗余,使得更新快,体积小 缺点:对于查询需要多个表进行关联,减少写得效率增加读得效率,更难进行索引 优化
反范式化: 优点:可以减少表得关联,可以更好得进行索引优化
缺点:数据冗余以及数据异常,数据得修改需要更多的成本
#数据库 四种存储引擎 (高薪
原创文章,作者:优速盾-小U,如若转载,请注明出处:https://www.cdnb.net/bbs/archives/31644