数据库系列面试题1.0

一、谈如何解决SQL注入攻击及MyBatis处理方案

1.SQL注入,是指通过字符串拼接的方式构成了一种特殊的查询语句

在这里插入图片描述

2.解决方案

总结一句话:采用预处理对象PreparedStatement

3.延伸在这里插入图片描述

二、谈谈数据库设计的三大范式及反范式

1,数据库的三大范式

第一范式:列不可分
第二范式:要有主键
第三范式:不可存在传递依赖

比如商品表里面关联商品类别表,那么只需要一个关联字段product_type_id即可,其他字段信息可以通过表关联查询即可得到
如果商品表还存在一个商品类别名称字段,如product_type_name,那就属于存在传递依赖的情况,第三范式主要是从空间的角度来考虑,避免产生冗余信息,浪费磁盘空间。

2,反范式设计:(第三范式)

为什么会有反范式设计?
原因一:提高查询效率(读多写少)
比如上述的描述中,显示商品信息时,经常需要伴随商品类别信息的展示,
所以这个时候,为了提高查询效率,可以通过冗余一个商品名称字段,这个可以将原先的表关联查询转换为单表查询

原因二:保存历史快照信息
比如订单表,里面需要包含收货人的各项信息,如姓名,电话,地址等等,这些都属于历史快照,需要冗余保存起来,
不能通过保存用户地址ID去关联查询,因为用户的收货人信息可能会在后期发生变更。

三、必会的五大聚合函数

AVG() :只适用于数值类型的字段或变量。不包含NULL值
SUM() :只适用于数值类型的字段或变量。不包含NULL值
MAX() :适用于数值类型、字符串类型、日期时间类型的字段(或变量)不包含NULL值
MIN() :适用于数值类型、字符串类型、日期时间类型的字段(或变量)不包含NULL值
COUNT() :计算指定字段在查询结构中出现的个数(不包含NULL值)

基本语法使用:

select min(age) from t_student

聚合函数经常会结合分组查询,出现在众多的SQL笔试题中,对于众多的SQL笔试题唯有多练

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值