林和西网站建设,怎么做网站监控平台,做网站月薪,wordpress tag=互联网产品必然是需要有架构的#xff0c;架构包含接入层、储蓄层、逻辑处理等等#xff0c;其中存储层承载着数据落地和持久化的任务#xff0c;同时给逻辑处理层提供数据查询功能支持。而一提到储蓄层必然就要说数据库了#xff0c;对于数据库的掌握也是软件工程师面试时… 互联网产品必然是需要有架构的架构包含接入层、储蓄层、逻辑处理等等其中存储层承载着数据落地和持久化的任务同时给逻辑处理层提供数据查询功能支持。而一提到储蓄层必然就要说数据库了对于数据库的掌握也是软件工程师面试时必考的知识点。
1.简单描述mysql中, 索引、主键、唯一索引、联合索引的区别对数据库的性能有什么影响(从读写两方面)
索引是一种特殊的文件它们包含对数据表里所有记录的引用指针索引的任务就是加快对数据的访问速度普通索引允许被索引的列的数据包含重复值如果索引的列不允许有重复值就可以使用唯一索引主键索引是特殊的唯一索引一张表中只能有一个主键索引由primary key关键字定义索引可以包含多个数据列如index(columnA, columnB)就是联合索引因为索引的存在大大提高了数据库的查询效率但是会降低增加、删除、修改表的速度因为执行这些代码时还要操作索引文件
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语言包括哪几部分? 每部分都有哪些操作关键字?
数据定义语言DDLcreate/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面试题及答案”你能回答上来吗?