ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
>[info] MySQL 常见面试题(1-25) **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 的开源企业的基本组成部分。 **2. MySQL 是由哪种语言实现的?** MySQL 主要使用 C 和 C++ 实现的,但是 SQL 解析器是由 yacc 实现。 **3. MySQL 的技术特性有哪些?** * 灵活的数据结构 * 高性能的表现 * 方便使用和管理 * 灵活的复制和高可用性 * 存储管理和安全 * Drivers * 图形界面工具 * MySQL 企业级监控 * MySQL 企业级安全 * JSON 支持 * 灵活的复制和高可用性(重复) * Manageability and Ease of Use OLTP and 事务 * 支持 Geo **4. MySQL 和 SQL 有什么区别?** * SQL 被称为标准查询语言。它被用来与数据库进行交互,比如 MySQL。 * MySQL 是一个存储各种类型的数据并保证其安全性的数据库,需要 PHP 脚本来存储和检索数据库中的值。 * SQL 是一种计算机语言,而 MySQL 是一种软件或应用程序。 * SQL 用于创建数据库管理系统,而 MySQL 用于启用数据处理、存储、删除和修改数据。 **5. 数据库和表有什么区别?** 数据库和表之间有很大的区别。区别如下: 表是一种表示数据库中数据划分的方式,而数据库是表和数据的集合。 表用于将相互关联的数据分组并创建数据集。该数据集将在数据库中使用。以任何形式存储在表中的数据都是数据库的一部分,反之亦然。 数据库是有组织数据的集合,也是用于访问这些数据的功能,而表是用于存储数据的行和列的集合。 **6. 为什么使用 MySQL 数据库服务器?** * 首先,MySQL 服务器是免费的,开发者可以使用 ,企业只需支付少量费用。 * MySQL 服务器是开源的。 * MySQL 社区非常强大且具有支持性,因此,有关 MySQL 的任何帮助都会尽快解决。 * MySQL 具有非常稳定的版本,因为 MySQL 已经在市场上很长时间了,因此以前版本中出现的所有错误都被不断清除,并且每次更新后都会提供一个非常稳定的版本。 * MySQL 数据库服务器非常快速、可靠且易于使用。您可以轻松使用和修改软件。MySQL 软件可以免费从网上下载。 **7. MySQL 中有哪些表存储引擎?** 默认情况下有许多表存储引擎仍然存在。在 MySQL5.5 版本之前,默认引擎是 MyISAM,之后是 InnoDB。MySQL 存储引擎有: * InnoDB * MyISAM * MEMORY * MERGE **8. CHAR 和 VARCHAR 有什么区别?** CHAR 和 VARCHAR 的差异: * CHAR 是可变长度的,而 VARCHAR 是固定长度的。 * CHAR 和 VARCHAR 类型在存储和检索中不同。 * CHAR 列的长度固定为创建表时声明的长度。长度范围是 1 到 255。 * 当使用空格将 CHAR 值右填充到特定长度时存储 CHAR 值。检索 CHAR 值时会删除尾随空格。 * CHAR 使用静态内存分配,而 VARCHAR 使用动态内存分配。 * CHAR 比 VARCHAR 快 50%。 **9. MySQL 中的 TRUNCATE 和 DELETE 有什么区别?** * TRUNCATE 是一个 DDL 命令,DELETE 是一个 DML 命令。 * 不能将 Where 命令与 TRUNCATE 一起使用,但可以将其与 DELETE 命令一起使用。 * TRUNCATE 不能与索引视图一起使用,而 DELETE 可以与索引视图一起使用。 * DELETE 命令用于从表中删除数据。它只删除表中的数据行,而 TRUNCATE 是非常危险的命令,应谨慎使用,因为它会永久删除表中的每一行。 **10. MySQL 中允许多少个触发器?** MySQL 数据库中只允许使用六个触发器。 * Before Insert * After Insert * Before Update * After Update * Before Delete * After Delete **11. 内存表(heap table)是什么?** 内存中存在的表称为内存表。在 MySQL 中创建内存表时,您需要将类型指定为 HEAP。它们被临时用于高速存储。它们不允许 BLOB 或文本字段。 **12. MySQL 中的 BLOB 和 TEXT 是什么?** BLOB 是大型二进制对象的缩写。它用于保存可变数量的数据。 BLOB 有四种类型。 * TINYBLOB * BLOB * MEDIUMBLOB * LONGBLOB 这些类型之间的差异是它们可以保存的值的最大长度。 TEXT 是不区分大小写的 BLOB。TEXT 值是非二进制字符串(字符串)。它们具有一个字符集,并根据字符集的排序规则存储值并进行比较。 TEXT 有四种类型。 * TINYTEXT * TEXT * MEDIUMTEXT * LONGTEXT **13. MySQL 中的触发器是什么?** 触发器是一组响应某些事件而执行的代码。 **14. 内存表和临时表有什么区别** 内存表:内存中存在的表。它们被临时用于高速存储。它们不允许 BLOB 或文本字段。不支持 AUTO\_INCREMENT。索引不应为空。 临时表:临时表用于保留临时数据。有时在某些情况下保存临时数据会很有用。当前客户会话终止后,将删除临时表。 主要区别: * 内存表在客户端之间共享,而临时表不共享。 * 内存表只是一个存储引擎,而对于临时表,则需要特殊权限(创建临时表)。 **15. FLOAT 和 DOUBLE 有什么区别?** FLOAT 存储精度高达 8 位的浮点数并分配 4 字节,而 DOUBLE 存储精度高达 18 位的浮点数并分配 8 个字节。 **16. 与 Oracle 相比,MySQL 有哪些优势?** MySQL 是一个免费、快速、可靠、开源的关系型数据库,而 Oracle 是昂贵的,尽管它提供了 Oracle 免费版来吸引 MySQL 用户。 MySQL 在笔记本电脑上仅使用不到 1 MB 的 RAM ,而安装 Oracle 9i 需要 128 MB。 MySQL 非常适合支持数据库的网站,而 Oracle 是面向企业的。 MySQL 是可移植的。 **17. MySQL 有什么缺点?** * 对于大型数据库而言,MySQL 效率不高。 * 低于 5.0 版本不支持 COMMIT 和 STORED PROCEDURES 函数。 * 交易处理效率不高。 * MySQL 的功能高度依赖于其他插件。 * 发展不是社区驱动的。 **18. CHAR 和 VARCHAR 有什么区别?** * CHAR 和 VARCHAR 类型在存储和检索中不同。 * CHAR 是可变长度的,而 VARCHAR 是固定长度的。 * CHAR 类型最多可以容纳 255 个字符,而 VARCHAR 可以容纳 4000 个字符。 * CHAR 比 VARCHAR 快 50%。 * CHAR 使用静态内存分配,而 VARCHAR 使用动态内存分配。 **19. MySQL\_connect 和 MySQL\_pconnect 有什么区别?** **mysql\_connect:** * 它将打开与数据库的新连接。 * 每次需要打开和关闭数据库连接时,视请求而定。 * 每次加载页面时都会打开页面。 **mysql\_pconnect:** * 在 Mysql\_pconnect 中,"p" 代表持久连接,因此它将打开持久连接。 * 无法关闭数据库连接。 * 如果您的站点流量较大,这将更加有用,因为不需要在每次加载页面时频繁打开和关闭连接。 **20. MySQL 中的 "i\_am\_a\_dummy flag" 是做什么的?** 如果 WHERE 子句不存在,"i\_am\_a\_dummy flag" 允许 MySQL 引擎拒绝执行任何 UPDATE 或 DELETE 语句。因此,如果程序员不使用 WHERE 子句,它可以避免删除整个表的错误。 **21. 如何在 MySQL 中获取当前日期?** 要获取当前日期,可使用:SELECT CURRENT\_DATE(); **22. 使用 MySQL 时有哪些安全警报?** * 安装防病毒软件并配置操作系统的防火墙。 * 切勿将 MySQL 服务器用作 UNIX 根用户。 * 更改 root 用户名和密码限制或禁用远程访问。 **23. 如何通过 Mysqladmin 更改现有用户的密码?** Mysqladmin -u root -p password "newpassword" **24. Unix 时间戳和 MySQL 时间戳有什么区别?** Unix 时间戳和 MySQL 时间戳都存储为 32 位整数,但是 MySQL 时间戳以 YYYY-MM-DD HH:MM:SS 格式的可读格式表示。 **25. 如果在 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