MySQL 面试问题与答案

2025年3月16日 | 阅读时长 28 分钟
MySQL Interview Questions

以下列出了最常问的 MySQL 面试问题和答案。

1) 什么是 MySQL?

MySQL 是一个多线程、多用户的 SQL 数据库管理系统,拥有超过 1100 万次安装。它是世界上第二受欢迎且广泛使用的开源数据库。有趣的是,MySQL 这个查询语言的名字是如何得来的。“My”一词来源于联合创始人 Michael Widenius 女儿的名字,而 SQL 是结构化查询语言的缩写。开发者使用 MySQL 是免费的,但企业需要向 Oracle 支付许可费。

MySQL 最初由营利性公司 MySQL AB 拥有,后来 Sun Microsystems 收购了它,再后来 Oracle 收购了 Sun Microsystems,因此 Oracle 目前拥有 MySQL。

MySQL 是一个由 Oracle 支持的基于结构化查询语言的关系型数据库管理系统 (RDBMS)。MySQL 支持多种操作系统,其中最著名的包括 Windows、Linux 和 UNIX。虽然可以使用 MySQL 开发各种应用程序,但它主要用于 Web 应用程序和在线发布。它是被称为 Lamp 的开源企业的基础组成部分。

什么是 Lamp?

Lamp 是一个用于 Web 开发的平台。Lamp 使用 Linux、Apache、MySQL 和 PHP 作为 操作系统、Web 服务器、数据库和面向对象的脚本语言。因此缩写为 LAMP。


2) MySQL 是用什么语言编写的?

MySQL 是用 CC++ 编写的,其 SQL 解析器是用 yacc 编写的。


3) MySQL 的技术规范有哪些?

MySQL 具有以下技术规范:

  • 灵活的结构
  • 高性能
  • 易于管理和使用
  • 复制和高可用性
  • 安全和存储管理
  • 驱动程序
  • 图形工具
  • MySQL Enterprise Monitor
  • MySQL Enterprise Security
  • JSON 支持
  • 复制与高可用性
  • 可管理性和易用性
  • OLTP 和事务
  • 地理空间支持

4) MySQL 和 SQL 之间有什么区别?

SQL 被称为标准查询语言。它用于与 MySQL 等数据库进行交互。MySQL 是一个存储各种类型数据并确保其安全的数据库。

在数据库中存储和检索值需要 PHP 脚本。

SQL 是一种计算机语言,而 MySQL 是一种软件或应用程序。

SQL 用于创建数据库管理系统,而 MySQL 用于实现数据处理、存储、删除和修改数据。


5) 数据库和表之间有什么区别?

数据库和表之间存在主要区别。区别如下:

  • 表是表示数据库中数据划分的一种方式,而数据库是表和数据的集合。
  • 表用于将相互关联的数据分组并创建数据集。该数据集将用于数据库中。以任何形式存储在表中的数据都是数据库的一部分,但反之则不然。
  • 数据库是组织好的数据和用于访问它们的特性的集合,而表是用于存储数据的行和列的集合。

6) 为什么我们使用 MySQL 数据库服务器?

首先,MySQL 服务器对开发者和小型企业免费使用。

MySQL 服务器是开源的。

MySQL 社区庞大且支持性强;因此,任何有关 MySQL 的帮助请求都会尽快得到解决。

MySQL 拥有非常稳定的版本,因为它已经在市场上存在很长时间了。以前版本中出现的所有错误都已持续删除,并且每次更新后都会提供一个非常稳定的版本。

MySQL 数据库服务器非常快速、可靠且易于使用。您可以轻松使用和修改该软件。MySQL 软件可以从互联网免费下载。


7) MySQL 中有哪些不同的表?

默认情况下存在许多表。但是,MyISAM 是 MySQL 中使用的默认数据库引擎。存在五种类型的表:

  • MyISAM
  • 合并
  • INNO DB
  • ISAM

8) 如何安装 MySQL?

在我们的系统上安装 MySQL 允许我们安全地创建、删除和测试 Web 应用程序,而不会影响我们实时网站的数据。在我们的系统上使用 MySQL 的方法有很多,但最好的方法是手动安装。手动安装允许我们更多地了解系统并提供对数据库的更多控制。要查看 Windows 中 MySQL 的安装步骤,请访问以下链接:

https://tpointtech.cn/how-to-install-mysql

手动安装 MySQL 有几个好处:

  • 备份、重新安装或将数据库从一个位置移动到另一个位置可以在一秒钟内完成。
  • 它提供了对 MySQL 服务器何时启动和关闭的更多控制。
  • 我们可以在任何地方安装 MySQL,例如在便携式 USB 驱动器中。

9) 如何检查 MySQL 版本?

我们可以使用以下命令在 Linux 上检查 MySQL 版本:

如果我们在 Windows 中使用 MySQL,打开 MySQL 命令行工具会显示版本信息,而无需使用任何标志。如果我们想了解更多关于服务器信息的信息,请使用以下语句:

它将返回如下输出:

MySQL Interview Questions

在此输出中,我们可以看到有关已安装 MySQL 软件的其他版本信息,例如 innodb_version、protocol_version、version_ssl_library 等。


10) 如何在 MySQL 中添加列?

列是表中一系列单元格,存储表中每行的一个值。我们可以使用 ALTER TABLE 语句在现有表中添加列,如下所示:

要阅读更多信息,请点击此处。


11) 如何在 MySQL 中删除表?

我们可以使用 Drop Table 语句在 MySQL 中删除表。此语句会从数据库中永久删除表的全部数据,包括结构和定义。因此,在删除表时需要小心。使用该语句后,我们无法在 MySQL 中恢复该表。该语句如下:

要阅读更多信息,请点击此处


12) 如何在 MySQL 中添加外键?

外键用于将一个或多个表链接在一起。它匹配另一个表的主键字段以链接两个表。它允许我们创建表之间的父子关系。我们可以通过两种方式向表中添加外键:

  • 使用 CREATE TABLE 语句
  • 使用 ALTER TABLE 语句

以下是使用 CREATE TABLE 或 ALTER TABLE 语句定义外键的语法:

要阅读更多信息,请点击此处


13) 如何连接到 MySQL 数据库?

MySQL 主要允许我们通过两种方式连接数据库服务器:

使用命令行工具

我们可以在 MySQL 安装文件夹的 bin 目录中找到命令行客户端工具。要调用此程序,我们需要导航到安装文件夹的 bin 目录并键入以下命令:

接下来,我们需要运行以下命令来连接到 MySQL 服务器:

最后,输入所选用户帐户 root 的密码并按 Enter 键

成功连接后,我们可以使用以下命令来使用该数据库

使用 MySQL Workbench

我们可以使用 MySQL Workbench 连接数据库,只需单击加号 (+) 图标或导航到菜单栏 -> 数据库 -> 连接到数据库,就会出现以下屏幕。现在,您需要填写所有详细信息才能建立连接:

MySQL Interview Questions

完成此设置后,它将打开 MySQL Workbench 屏幕。现在,我们可以双击新创建的连接以连接到数据库服务器。

要阅读更多信息,请点击此处


14) 如何更改 MySQL 密码?

我们可以使用以下语句在新的记事本文件中更改 MySQL root 密码,并将其保存为适当的名称:

接下来,打开命令提示符并导航到 MySQL 目录。现在,复制以下文件夹并将其粘贴到我们的 DOS 命令中,然后按 Enter 键。

接下来,输入此语句以更改密码:

最后,我们可以使用此新密码以 root 身份登录 MySQL 服务器。启动 MySQL 服务器后,需要删除 C:\myswl-init.txt 文件以确保密码更改。

要阅读更多信息,请点击此处


15) 如何在 MySQL Workbench 中创建数据库?

要在 MySQL Workbench 中创建新数据库,我们首先需要启动 MySQL Workbench 并使用用户名和密码登录。转到导航选项卡并单击“模式”菜单。右键单击“模式”菜单下并选择“创建模式”或单击数据库图标(红色矩形),如以下屏幕所示。

MySQL Interview Questions

出现一个新的弹出屏幕,我们需要填写所有详细信息。输入详细信息后,单击“应用”按钮,然后单击“完成”按钮以完成数据库创建。

要阅读更多信息,请点击此处


16) 如何在 MySQL Workbench 中创建表?

启动 MySQL Workbench 并转到导航选项卡,点击“模式”菜单,其中显示了所有以前创建的数据库。选择任何数据库并双击它。它将显示子菜单,我们需要选择“表”选项。

MySQL Interview Questions

选择“表”子菜单,右键单击它并选择“创建表”选项。我们也可以点击创建新表图标(红色矩形所示)来创建表。它将打开新的弹出屏幕,我们需要填写所有详细信息来创建表。在这里,我们将输入表名和列详细信息。输入详细信息后,点击“应用”按钮,然后点击“完成”按钮以完成表的创建。

要阅读更多信息,请点击此处


17) 如何在 MySQL 中更改表名?

有时我们的表名没有意义。在这种情况下,我们需要更改或重命名表名。MySQL 提供了以下语法来重命名当前数据库中的一个或多个表:

如果我们想更改多个表名,请使用以下语法:

要阅读更多信息,请点击此处


18) 如何在 MySQL 中更改数据库名称?

有时我们需要更改或重命名数据库名称,因为它没有意义。要重命名数据库名称,我们首先需要在 MySQL 服务器中创建一个新数据库。接下来,MySQL 提供 mysqldump shell 命令来创建所选数据库的转储副本,然后将所有数据导入新创建的数据库。以下是使用 mysqldump 命令的语法:

现在,使用以下命令将数据导入新创建的数据库:


19) 如何在 MySQL 中导入数据库?

在 MySQL 中导入数据库是一个将数据从一个地方移动到另一个地方的过程。这是备份重要数据或在不同位置之间传输数据的非常有用的方法。例如,我们有一个联系人数据库,将其保存在安全的地方至关重要。因此,我们需要将其导出到安全的地方,并且当它从原始位置丢失时,我们可以使用导入选项恢复它。

在 MySQL 中,我们主要可以通过两种方式导入数据库:

  • 命令行工具
  • MySQL Workbench

要阅读有关导入数据库的更多信息,请点击此处


20) 如何在 MySQL 中更改列名?

在创建表时,我们错误地设置了一个列名。要在 MySQL 中更改或重命名现有列名,我们需要同时使用 ALTER TABLE 和 CHANGE 命令。以下是用于在 MySQL 中重命名列的语法:

假设列的当前名称是 S_ID,但我们想将其更改为更合适的名称 Stud_ID。我们将使用以下语句来更改其名称:


21) 如何在 MySQL 中删除列?

我们可以使用 ALTER TABLE 语句删除、丢弃或删除现有表中的一个或多个列,如下所示:

要阅读更多信息,请点击此处。


22) 如何在 MySQL 中插入数据?

我们可以使用 INSERT 语句在 MySQL 表中插入数据。此语句允许我们向表中插入单行或多行。以下是向表中插入记录的基本语法:

如果要向表中插入多行,请使用以下语法:

要阅读更多信息,请点击此处


23) 如何在 MySQL 中删除行?

我们可以使用数据库中的 DELETE 语句从 MySQL 表中删除行。以下是 MySQL 中 DELETE 语句的通用语法,用于从表中删除一行或多行:

请注意,如果我们没有在语法中指定 WHERE 子句,则此语句将从给定表中删除所有记录。

要阅读更多信息,请点击此处


24) 如何在 MySQL 中连接两个表?

我们可以使用 JOIN 子句在 MySQL 中连接两个或更多表。MySQL 允许各种类型的 JOIN 子句。这些子句连接多个表,并且只返回在所有表中匹配相同值和属性的记录。以下是在 MySQL 中连接两个或更多表的四种简单方法:

  • Inner Join
  • 左连接 (Left Join)
  • 右连接 (Right Join)
  • 交叉连接

要阅读更多信息,请点击此处


25) 如何在 MySQL 中连接三个表?

有时我们需要从三个或更多表中获取数据。有两种类型可以执行这些类型的连接。假设我们有三个名为 Student、Marks 和 Details 的表。

假设 Student 表有 (stud_id, name) 列,Marks 表有 (school_id, stud_id, scores) 列,Details 表有 (school_id, address, email) 列。

1. 使用 SQL Join 子句

这种方法与我们连接两个表的方式类似。以下查询返回三个表的结果:

2. 使用父子关系

这是连接两个以上表的另一种方法。在上面的表中,我们必须创建父子关系。首先,将列 X 创建为一个表中的主键,并在另一个表中创建为外键。因此,stud_id 是 Student 表中的主键,并将成为 Marks 表中的外键。接下来,school_id 是 Marks 表中的主键,并将成为 Details 表中的外键。以下查询返回三个表的结果:

要阅读有关外键的更多信息,请点击此处


26) 如何在 MySQL 中更新表?

我们可以使用带有 SET 和 WHERE 子句的 UPDATE 语句更新表中的现有记录。SET 子句更改指定列的值。WHERE 子句是可选的,用于指定条件。此语句还可以用于一次更改单行或多行的一个或多个列中的值。以下是 UPDATE 命令的通用语法,用于修改 MySQL 表中的数据:

要阅读更多信息,请点击此处


27) 什么是 MySQL Workbench?

MySQL Workbench 是一个统一的可视化数据库设计或 GUI 工具,用于操作 MySQL 数据库。它由 Oracle 开发和维护,提供 SQL 开发、数据迁移以及用于服务器配置、用户管理、备份等全面的管理工具。我们可以使用此服务器管理工具创建新的物理数据模型、E-R 图和 SQL 开发。它适用于所有主要操作系统。MySQL 从 MySQL 服务器 v5.6 及更高版本开始提供支持。

它主要有三个版本,如下所示:

  • 社区版 (开源, GPL)
  • 标准版 (商业)
  • 企业版 (商业)

要阅读更多信息,请点击此处


28) 如何在 MySQL 中删除主键?

MySQL 主键是用于唯一标识表中每条记录的单个字段或字段组合。主键列不能为空。我们可以使用 ALTER TABLE 语句从表中删除或删除主键。以下语法用于删除主键:

要阅读更多信息,请点击此处


29) 如何在 MySQL 中创建存储过程?

存储过程是我们保存在数据库中的一组 SQL 语句。SQL 查询,包括 INSERT、UPDATE、DELETE 等,都可以是存储过程的一部分。过程允许我们通过执行单个语句反复使用相同的代码。它存储在数据库数据字典中。

我们可以使用以下语法创建存储过程:

此语句可以通过参数返回一个或多个值,或者不返回任何结果。以下示例更清楚地解释了这一点:

要阅读更多信息,请点击此处


30) 如何在 MySQL 中执行存储过程?

我们可以通过简单的 CALL 查询在 MySQL 中执行存储过程。此查询接受存储过程的名称以及我们需要传递给它的任何参数。以下是执行存储过程的基本语法:

让我们通过这个例子来理解它:

在这里,名为 Product_Pricing 的存储过程计算并返回最低和最高产品价格。


31) 如何在 MySQL 中创建视图?

视图是一个数据库对象,其值基于基表。它是一个通过查询连接一个或多个表而创建的**虚拟表**。它与基表的操作方式相似,但本身不包含任何数据。如果底层表发生任何更改,相同的更改也会反映在视图中。

以下是在 MySQL 中创建视图的通用语法:

要阅读更多信息,请点击此处


32) 如何在 MySQL 中创建触发器?

触发器是数据库中的一段程序代码,当数据库中特定表或视图上发生某些事件时自动调用。当记录插入表中或任何列被更新时,它可以执行。我们可以使用以下语法在 MySQL 中创建触发器:

要阅读更多信息,请点击此处


33) 如何在 MySQL 中清除屏幕?

如果在 Windows 中使用 MySQL,8 版本之前无法清除屏幕。当时,Windows 操作系统提供的唯一清除屏幕的方法是退出 MySQL 命令行工具,然后再次打开 MySQL。

MySQL 8 版本发布后,我们可以使用以下命令清除命令行屏幕:


34) 如何在 MySQL 中创建新用户?

MySQL 中的用户是 USER-TABLE 中的一条记录。它包含 MySQL 帐户用于访问和管理数据库的登录信息、帐户权限和主机信息。我们可以使用 MySQL Create User 语句在数据库服务器中创建新用户帐户。它为新帐户提供身份验证、SSL/TLS、资源限制、角色和密码管理属性。

以下是 MySQL 中创建新用户的基本语法:

要阅读更多信息,请点击此处


35) 如何在 MySQL 中检查用户?

如果要在 MySQL 中管理数据库,需要查看数据库服务器中所有用户帐户的列表。以下命令用于检查数据库服务器中所有可用用户的列表:

要阅读更多信息,请点击此处


36) 如何在 MySQL 中导入 CSV 文件?

MySQL 允许我们将 CSV(逗号分隔值)文件导入数据库或表中。CSV 是一个包含数据列表的纯文本文件,可以以表格格式保存。MySQL 提供了 LOAD DATA INFILE 语句来导入 CSV 文件。此语句用于非常快速地读取文本文件并将其导入数据库表。导入 CSV 文件的完整语法如下:

要阅读更多信息,请点击此处


37) 如何在 MySQL 中插入日期?

MySQL 允许我们使用 INSERT 语句在 MySQL 表中添加日期。MySQL 提供了几种用于存储日期的数据类型,例如 DATE、TIMESTAMP、DATETIME 和 YEAR。MySQL 中日期的默认格式是 YYYY-MM-DD。以下是 MySQL 表中插入日期的基本语法:

如果我们要以 mm/dd/yyyy 格式插入日期,则需要使用以下语句:


38) 如何在 MySQL 中检查数据库大小?

MySQL 允许我们查询 information_schema.tables 表以获取有关表和数据库的信息。它将返回有关数据长度、索引长度、排序规则、创建时间等信息。我们可以使用以下语法检查服务器上数据库的大小:

它将返回如下输出:

MySQL Interview Questions

如果我们要检查特定数据库中表的大小,请使用以下语句:

它将返回如下输出:

MySQL Interview Questions

39) MySQL 中的索引是如何工作的?

索引是将无序列表转换为有序列表的过程。它有助于在 MySQL 中搜索表时最大限度地提高查询效率。MySQL 索引的工作原理类似于书本索引。

假设我们有一本书,想了解一些信息,比如搜索。没有索引,需要一页一页地翻阅所有页面,直到找到特定主题。另一方面,索引包含一个关键字列表,用于查找页面中提到的主题。然后,我们可以直接翻到这些页面,而无需翻阅所有页面。


40) 谁拥有 MySQL?

MySQL 是最流行的免费开源数据库软件,遵循 GNU 通用公共许可证。最初,它由瑞典公司 MySQL AB 拥有和赞助。现在,它已被 Sun Microsystems(现为 Oracle 公司)收购,后者负责数据库的管理和开发。

要阅读更多信息,请点击此处


41) 如何在 MySQL 中查看数据库?

使用 MySQL 服务器时,查看或列出可用数据库是一项常见任务。我们可以使用以下命令查看 MySQL 服务器主机上的所有数据库:

要阅读更多信息,请点击此处


42) 如何在 MySQL 中设置自动递增?

自动递增是一种约束,它在向表中插入新记录时自动生成唯一数字。通常,它用于表中的主键字段。在 MySQL 中,我们可以使用 ALTER TABLE 语句设置 AUTO_INCREMENT 列的值,如下所示:


43) 如何在 MySQL 中查找第二高薪水?

MySQL 使用 LIMIT 关键字,可用于限制结果集。它将允许我们获取前几行、后几行或一系列行。它还可以用于查找第二、第三或第 n 高薪水。它确保您首先使用 order by 子句对结果集进行排序,然后打印提供准确结果的输出。以下查询用于获取 MySQL 中的第二高薪水:

还有其他一些方法可以在 MySQL 中找到第二高薪水,如下所示:

此语句使用子查询和 IN 子句来获取第二高薪水:

此查询使用子查询和 < 运算符返回第二高薪水:


44) MySQL 中 TRUNCATE 和 DELETE 有什么区别?

  • TRUNCATE 是 DDL 命令,DELETE 是 DML 命令。
  • TRUNCATE QL 不可能与 Where 命令一起使用,但您可以与 DELETE 命令一起使用。
  • TRUNCATE 不能与索引视图一起使用,而 DELETE 可以与索引视图一起使用。
  • DELETE 命令用于从表中删除数据。它只从表中删除数据行,而 TRUNCATE 是一个非常危险的命令,应谨慎使用,因为它会从表中永久删除每一行。

45) MySQL 中有多少触发器?

MySQL 数据库中只允许使用六个触发器。

  1. 插入前
  2. After Insert
  3. 更新前
  4. After Update
  5. 删除前
  6. After Delete

46) 什么是堆表?

存储在内存中的表称为 HEAP 表。在 MySQL 中创建堆表时,需要将 TYPE 指定为 HEAP。这些表通常称为内存表。它们用于临时高速存储。它们不允许 BLOB 或 TEXT 字段。


47) MySQL 中的 BLOB 和 TEXT 是什么?

BLOB 是一个缩写,代表大型二进制对象。它用于保存可变数量的数据。

BLOB 有四种类型。

  1. TINYBLOB
  2. BLOB
  3. MEDIUMBLOB
  4. LONGBLOB

它们之间的区别在于它们可以保存的最大值长度。

TEXT 是不区分大小写的 BLOB。TEXT 值是非二进制字符串(字符字符串)。它们具有字符集,并且值的存储和比较基于字符集的排序规则。

TEXT 有四种类型。

  1. TINYTEXT
  2. TEXT
  3. MEDIUMTEXT
  4. LONGTEXT

48) MySQL 中的触发器是什么?

触发器是一组代码,它响应某些事件而执行。


49) 堆表和临时表之间有什么区别?

堆表

堆表存在于内存中,用于临时高速存储。它们不允许 BLOB 或 TEXT 字段。

堆表不支持 AUTO_INCREMENT。

索引应该是非空的。

临时表

临时表用于保存瞬态数据。有时在保存临时数据的情况下很有用。临时表在当前客户端会话终止后删除。

主要区别

堆表在客户端之间共享,而临时表不共享。

堆表只是另一种存储引擎,而对于临时表,您需要特殊权限(创建临时表)。


50) FLOAT 和 DOUBLE 有什么区别?

FLOAT 存储精度高达 8 位的浮点数,并分配 4 字节。另一方面,DOUBLE 存储精度高达 18 位的浮点数,并分配 8 字节。


51) MySQL 相对于 Oracle 有哪些优势?

  1. MySQL 是一个免费、快速、可靠的开源关系型数据库,而 Oracle 价格昂贵,尽管他们提供了 Oracle 免费版以吸引 MySQL 用户。
  2. MySQL 在您的笔记本电脑上仅使用不到 1 MB 的 RAM,而 Oracle 9i 安装使用 128 MB。
  3. MySQL 非常适合支持数据库的网站,而 Oracle 专为企业而设计。
  4. MySQL 是可移植的。

52) MySQL 有哪些缺点?

  1. MySQL 对于大型数据库效率不高。
  2. 版本低于 5.0 的不支持 COMMIT 和存储过程功能。
  3. 事务处理效率不高。
  4. MySQL 的功能高度依赖于其他附加组件。
  5. 开发不是社区驱动的。

53) CHAR 和 VARCHAR 有什么区别?

  1. CHAR 和 VARCHAR 在存储和检索方面有所不同。
  2. CHAR 列长度固定,而 VARCHAR 长度可变。
  3. CHAR 数据类型可以容纳的最大字符数为 255 个,而 VARCHAR 可以容纳多达 4000 个字符。
  4. CHAR 比 VARCHAR 快 50%。
  5. CHAR 使用静态内存分配,而 VARCHAR 使用动态内存分配。

54) MySQL_connect 和 MySQL_pconnect 有什么区别?

Mysql_connect

  1. 它打开一个到数据库的新连接。
  2. 每次您都需要根据请求打开和关闭数据库连接。
  3. 页面加载时打开。

Mysql_pconnect

  1. 在 Mysql_pconnect 中,“p”代表持久连接,因此它打开持久连接。
  2. 数据库连接无法关闭。
  3. 如果您的网站流量较大,它会更有用,因为无需频繁打开和关闭连接,也无需在页面加载时打开和关闭连接。

55) MySQL 中的“i_am_a_dummy flag”有什么作用?

“i_am_a_dummy flag”使 MySQL 引擎拒绝执行任何没有 WHERE 子句的 UPDATE 或 DELETE 语句。因此,它可以避免程序员在不使用 WHERE 子句的情况下错误地删除整个表。


56) 如何在 MySQL 中获取当前日期?

要获取当前日期,请使用以下语法:


57) 使用 MySQL 时有哪些安全警报?

安装杀毒软件并配置操作系统的防火墙。

切勿将 MySQL 服务器作为 UNIX root 用户使用。

更改 root 用户名和密码,限制或禁用远程访问。


58) 如何通过 mysqladmin 更改现有用户的密码?

Mysqladmin -u root -p password "newpassword"。


59) UNIX 时间戳和 MySQL 时间戳有什么区别?

实际上,Unix 时间戳和 MySQL 时间戳都存储为 32 位整数,但 MySQL 时间戳以 YYYY-MM-DD HH:MM:SS 格式的可读格式表示。


60) 如何在 MySQL 查询中显示表中第 n 高的工资?

让我们以一个名为 employee 的表为例。

要查找第 N 高的工资是:

select distinct(salary)from employee order by salary desc limit n-1,1

如果你想找到第三高工资:

select distinct(salary)from employee order by salary desc limit 2,1


61) MySQL 的默认端口号是多少?

MySQL 的默认端口号是 3306。


62) 什么是 REGEXP?

REGEXP 是使用正则表达式的模式匹配。正则表达式是一种强大的方式,用于为复杂的搜索指定模式。

基本上,它是一个特殊的文本字符串,用于描述搜索模式。为了更好地理解它,您可以设想一个日常生活中搜索 .txt 文件以列出文件管理器中所有文本文件的情况。 .txt 的正则表达式等价物将是 .*\.txt。


63) 一个索引可以创建多少列?

对于标准表,最多可以创建 16 个索引列。


64) NOW() 和 CURRENT_DATE() 有什么区别?

NOW() 命令用于显示当前年、月、日以及时、分、秒,而 CURRENT_DATE() 仅显示当前年、月和日。


65) 显示前 20 行的查询是什么?

SELECT * FROM table_name LIMIT 0,20;


66) 编写一个查询以显示当前日期和时间?

如果要显示当前日期和时间,请使用:

SELECT NOW();

如果要仅显示当前日期,请使用:

SELECT CURRENT_DATE();


67) MySQL 中的保存点是什么?

任何事务中定义的点称为保存点。

SAVEPOINT 是 MySQL 中的一个语句,用于设置一个带标识符名称的命名事务保存点。


68) 什么是 SQLyog?

SQLyog 程序是管理员最流行的 GUI 工具。它是最受欢迎的 MySQL 管理器和管理工具。它结合了 MySQL 管理器、phpMyadmin 和其他工具的功能。MySQL 前端和 MySQL GUI 工具。


69) 如何在 MySQL 中备份数据库?

使用 phpMyAdmin 备份数据很容易。通过单击左侧导航栏中的数据库名称来选择要备份的数据库。然后单击导出按钮,并确保突出显示您要备份的所有表。然后指定您要在导出下选择的选项并保存输出。


70) MySQL 中有哪些不同的列比较运算符?

=、<>、<=、<、>=、>、<<、>>、<=>、AND、OR 或 LIKE 运算符是 MySQL 中的比较运算符。这些运算符通常与 SELECT 语句一起使用。


71) 编写一个查询以计算 MySQL 中表的行数。

SELECT COUNT user_id FROM users;


72) 编写一个查询以检索从第 20 本开始的 100 本书。

SELECT book_title FROM books LIMIT 20, 100;


73) 编写一个查询以选择所有赢得 1、3、5 或 7 场比赛的球队。

SELECT team_name FROM team WHERE team_won IN (1, 3, 5, 7);


74) MySQL Server 的默认端口是什么?

MySQL Server 的默认端口是 3306。


75) MyISAM 表是如何存储的?

MyISAM 表以三种格式存储在磁盘上:

  • '.frm' 文件:存储表定义
  • '.MYD' (MYData):数据文件
  • '.MYI' (MYIndex):索引文件

76) MySQL 中 ENUM 的用法是什么?

ENUM 是字符串对象。通过定义 ENUM,我们允许最终用户提供正确的输入,因为如果用户提供的输入不是 ENUM 定义数据的一部分,则查询将不会执行,并且会显示错误消息“错误的查询”。例如,假设我们想获取用户的性别作为输入,所以我们指定 ENUM('male', 'female', 'other'),因此,无论用户尝试输入除这三个之外的任何字符串,都会导致错误。

ENUM 用于限制表中可能的值。

例如

CREATE TABLE months (month ENUM 'January', 'February', 'March'); INSERT months VALUES ('April').


77) MyISAM 相对于 InnoDB 有哪些优势?

MyISAM 采用保守的磁盘空间管理方法,并将每个 MyISAM 表存储在单独的文件中,如果需要可以进一步压缩。另一方面,InnoDB 将表存储在表空间中。它的进一步优化很困难。


78) MySQL_fetch_array()、MySQL_fetch_object()、MySQL_fetch_row() 有什么区别?

Mysql_fetch_object 用于将数据库结果作为对象检索,而 mysql_fetch_array 以数组形式返回结果。这将允许通过字段名称访问数据。

例如

使用 mysql_fetch_object 字段可以通过 $result->name 访问。

使用 mysql_fetch_array 字段可以通过 $result->[name] 访问。

使用 mysql_fetch_row($result),其中 $result 是通过 mysql_query() 函数成功执行查询返回的结果资源。

示例


79) mysql_connect 和 mysql_pconnect 有什么区别?

Mysql_connect() 用于打开到数据库的新连接,而 mysql_pconnect() 用于打开到数据库的持久连接。它指定每次页面加载时,mysql_pconnect() 不会打开数据库。


80) mysql_close() 的用途是什么?

Mysql_close() 不能用于关闭持久连接。但是,它可以用于关闭由 mysql_connect() 打开的连接。


81) 什么是 MySQL 数据目录?

MySQL 数据目录是 MySQL 存储数据的地方。此数据字典下的每个子目录都代表一个 MySQL 数据库。默认情况下,由 MySQL = 服务器 mysqld 管理的信息存储在数据目录中。


82) 如何确定 MySQL 数据目录的位置?

MySQL 数据目录在 Windows 中的默认位置是 C:\mysql\data 或 C:\Program Files\MySQL\MySQL Server 5.0\data。


83) MySQL 中正则表达式的用途是什么?

在 MySQL 中,正则表达式用于查询中,以在字符串中搜索模式。

  • * 匹配其前面字符串的 0 个或更多实例。
  • + 匹配其前面字符串的 1 个或更多实例。
  • ? 匹配其前面字符串的 0 个或 1 个实例。
  • . 匹配单个字符。
  • [abc] 匹配 a 或 b 或 z
  • | 分隔字符串
  • ^ 将匹配锚定在开头。
  • “.” 可用于匹配任何单个字符。 “|” 可用于匹配两个字符串中的任何一个。
  • REGEXP 可用于将输入字符与数据库匹配。

示例

以下语句检索 employee_name 列中包含文本 1000(例如薪水)的所有行:


84) MySQL 中“i-am-a-dummy”标志的用途是什么?

在 MySQL 中,“i-am-a-dummy”标志使得 MySQL 引擎拒绝 UPDATE 和 DELETE 命令,除非存在 WHERE 子句。


85) 在 MySQL 中哪个命令用于查看表的内容?

SELECT 命令用于在 MySQL 中查看表的内容。

解释访问控制列表。

ACL 是与对象关联的权限列表。MySQL 将访问控制列表缓存在内存中,每当用户尝试进行身份验证或执行命令时,MySQL 都会检查对象所需的权限,如果权限可用,则执行成功完成。


86) 什么是 InnoDB?

InnoDB 是一个 SQL 存储数据库。ACID 事务也在 InnoDB 中提供,并且还包括对外键的支持。最初由 InnobaseOY 拥有,在 2005 年被 Oracle Corporation 收购后,现属于 Oracle Corporation。


87) 什么是 ISAM?

它是由 IBM 开发的文件管理系统,允许顺序或随机访问记录。


88) 如何在 MySQL 中运行批处理模式?

要在 MySQL 中执行批处理模式,我们使用以下命令:


89) 什么是联合表?

联合表是指向位于其他服务器上其他数据库中的表的表。


90) 主键和候选键有什么区别?

为了唯一标识表中的每一行,我们将使用主键。对于一个表,只存在一个主键。

候选键是列或列的集合,可用于唯一标识数据库中的任何记录,而无需引用任何其他数据。


91) MySQL 中有哪些驱动程序?

MySQL 中提供以下驱动程序:

  • PHP 驱动程序
  • JDBC 驱动程序
  • ODBC 驱动程序
  • C 包装器
  • PYTHON 驱动程序
  • PERL 驱动程序
  • RUBY 驱动程序
  • CAP11PHP 驱动程序
  • Ado.net5.mxz

92) 什么是 DDL、DML 和 DCL?

SQL 命令主要分为三类,即 DDL、DML 和 DCL。数据定义语言 (DDL) 处理所有数据库架构,它定义数据应如何驻留在数据库中。CREATE TABLE 和 ALTER TABLE 等命令属于 DDL。

数据操作语言 (DML) 处理数据的操作和操纵。DML 中的命令是 Insert、Select 等。

数据控制语言 (DCL) 与 Grant 和权限相关。简而言之,访问数据库任何部分的授权由这些语言定义。