更新时间:2023-01-28 15:51:37 来源:极悦 浏览934次
互联网产品必然是需要有架构的,架构包含接入层、储蓄层、逻辑处理等等,其中存储层承载着数据落地和持久化的任务,同时给逻辑处理层提供数据查询功能支持。而一提到储蓄层必然就要说数据库了,对于数据库的掌握也是软件工程师面试时必考的知识点。
1.简单描述mysql中, 索引、主键、唯一索引、联合索引的区别,对数据库的性能有什么影响(从读写两方面)
2. sql注入漏洞产生的原因,如何防止?
程序开发过程中没有规范书写sql语句,没有对特殊字符进行过滤都会导致sql注入的风险
使用orm可以有效的防止sql注入,sql语句书写尽量不要省略双引号和单引号,过滤掉关键词select update delete insert *等
3. 对于关系型数据库而言,索引是相当重要的概念,请回答索引相关的几个问题
索引的目的是什么?
索引对数据库系统的负面影响是什么?
创建索引和维护索引也需要耗费时间,这个时间随着数据量的增加而增大,索引需要占用物理空间,
不光是表需要占据数据空间,每个索引也需要占用物理空间,对表进行增、删、改的时候索引也需要动态维护,
这就降低了数据的维护速
为数据表建立索引的原则有哪些?
在最频繁使用的,用以缩小查询范围的字段上建立索引
在频繁使用的需要排序的字段上建立索引
什么情况下不宜建立索引?
对于查询中很少设计的列以及重复值很多的列,不宜设计索引
对于一些特护的类型不宜建立索引,比如text类型
为什么重复值很多的列不宜设计索引?
因为如果重复值特别多,比如性别列只有男和女,当我们为性别列建立了索引的话,
辅助索引每次查询男或女都会查询出一半左右的主键值,然后再拿着这一半的主键值去走聚簇索引(主索引),反而比全表扫描性能还低,
这种情况下就不能建立索引
4. 解释mysql外连接、内连接、与自连接的区别?
交叉连接:交叉连接又叫笛卡尔积表,它是指不使用任何条件,将一个表中的所有记录与另外一张表中的所有记录一一匹配
内连接:根据条件,只筛选两个表中都有的记录
外连接:分为左外连接、右外连接、全外连接
左外连接:左表为主表,左表中的记录全部显示,右表中所有匹配的记录显示,不匹配的记录显示为NULL
右外连接:与左相反
全外连接:mysql目前还不支持全外连接,但是可以使用union合并左外+右外=全外
5. mysql中的事务回滚机制概述
事务是用户定义的一个数据库操作序列,这些操作要么都做完,要么都不做,
事务回滚是将一个事务中对数据库的更新操作撤销,事务回滚需要通过InnoDB中的回滚日志undo log来实现
6. sql语言包括哪几部分? 每部分都有哪些操作关键字?
数据定义语言DDL:create/alter/drop table, create/drop index
数据操作语言DML: select insert update delete
数据控制语言DCL: grant revoke
数据查询语言DQL: select
7. 完整性约束包括哪些?
数据的完整性是指数据的精确性和可靠性
与表有关的约束,包括列约束:not null非空约束,primary key主键约束,foreign key外键约束, unique唯一约束等
8. 什么是锁?
加锁是实现数据库并发控制的非常重要的技术,分为读锁和写锁,当一个事务获取了读锁,
其它事务就只能获取读锁,不能获取写锁,
当一个事务优先获取了写锁,其它事务既不能获取读锁也不能获取写锁
但是mysql中又分为当前读和快照度,上面说的是当前读的情形,快照读的话不影响其它事务获取写锁
基本锁类型包括行级锁和表级所,InnoDB是行级锁,MyISAM是表级锁
9. 什么叫视图?游标是什么?
视图是一种虚拟的表,具有和物理表相同的功能,可以对视图进行增删改查操作,视图由一个或多个表的行列组成的集合
对视图表的修改不影响基本表,它使我们查询数据更容易
游标:对于查询出来的结果集作为一个单元来有效的处理,游标可以定在该单元中的特定行,
一般不使用游标,但是需要逐条处理的时候就需要使用游标
10. 如何通俗的理解三个范式?
第一范式是对属性的原子性约束,要求属性具有原子性,不可再分解;
第二范式是对记录的唯一性约束,要求记录有唯一标识,即实体的唯一性
第三范式是对字段冗余性约束,即任何字段不能由其它字段派生出来,它要求字段没有冗余
范式优点:减少数据冗余,使得更新快,体积小
缺点:查询需要多表关联查询,效率低
以上就是“最新的经典mysql面试题及答案”,你能回答上来吗?如果想要了解更多的相关内容,可以关注极悦Java官网。
0基础 0学费 15天面授
Java就业班有基础 直达就业
业余时间 高薪转行
Java在职加薪班工作1~3年,加薪神器
工作3~5年,晋升架构
提交申请后,顾问老师会电话与您沟通安排学习