吊打面试官!Mysql数据库83道连环炮,你能答对多少?

MySQL数据库83题

1、数据库存储引擎
2、InoDB (B+树)
2、TokuDB ( Fractal Tree-节点带数据)
3、MyIASM
4、Memory
5、数据库引擎有哪些
6、InoDB与MyISM的区别
7、索引
8、常见索引原则有
9、数据库的三范式是什么
10、第一范式(1st NF -列都是不可再分)
11、第二范式(2nd NF-每个表只描述一件事情)
12、第三范式(3rd NF -不存在对非主键列的传递依赖)
13、数据库是事务
14、SQL优化
15、简单说一说drop、 delete与truncate的区别
16、什么是视图
17、什么是内联接、左外联接、右外联接?
18、并发事务带来哪些问题?
19、事务隔离级别有哪些?MySQL的默认隔离级别是?
20、大表如何优化?
21、水平分区
22、分库分表之后,id主键如何处理
23、存储过程(特定功能的 SQL 语句集)
24、存储过程优化思路
25、触发器(一段能自动执行的程序)
26、数据库并发策略
27、MySQL中有哪几种锁?
28、MySQL中有哪些不同的表格?
29、简述在 MySQL 数据库中 MyISAM 和 InnoDB 的区别
30、MySQL 中 InnoDB 支持的四种事务隔离级别名称,以及逐级之间的区别?
31、CHAR和VARCHAR 的区别?
32、主键和候选键有什么区别?
33、myisamchk 是用来做什么的?
34、MyISAM Static 和 MyISAM Dynamic 有什么区别?
35、如果一个表有一列定义为 TIMESTAMP,将发生什么?
36、你怎么看到为表格定义的所有索引?
37、LIKE声明中的%和是什么意思?
38、列对比运算符是什么?
39、BLOB和TEXT 有什么区别?
40、MySQL_fetch_array 和 MySQL_fetch_object 的区别是什么?
41、MyISAM 表格将在哪里存储,并且还提供其存储格式?
42、MySQL如何优化DISTINCT?
43、如何显示前50行?
44、可以使用多少列创建索引?
45、NOW()和 CURRENT_DATE()有什么区别?
46、什么是非标准字符串类型?
47、什么是通用SQL函数?
48、MySQL支持事务吗?
49、MySQL里记录货币用什么字段类型好
50、MySQL有关权限的表都有哪几个?
51、列的字符串类型可以是什么?
52、MySQL数据库作发布系统的存储,一天五万条以上的增量,预计运维三年,怎么优化?
53、锁的优化策略
54、索引的底层实现原理和优化
55、什么情况下设置了索引|但无法使用
56、实践中如何优化MySQL
57、优化数据库的方法
58、简单描述MySQL 中,索引,主键,唯一索引,联合索引的区别,对数据库的性能有什么影响(从读写两方面)
59、数据库中的事务是什么?
60、SQL注入漏洞产生的原因?如何防止?
61、为表中得字段选择合适得数据类型
62、存储时期
63、对于关系型数据库而言,索引是相当重要的概念,请回答有关索引的几个问题
64、解释MySQL外连接、内连接与自连接的区别
65、Myql 中的事务回滚机制概述
66、SQL语言包括哪几部分?每部分都有哪些操作关键
67、完整性约束包括哪些?
68、什么是锁?
69、什么叫视图?游标是什么?
70、什么是存储过程?用什么来调用?
71、如何通俗地理解三个范式?
72、什么是基本表?什么是视图?
73、试述视图的优点?
74、NULL 是什么意思
75、主键、外键和索引的区别?
76、你可以用什么来确保表格里的字段只接受特定范围里的值?
77、说说对SQL语句优化有哪些方法? (选择几条)
78、什么是乐观锁
79、什么是悲观锁
80、什么是时间戳
81、什么是行级锁
82、什么是表级锁
83、什么是页级锁

吊打面试官!Mysql数据库83道连环炮,你能答对多少?_第1张图片

MySQL面试题

1、数据库存储引擎

数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以获得特定的功能。现在许多不同的数据库管理系统都支持多种不同的数据引擎。存储引擎主要有: 1. MyIsam , 2. InnoDB, 3. Memory, 4. Archive, 5. Federated 。

2、数据库引擎有哪些

mysql常用引擎包括:MYISAM、Innodb、Memory、MERGE

  1. MYISAM:全表锁,拥有较高的执行速度,不支持事务,不支持外键,并发性能差,占用空间相对较小,对事务完整性没有要求,以select、insert为主的应用基本上可以使用这引擎

  2. Innodb:行级锁,提供了具有提交、回滚和崩溃回复能力的事务安全,支持自动增长列,支持外键约束,并发能力强,占用空间是MYISAM的2.5倍,处理效率相对会差一些

  3. Memory:全表锁,存储在内容中,速度快,但会占用和数据量成正比的内存空间且数据在mysql重启时会丢失,默认使用HASH索引,检索效率非常高,但不适用于精确查找,主要用于那些内容变化不频繁的代码表

  4. MERGE:是一组MYISAM表的组合

3、InnoDB与MyISAM的区别

  1. InnoDB支持事务, MyISAM不支持,对于InnoDB每一条SQL语言都默认封装成事务 ,自动提交,这样会影响速度,所以最好把多条SQL语言放在begin和commit之间,组成一个务;

  2. InnoDB支持外键,而MyISAM不支持。对一个包含外键的InnoDB表转为MYISAM会失败;

  3. InnoDB是聚集索引,数据文件是和索引绑在一起的,必须要有主键,通过主键索引效率很高。但是辅助索引需要两次查询,先查询到主键,然后再通过主键查询到数据。因此,主键不应该过大,因为主键太大,其他索引也都会很大。而MylSAM是非聚集索引,数据文件是分离的,索引保存的是数据文件的指针。主键索弓|和辅助索引|是独立的。

  4. InnoDB不保存表的具体行数,执行select count(*) from table时需要全表扫描。而MylSAM用一个变量保存了整个表的行数,执行上述语句时只需要读出该变量即可,速度很快;

  5. Innodb不支持全文索引,而MyISAM支持全文索引,查询效率上MyISAM要高

4、索引

索引( Index )是帮助MySQL高效获取数据的数据结构。常见的查询算法,顺序查找,二分查找=叉排序树查找哈希散列法分块查找,平衡多路搜索树B树( B-tree) , 索引是对数据库表中一个或多个列的值进行排序的结构,建立索引有助于快速获取信息。

你也可以这样理解:索引就是加快检索表中数据的方法。数据库的索引类似于书籍的索引。在书籍中,索引允许用户不必翻阅完整个书就能迅速地找到所需要的信息。在数据库中,索引也允许数据库程序迅速地找到表中的数据,而不必扫描整个数据库

mysql有4种不同的索引:

  • 主键索引( PRIMARY )
  • 唯一索引( UNIQUE )
  • 普通索引( INDEX )
  • 全文索引( FULLTEXT )

索引并非是越多越好,创建索引也需要耗费资源, -是增加了数据库的存储空间,二是在插入和删除时要花费较多的时间维护索引

  • 索引加快数据库的检索速度
  • 索引降低了插入、删除、修改等维护任务的速度
  • 唯一索引可以确保每一行数据的唯一 -性
  • 通过使用索引,可以在查询的过程中使用优化隐藏器,提高系统的性能
  • 索引需要占物理和数据空间

5、常见的索引原则有哪些

  1. 选择唯一性索引 ,唯一性索引的值是唯一的 ,可以更快速的通过该索引来确定某条记录。
  2. 为经常需要排序、分组和联合操作的字段建立索引。
  3. 为常用作为查询条件的字段建立索引。
  4. 限制索引的数目:
    越多的索引,会使更新表变得很浪费时间。尽量使用数据量少的索引
  5. 如果索引的值很长,那么查询的速度会受到影响。尽量使用前缀来索引
  6. 如果索引字段的值很长,最好使用值的前缀来索引。
  7. 删除不再使用或者很少使用的索引
  8. 最左前缀匹配原则,非常重要的原则。
  9. 尽量选择区分度高的列作为索引区分度的公式是表示字段不重复的比例
  10. 索引列不能参与计算,保持列"干净”:带函数的查询不参与索引。
  11. 尽量的扩展索引,不要新建索引

6、数据库的三范式是什么

第一范式:列不可再分
第二范式:行可以唯- -区分,主键约束
第三范式:表的非主属性不能依赖与其他表的非主属性外键约束
且三大范式是一级一级依赖的,第二范式建立在第一范式上,第三范式建立第一第二范式上。

吊打面试官!Mysql数据库83道连环炮,你能答对多少?_第2张图片

以上的面试题都已整理成册,可以关注我的公众号《老男孩的架构路》领取一线大厂Java面试题总结+各知识点学习思维导图+一份400页pdf文档的Java独家面试手册!

这些资料的内容都是面试时面试官必问的知识点,篇章包括了很多知识点,其中包括了有基础知识、Java集合、JVM、多线程并发、spring原理、微服务、Netty 与RPC 、Kafka、日记、设计模式、Java算法、数据库、Zookeeper、分布式缓存、数据结构等等。

你可能感兴趣的:(Java(面试+技术干货))