MySQL 应届生和有经验的面试题
以下是 MySQL 面试问题和答案,适合新手和经验丰富的候选人获得他们梦想的工作。

1)什么是MySQL?
MySQL 是一个开源数据库管理系统 (DBMS),用于以表格格式管理和组织数据,这些数据可以使用 MySQL 编程语言进行操作。它由 MySQL AB 支持和分发(现在被Oracle收购)
2) MySQL 的技术特点是什么?
MySQL 数据库软件是一个客户端或服务器系统,其中包括
- 支持各种客户端程序和库的多线程SQL 服务器
- 不同的后端
- 广泛的应用程序编程接口和
- 管理工具。
3) 为什么使用 MySQL?
MySQL 数据库服务器可靠、快速且非常易于使用。该软件可以作为免费软件下载,也可以从互联网上下载。
4) 什么是堆表?
HEAP 表存在于内存中,它们用于临时的高速存储
基础。
• 不允许使用 BLOB 或 TEXT 字段
• 只能使用比较运算符 =、<、>、= >、=<
• HEAP 表不支持 AUTO_INCREMENT
• 索引不应为空
5) MySQL 服务器的默认端口是什么?
MySQL 服务器的默认端口是 3306。
6)与Oracle相比,MySQL的优势是什么?
- MySQL 是开源软件,随时可用且不涉及任何费用。
- MySQL 是可移植的
- 带有命令提示符的 GUI。
- 使用 MySQL 查询浏览器支持管理
7) 区分 FLOAT 和 DOUBLE?
以下是 FLOAT 和 DOUBLE 的区别:
• 浮点数以八位精度存储在 FLOAT 中,它有四个字节。
• 浮点数以18 位精度存储在DOUBLE 中,它有8 个字节。
8) 区分 CHAR_LENGTH 和 LENGTH?
CHAR_LENGTH 是字符数,而 LENGTH 是字节数。拉丁字符的数字相同,但 Unicode 和其他编码的数字不同。
9) 如何在内部表示 ENUM 和 SET?
由于存储优化,ENUM 和 SET 用于表示 2 的幂。
10) MySQL 中 ENUM 的用途是什么?
ENUM 是一个字符串对象,用于指定一组预定义的值,并且可以在表创建期间使用。
Create table size(name ENUM('Small', 'Medium','Large');
11)定义正则表达式?
REGEXP 是一种模式匹配,其中匹配搜索值中任何位置的模式。
12) CHAR 和 VARCHAR 的区别?
以下是 CHAR 和 VARCHAR 之间的区别:
- CHAR 和 VARCHAR 类型在存储和检索方面不同
- CHAR 列长度固定为创建表时声明的长度。长度值范围为 1 到 255
- 当存储 CHAR 值时,它们会使用空格正确填充到特定长度。检索 CHAR 值时删除尾随空格。
13) 给列可用的字符串类型?
字符串类型有:
- 放
- 斑点
- 枚举
- 字符
- 文本
- VARCHAR
14) 如何获取当前 MySQL 版本?
SELECT VERSION ();
用于获取 MySQL 的当前版本。
15) MySQL 中使用了哪些存储引擎?
存储引擎称为表类型,数据使用各种技术存储在文件中。
技术包括:
- 存储机制
- 锁定级别
- 索引
- 能力和功能。
16) MySQL 中的驱动程序是什么?
以下是 MySQL 中可用的驱动程序:
- PHP 驱动程序
- JDBC驱动程序
- ODBC 驱动程序
- C包装
- 蟒蛇驱动程序
- PERL 驱动程序
- 红宝石驱动程序
- CAP11PHP 驱动程序
- ado.net5.mxj
17) TIMESTAMP 对 UPDATE CURRENT_TIMESTAMP 数据类型有什么作用?
创建表时,TIMESTAMP 列将更新为零。只要表的其他字段发生更改,UPDATE CURRENT_TIMESTAMP 修饰符就会将时间戳字段更新为当前时间。
18)主键和候选键有什么区别?
表的每一行都由主键唯一标识。一张表只有一个主键。
主键也是候选键。按照惯例,可以将候选键指定为主键,并可用于任何外键引用。
19) 如何使用 Unix shell 登录 MySql?
我们可以通过这个命令登录:
# [mysql dir]/bin/mysql -h hostname -u <UserName> -p <password>
20) myisamchk 做什么?
它压缩 MyISAM 表,从而减少它们的磁盘或内存使用。
21) 如何控制 HEAP 表的最大大小?
Heal 表的最大大小可以由 MySQL 配置变量 max_heap_table_size 控制。
22) MyISAM 静态和 MyISAM 动态有什么区别?
在 MyISAM 静态中,所有字段都将具有固定宽度。动态 MyISAM 表将包含 TEXT、BLOB 等字段,以适应各种长度的数据类型。
MyISAM Static 在损坏的情况下更容易恢复。
23)什么是联合表?
允许访问位于其他服务器上的其他数据库上的表的联合表。
24) 如果一张表有一列被定义为 TIMESTAMP 怎么办?
每当行被更改时,时间戳字段都会获取当前时间戳。
25) 当列设置为 AUTO INCREMENT 并且在表中达到最大值时会发生什么?
它停止递增。任何进一步的插入都会产生错误,因为密钥已被使用。
26) 我们如何找出最后插入时分配了哪个自动增量?
LAST_INSERT_ID 将返回 Auto_increment 分配的最后一个值,不需要指定表名。
27) 如何查看为表定义的所有索引?
通过以下方式为表定义索引:
SHOW INDEX FROM <tablename>;
28) LIKE 语句中的 % 和 _ 是什么意思?
% 对应 0 个或多个字符,_ 恰好是 LIKE 语句中的一个字符。
29) 我们如何在 Unix 和 MySQL 时间戳之间进行转换?
UNIX_TIMESTAMP 是将 MySQL 时间戳转换为 Unix 时间戳的命令
FROM_UNIXTIME 是将 Unix 时间戳转换为 MySQL 时间戳的命令。
30)什么是列比较运算符?
=、<>、<=、<、>=、>、<<、>>、<=>、AND、OR 或 LIKE 运算符用于 SELECT 语句中的列比较。
31)我们如何获得受查询影响的行数?
行数可以通过
SELECT COUNT (user_id) FROM users;
32) Mysql 查询是否区分大小写?
不。
SELECT VERSION(), CURRENT_DATE; SeLect version(), current_date; seleCt vErSiOn(), current_DATE;
所有这些例子都是一样的。它不区分大小写。
33) LIKE 和 REGEXP 运算符有什么区别?
LIKE 和 REGEXP 运算符用于用 ^ 和 % 表示。
SELECT * FROM employee WHERE emp_name REGEXP "^b"; SELECT * FROM employee WHERE emp_name LIKE "%b";
34) BLOB 和 TEXT 有什么区别?
BLOB 是一个二进制大对象,可以保存可变数量的数据。有四种类型的 BLOB –
- 小斑点
- 斑点
- MEDIUMBLOB 和
- 长块
它们的不同之处仅在于它们可以保存的值的最大长度。
TEXT 是不区分大小写的 BLOB。四种 TEXT 类型
- 小文本
- 文本
- 中文本和
- 长文
它们都对应于四种 BLOB 类型,并且具有相同的最大长度和存储要求。
BLOB 和 TEXT 类型之间的唯一区别是排序和比较对 BLOB 值区分大小写,对 TEXT 值不区分大小写。
35) mysql_fetch_array 和 mysql_fetch_object 有什么区别?
以下是 mysql_fetch_array 和 mysql_fetch_object 之间的区别:
mysql_fetch_array() - 将结果行作为关联数组或数据库中的常规数组返回。
mysql_fetch_object – 从数据库中返回一个结果行作为对象。
36) 我们如何在 mysql 中运行批处理模式?
以下命令用于在批处理模式下运行:
mysql ; mysql mysql.out
37) MyISAM 表将存储在哪里,并给出它们的存储格式?
每个 MyISAM 表都以三种格式存储在磁盘上:
- “.frm”文件存储表定义
- 数据文件具有“.MYD”(MYData)扩展名
- 索引文件具有“.MYI”(MYIndex)扩展名
38) MySQL 中存在哪些不同的表?
共有 5 种类型的表存在:
- MyISAM
- 堆
- 合并
- 创新数据库
- 是
MyISAM 是 MySQL 的默认存储引擎。
39) 什么是 ISAM?
ISAM 缩写为 Indexed Sequential Access Method。它由 IBM 开发,用于在磁带等二级存储系统上存储和检索数据。
40) 什么是 InnoDB?
lnnoDB 是由现为 Oracle 公司的 Innobase Oy 开发的事务安全存储引擎。
41) MySQL 如何优化 DISTINCT?
DISTINCT 在所有列上都转换为 GROUP BY,并将与 ORDER BY 子句结合使用。
SELECT DISTINCT t1.a FROM t1,t2 where t1.a=t2.a;
42) 如何将字符输入为 HEX 数字?
如果您想输入字符作为 HEX 数字,您可以输入带单引号和前缀 (X) 的 HEX 数字,或者只在 HEX 数字前面加上 (Ox)。
如果表达式上下文是字符串,HEX 数字字符串将自动转换为字符串。
43) 如何显示前 50 行?
在 MySql 中,使用以下查询显示前 50 行:
SELECT * FROM LIMIT 0,50;
44) 创建索引可以使用多少列?
可以为任何标准表创建最多 16 个索引列。
45) NOW() 和 CURRENT_DATE() 有什么区别?
NOW () 命令用于以小时、分钟和秒显示当前年、月、日。
CURRENT_DATE() 仅显示当前年、月和日期。
46) 可以使用 CREATE 语句创建哪些对象?
以下对象是使用 CREATE 语句创建的:
- 数据库
- 事件
- 功能
- 指数
- 程序
- 桌子
- 扳机
- 用户
- 看法
47) MySql 表中允许有多少个 TRIGGERS?
MySql 表中允许有六个触发器。它们如下:
- 插入前
- 插入后
- 更新前
- 更新后
- 删除前和
- 删除后
48)什么是非标准字符串类型?
以下是非标准字符串类型:
- 小文本
- 文本
- 中文本
- 长文
49) 常见的 SQL 函数有哪些?
CONCAT(A, B) – 连接两个字符串值以创建单个字符串输出。通常用于将两个或多个字段组合成一个字段。
FORMAT(X, D) – 将数字 X 格式化为 D 有效数字。
CURRDATE(), CURRTIME() – 返回当前日期或时间。
NOW() – 将当前日期和时间作为一个值返回。
MONTH(), DAY(), YEAR(), WEEK(), WEEKDAY() – 从日期值中提取给定数据。
HOUR(), MINUTE(), SECOND() – 从时间值中提取给定数据。
DATEDIFF(A, B) - 确定两个日期之间的差异,通常用于计算年龄
SUBTIMES(A, B) – 确定两次之间的差异。
FROMDAYS(INT) – 将整数天数转换为日期值。
50) 解释访问控制列表。
ACL(访问控制列表)是与对象关联的权限列表。此列表是 MySQL 服务器安全模型的基础,它有助于解决用户无法连接等问题。
MySQL 将 ACL(也称为授权表)缓存在内存中。当用户尝试验证或运行命令时,MySQL 按预定顺序检查 ACL 的验证信息和权限。
这些面试问题也将有助于您的生活。
原文标题:Top 50 MySQL Interview Questions and Answers (2022)
原文作者: Renee Alexander
原文链接:https://career.guru99.com/top-50-mysql-interview-questions-answers/




