2020数据库面试题
Mysql数据库
- 1、简单阐述数据库索引?
- 2、什么是事务?
- 3、事务有几大特性?分别是什么?
- 4、简述一下数据库的事务隔离?
- 5、什么是主键索引?
- 6、数据库排序的两关键字是什么?
- 7、char 和 varchar 的区别是什么?
- 8、说一下MySQL常用的存储引擎?
- 9、一张自增表里面总共有 7 条数据,删除了最后 2 条数据,重启 MySQL 数据库,又插入了一条数据,此时 id 是几?
- 10、MySQL 的内连接、左连接、右连接有什么区别?
- 11、Mysql聚合函数的使用?
1、简单阐述数据库索引?
索引是满足某种特定查找算法的数据结构,而这些数据结构会以某种方式指向数据,从而实现高效查找数据。
具体来说 MySQL 中的索引,不同的数据引擎实现有所不同,但目前主流的数据库引擎的索引都是 B+ 树实现的,B+ 树的搜索效率,可以到达二分法的性能,找到数据区域之后就找到了完整的数据结构了,所有索引的性能也是更好的。
2、什么是事务?
事务可以将一系列的数据操作捆绑成一个整体进行统一的管理,如果某一事务执行成功,则该事务中进行的所有数据均会提交,成为数据库中的永久组成部分。如果事务执行时遇到错误,则就是必须取消或回滚。取消或回滚后,数据将全部恢复到操作前的状态,所以数据更改均被消除。
Mysql 通过事务保证数据的一致性
3、事务有几大特性?分别是什么?
有4个特性ACID
- 原子性(Atomicity):事务是一个完整的操作。
- 一致性(Consisteny):当事务完成时,数据必须处于一致状态。
- 隔离性(Isolation):对数据进行修改的所有并发事务是彼此隔离,这表明事务必须独立,他不应该以任何反射影响其他事务。
- 持久性(Ourability):事务的持久性指不管系统是否发生了故障,事物的处理结果都是永久的。
4、简述一下数据库的事务隔离?
脏读: 表示一个事务能够读取另一个事务中还未提交的数据。比如,某个事务尝试插入记录 A,此时该事务还未提交,然后另一个事务尝试读取到了记录 A。
不可重复读: 是指在一个事务内,多次读同一数据。比如,事务A要读取数据两次,先读取了一次,然后事务B更改了此数据,当事务A再读取时与第一次读的不是同一个数据。
幻读: 指同一个事务内多次查询返回的结果集不一样。比如同一个事务 A 第一次查询时候有 n 条记录,但是第二次同等条件下查询却有 n+1 条记录,这就好像产生了幻觉。发生幻读的原因也是另外一个事务新增或者删除或者修改了第一个事务结果集里面的数据,同一个记录的数据内容被修改了,所有数据行的记录就变多或者变少了。
- READ-UNCOMMITTED:未提交读,最低隔离级别、事务未提交前,就可被其他事务读取(会出现幻读、脏读、不可重复读)。
- READ-COMMITTED:提交读,一个事务提交后才能被其他事务读取到(会造成幻读、不可重复读)。
- REPEATABLE-READ:可重复读,默认级别,保证多次读取同一个数据时,其值都和事务开始时候的内容是一致,禁止读取到别的事务未提交的数据(会造成幻读)。
- SERIALIZABLE:序列化,代价最高最可靠的隔离级别,该隔离级别能防止脏读、不可重复读、幻读。
5、什么是主键索引?
它是一种特殊的唯一索引,不允许有空值。一般是在建表的时候指定的主键,就会创建主键索引,CREATE INDEX不能用来创建主键索引,使用ALTER TABLE来代替。
6、数据库排序的两关键字是什么?
顺序:ASC
倒序:DESC
7、char 和 varchar 的区别是什么?
- char(n) :固定长度类型,比如订阅 char(10),当你输入"abc"三个字符的时候,它们占的空间还是 10 个字节,其他 7 个是空字节。
- chat 优点:效率高;缺点:占用空间;适用场景:存储密码的 md5 值,固定长度的,使用 char 非常合适。
- varchar(n) :可变长度,存储的值是每个值占用的字节再加上一个用来记录其长度的字节的长度。
所以,从空间上考虑 varcahr 比较合适;从效率上考虑 char 比较合适,二者使用需要权衡。
8、说一下MySQL常用的存储引擎?
- InnoDB 引擎:mysql 5.1 后默认的数据库引擎,提供了对数据库 acid 事务的支持,并且还提供了行级锁和外键的约束,它的设计的目标就是处理大数据容量的数据库系统。MySQL 运行的时候,InnoDB 会在内存中建立缓冲池,用于缓冲数据和索引。但是该引擎是不支持全文搜索,同时启动也比较的慢,它是不会保存表的行数的,所以当进行 select count(*) from table 指令的时候,需要进行扫描全表。由于锁的粒度小,写操作是不会锁定全表的,所以在并发度较高的场景下使用会提升效率的。
- MyIASM 引擎:不提供事务的支持,也不支持行级锁和外键。因此当执行插入和更新语句时,即执行写操作的时候需要锁定这个表,所以会导致效率会降低。不过和 InnoDB 不同的是,MyIASM 引擎是保存了表的行数,于是当进行 select count(*) from table 语句时,可以直接的读取已经保存的值而不需要进行扫描全表。所以,如果表的读操作远远多于写操作时,并且不需要事务的支持的,可以将 MyIASM 作为数据库引擎的首选。
9、一张自增表里面总共有 7 条数据,删除了最后 2 条数据,重启 MySQL 数据库,又插入了一条数据,此时 id 是几?
- 表类型如果是 MyISAM ,那 id 就是 8。
- 表类型如果是 InnoDB,那 id 就是 6。
InnoDB 表只会把自增主键的最大 id 记录在内存中,所以重启之后会导致最大 id 丢失。
10、MySQL 的内连接、左连接、右连接有什么区别?
内连接关键字:inner join;左连接:left join;右连接:right join。
内连接是把匹配的关联数据显示出来;左连接是左边的表全部显示出来,右边的表显示出符合条件的数据;右连接正好相反。
11、Mysql聚合函数的使用?
mysql聚合函数的使用详解https://blog.csdn.net/qq_43228581/article/details/106629786
2020数据库面试题相关推荐
- 2020字节跳动数据库面试题及答案(二)—— NoSQL部分
本文答案整理为原创,转载请说明出处 文章目录 redis 的底层数据结构有哪些 redis 中的 SDS 和 C 语言中的字符串有什么区别,优点是什么 redis 中的字典是如何实现的,如何解决冲突和 ...
- MySQL数据库面试题(2021最新版)
文章目录:http://github.crmeb.net/u/defu 数据库基础知识 为什么要使用数据库 什么是SQL? 什么是MySQL? 数据库三大范式是什么 mysql有关权限的表都有哪几个 ...
- 混合索引_数据库面试题:查询在什么情况下不?索引-数据库知识点
查询在什么情况下不⾛索引 数据库面试题 ⾸先,我们可以说通过explain去排查⼀个慢查询,进⽽找到它的索引(参看第五题),当创建索引却不⾛索引时,我们就需要考虑到优化器的问题. 在⼀条单表查询语句真 ...
- datagrid如何获取一行数据中的某个字段值_或许是全网最全面关于数据库面试题...
原文: https://www.enmotech.com/web/detail/1/794/1.html 两万字全面论述数据库面试题(上) https://www.enmotech.com/web/d ...
- 计网/数据库面试题(更新中ing~~)
计网/数据库面试题(更新中ing~~) <计算机网络> 1. OSI七层模型.设备 (传输层)协议的多路分用和复用 2. TCP/IP四层模型==五层模型 (传输层)TCP和UDP协议对比 ...
- SQL编程软件测试,编程程题库之软件测试8大常见数据库面试题
原标题:编程程题库之软件测试8大常见数据库面试题 一.事务的四大特性 原子性,要么执行,要么不执行 隔离性,所有操作全部执行完以前其它会话不能看到过程一致性,事务前后,数据总额一致持久性,一旦事务提交 ...
- mysql纵表 主键_数据库面试题-sql语句
原标题:数据库面试题-sql语句 1,写出一条Sql语句:取出表A中第31到第40记录(SQLServer,以自动增长的ID作为主键,注意:ID可能不是连续的. 答: → 解1: select top ...
- C# 联合查询_直击数据库面试题:数据库查询语句
Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cname,T#) 课程表 SC(S#,C#,score) 成绩表 Teacher(T#,Tname) 教师表 问题 ...
- Oracle数据库面试题 精选 Oracle 面试题
Oracle数据库面试题 1.解释冷备份和热备份的不同点以及各自的优点 冷备份 发生在数据库已经正常关闭的情况下,将关键性文件拷贝到另外位置的一种说法.适用于所有模式的数据库. 优点 1. 是非常快速 ...
最新文章
- Python 机器学习库 Top 10,你值得拥有!
- python生成器使用场景桌面_Python – 如何更简洁地使用生成器?
- [initandlisten] connection refused because too many open connections: 819 of 819
- #每日一题 对局匹配(dp)
- Node.js基础知识普及
- LightOJ 1112 - Curious Robin Hood 树状数组
- Web安全实践(14)嗅探,arp欺骗,会话劫持与重放攻击(下)
- 1.3 编程基础之算术表达式与顺序执行 13 反向输出一个三位数(C++ Scratch)
- CLOUD信用管理设置
- Android 应用开发----7. ViewPager+Fragment一步步打造顶部导航界面滑动效果
- C语言丨线性表(二):线性链表(单链表)
- Citrix小贴纸---连接XenAPP时协议驱动程序错误
- python人像和图片比对_python 使用OpenCV进行简单的人像分割与合成
- 室友转行软件测试,月薪1.4万,天天摸鱼没事干
- Windows系统-删除指定服务!
- 【JY】力荐 | 区域建筑地震安全性有限元分析示例
- 浅谈不动产登记中的区块链应用 |《超话区块链》83期回顾
- 基于高光谱成像的苹果虫害检测特征向量的选取
- kerastensorflow+分布式训练︱实现简易视频内容问答框架
- Centos/Debian 占用CPU100%挖矿病毒清理
热门文章
- 配置单 核显本排行榜 最新项目
- 无代码开发平台通讯录导出入门教程
- 2.4G-WiFi连接路由器过程
- php mysql cpu使用率_PHP / MySQL:虽然CPU使用率始终低于40%,但12个CPU内核能否使应用程序比6个CPU内核更快?...
- 公有链 私有链 联盟链区别
- 事物TransactionScope
- 宽凳科技公布最新进展:已完成百余座城市数据采集,即将发布首张全自动高精度地图... 1
- 【华为OD机试 2023最新 】基站维护工程师(C++ 100%)
- as3+php+测试地址,m3u8 视频测试地址
- vs出现错错误main.obj:error LNK2001:unresolved external symbol