MySQL高频面试题23道,附答案详解,收藏!

158 阅读4分钟

眼看着就要金九银十了,有不少小伙伴打算要跳槽一波了,换工作必然面临着面试的问题。
在面试的过程中,mysql的出场率还是蛮高的,几乎每家公司多少都会问到一些,对于开发人员来说mysql是必须要掌握的。

今天,小编给大家整理了23道mysql常见面试题及详解,感兴趣可以收藏一波哦~
悄咪咪的告诉你,一定要看到最后,给你准备了福利!

1、Mysql 的技术特点是什么?
Mysql 数据库软件是一个客户端或服务器系统,其中包括:
支持各种客户端程序和库的多线程 SQL 服务器、不同的后端、广泛的应用程序编程接口和管理工具。

2、如何区分 FLOAT 和 DOUBLE?
浮点数以 8 位精度存储在 FLOAT 中,并且有四个字节。浮点数存储在 DOUBLE 中,精度为 18 位,有八个字节。

3、区分 CHAR_LENGTH 和 LENGTH?
CHAR_LENGTH 是字符数,而 LENGTH 是字节数。
Latin 字符的这两个数据是相同的,但是对于 Unicode 和其他编码,它们是不同的。

4、数据表在什么情况下容易损坏?
服务器突然断电导致数据文件损坏。强制关机,没有先关闭 mysql 服务等。

5、如何定义 REGEXP?
REGEXP 是模式匹配,其中匹配模式在搜索值的任何位置。

6、CHAR 和 VARCHAR 的区别?
CHAR 和 VARCHAR 类型在存储和检索方面有所不同,CHAR 列长度固定为创建表时声明的长度,长度值范围是 1 到 255。
当 CHAR 值被存储时,它们被用空格填充到特定长度,检索 CHAR 值时需删除尾随空格。

7、列的字符串类型可以是什么?
SET、BLOB、ENUM、CHAR、TEXT、VARCHAR

8、如何获取当前的 Mysql 版本?
SELECT VERSION();用于获取当前 Mysql 的版本。

9、ISAM 是什么?
ISAM 简称为索引顺序访问方法。它是由 IBM 开发的,用于在磁带等辅助存储系统上存储和检索数据。

10、主键和候选键有什么区别?
表格的每一行都由主键唯一标识,一个表只有一个主键。主键也是候选键。按照惯例,候选键可以被指定为主键,并且可以用于任何外键引用。

11、如何使用 Unix shell 登录 Mysql?
我们可以通过以下命令登录:[mysql dir]/bin/mysql -h hostname -u

12、myisamchk 是用来做什么的?
它用来压缩 MyISAM 表,这减少了磁盘或内存使用。

13、如何控制 HEAP 表的最大尺寸?
Heal 表的大小可通过称为 max_heap_table_size 的 Mysql 配置变量来控制。

14、federated 表是什么?
federated 表,允许访问位于其他服务器数据库上的表。

15、你怎么看到为表格定义的所有索引?
索引是通过以下方式为表格定义的:SHOW INDEX FROM

16、如果一个表有一列定义为 TIMESTAMP,将发生什么?
每当行被更改时,时间戳字段将获取当前时间戳。

17、列设置为 AUTO INCREMENT 时,如果在表中达到最大值,会发生什么情况?
它会停止递增,任何进一步的插入都将产生错误,因为密钥已被使用。

18、怎样才能找出最后一次插入时分配了哪个自动增量?
LAST_INSERT_ID 将返回由 Auto_increment 分配的最后一个值,并且不需要指定表名称。

19、LIKE 声明中的%和_是什么意思?
%对应于 0 个或更多字符,_只是 LIKE 语句中的一个字符。

20、我们如何得到受查询影响的行数?
行数可以通过以下代码获得:SELECT COUNT(user_id)FROM users;

21、如何输入字符为十六进制数字?
如果想输入字符为十六进制数字,可以输入带有单引号的十六进制数字和前缀(X),或者只用(Ox)前缀输入十六进制数字。
如果表达式上下文是字符串,则十六进制数字串将自动转换为字符串。

22、如何显示前 50 行?
在 Mysql 中,使用以下代码查询显示前 50 行:
`SELECT*FROM
LIMIT 0,50;`

23、Mysql 中有哪几种锁?
MyISAM 支持表锁,InnoDB 支持表锁和行锁,默认为行锁
表级锁:开销小,加锁快,不会出现死锁。锁定粒度大,发生锁冲突的概率最高,并发量最低
行级锁:开销大,加锁慢,会出现死锁。锁力度小,发生锁冲突的概率小,并发度最高。