MySQL经典面试题笔记整理(问题和答案解析)

MySQL简介:
MySQL 是一个开源的关系数据库管理系统 (RDBMS)。它既可以在 Web 上运行,也可以在服务器上运行。MySQL 快速、可靠且易于使用。它是开源软件。MySQL 使用标准SQL并在许多平台上编译。它是一个多线程、多用户的 SQL 数据库管理系统。
MySQL 数据库中的数据以表格的形式存储。表是相关数据的集合,由列和行组成。
【MySQL经典面试题笔记整理(问题和答案解析)】MySQL 有独立的客户端,允许用户使用 SQL 直接与 MySQL 数据库交互,但更常见的是 MySQL 与其他程序一起使用来实现需要关系数据库功能的应用程序。
MySQL 的安装量超过 1100 万。
基本MySQL经典面试题和答案合集1.什么是MySQL?
MySQL 是一个用于 Web 服务器的数据库管理系统。它可以随着网站的发展而增长,因为它具有高度的可扩展性。今天的大多数网站都由 MySQL 提供支持。
2. MySQL经典面试题有哪些:使用 MySQL 有哪些优势?

  • 灵活性:  MySQL 可在所有操作系统上运行
  • Power:  MySQL 注重性能
  • 企业级 SQL 功能:一段时间以来,MySQL 一直缺乏高级功能,例如子查询、视图和存储过程。
  • 全文索引和搜索
  • 查询缓存:这有助于大大提高 MySQL 的速度
  • 复制:一个 MySQL 服务器可以复制到另一个服务器上,提供了许多优势
  • 配置和安全
3. “数据库”是什么意思?
MySQL面试题解析:数据库是存储在计算机系统中并以可快速搜索的方式组织的结构化数据集合。使用数据库,可以快速检索信息。
4. MySQL 中的 SQL 代表什么?
MySQL 中的 SQL 代表结构化查询语言。这种语言也用于其他数据库,如 Oracle 和 Microsoft SQL Server。可以使用如下命令从数据库发送请求:
SELECT title FROM publications WHERE author = ' J. K. Rowling’;
Note that SQL is not case sensitive. However, it is a good practice to write the SQL keywords in CAPS and other names and variables in a small case.

5. MySQL 数据库包含什么?
一个 MySQL 数据库包含一个或多个表,每个表包含记录或行。在这些行中是包含数据本身的各种列或字段。
6.如何与MySQL交互?
你可以通过三种主要方式与 MySQL 交互: 
  • 使用命令行
  • 通过网络界面
  • 通过编程语言
7. 什么是 MySQL 数据库查询?
查询是特定的请求或问题。可以查询数据库以获取特定信息并返回记录。
8. MySQL 有哪些常用命令?
命令动作
ALTER更改数据库或表
BACKUP备份表
\C取消输入
CREATE创建数据库
DELETE从表中删除一行
DESCRIBE描述表的列
DROP删除数据库或表
EXIT(ctrl+c)退出
GRANT更改用户权限
HELP (\h, \?)显示帮助
INSERT插入数据
LOCK锁表
QUIT(\q)与退出相同
RENAME重命名表
SHOW列出有关对象的详细信息
SOURCE执行一个文件
STATUS (\s)显示当前状态
TRUNCATE清空一张桌子
UNLOCK解锁表
UPDATE更新现有记录
USE使用数据库
9. 在MySQL中如何创建数据库?
使用以下命令创建一个名为“books”的新数据库:
CREATE DATABASE books;
10.如何使用MySQL建表?
使用以下命令使用 MySQL 创建表:
CREATE TABLE history ( author VARCHAR(128), title VARCHAR(128), type VARCHAR(16), year CHAR(4)) ENGINE InnoDB;

11.MySQL经典面试题和答案合集:如何将数据插入MySQL?
INSERT INTO 语句用于向 MySQL 表添加新记录:
INSERT INTO table_name (column1, column2, column3,...) VALUES (value1, value2, value3,...)

如果我们想为表的所有列添加值,我们不需要在 SQL 查询中指定列名。但是,值的顺序应与表中的列顺序相同。INSERT INTO 语法如下:
INSERT INTO table_name VALUES (value1, value2, value3, ...);

12. 如何从数据库中删除一列?
你可以使用 DROP 关键字删除列:
ALTER TABLE classics DROP pages;
13.如何在MySQL中创建索引?
MySQL面试题解析:在 MySQL 中,有不同的索引类型,例如常规 INDEX、PRIMARY KEY 或 FULLTEXT 索引。你可以借助索引实现快速搜索。索引通过对磁盘上的数据进行排序以更快地找到结果或告诉 SQL 引擎去哪里查找数据来提高性能。
示例:向历史表添加索引:
ALTER TABLE history ADD INDEX(author(10)); ALTER TABLE history ADD INDEX(title(10)); ALTER TABLE history ADD INDEX(category(5)); ALTER TABLE history ADD INDEX(year); DESCRIBE history;

14. 如何从 MySQL 表中删除数据?
在 MySQL 中,DELETE 语句用于从表中删除记录:
DELETE FROM table_name WHERE column_name = value_name

15、MySQL中如何查看数据库?
可以使用以下命令查看 MySQL 服务器主机上的所有数据库:
mysql> SHOW DATABASES;  
16. MySQL经典面试题有哪些:MySQL 中的数值数据类型有哪些?
MySQL 具有整数、定点、浮点和位值的数字数据类型,如下表所示。数字类型可以是有符号或无符号的,BIT 除外。一个特殊的属性可以自动生成连续的整数或浮点列值,这对于需要一系列唯一标识号的应用程序非常有用。
类型名称意思
TINYINT非常小的整数
SMALLINT小整数
MEDIUMINT中型整数
INT标准整数
BIGINT大整数
DECIMAL定点数
FLOAT单精度浮点数
DOUBLE双精度浮点数
BIT位域
17. MySQL 中有哪些字符串数据类型?
类型名称意义
CHAR定长非二进制(字符)字符串
VARCHAR变长非二进制字符串
BINARY定长二进制串
VARBINARY变长二进制串
TINYBLOB非常小的 BLOB(二进制大对象)
BLOB小斑点
MEDIUMBLOB中型 BLOB
LONGBLOB大BLOB
TINYTEXT一个非常小的非二进制字符串
TEXT小的非二进制字符串
MEDIUMTEXT中等大小的非二进制字符串
LONGTEXT大非二进制字符串
ENUM枚举;分配每一列值,一个枚举成员
SET一个集合;   每个列值被分配零个或多个集合成员
NULLSQL 中的 NULL 是用于表示缺失值的术语。表中的 NULL 值是字段中显示为空白的值。此值不同于零值或包含空格的字段。
18. MySQL 中的时态数据类型有哪些?
类型名称意义
DATE'CCYY-MM-DD' 格式的日期值
TIME时间值,采用“hh:mm:ss”格式
DATETIME日期和时间值,采用 'CCYY-MM-DD hh : mm :ss ' 格式
TIMESTAMP时间戳值,采用“CCYY-MM-DD hh : mm :ss”格式
YEAR年份值,采用 CCYY 或 YY 格式
示例:从表中选择订单日期为“2018-11-11”的记录:
SELECT * FROM Orders WHERE OrderDate='2018-11-11'

19. MySQL中的BLOB是什么?
BLOB 是代表二进制大对象的首字母缩写词。它用于保存可变数量的数据。
BLOB 有四种类型:
  • TINYBLOB
  • BLOB
  • MEDIUMBLOB
  • LONGBLOB
BLOB 可以保存大量数据。例如 - 文档、图像,甚至视频。如果需要,你可以将完整的小说作为文件存储在 BLOB 中。
20.如何在MySQL中添加用户?
你可以通过使用 CREATE 命令并指定必要的凭据来添加用户。例如:
CREATE USER ‘testuser’ IDENTIFIED BY ‘sample password’;

中级MySQL经典面试题和答案合集21.什么是MySQL“视图”?
在 MySQL 中,视图由一组行组成,如果执行特定查询,则返回这些行。这也称为“虚拟表”。视图使检索通过别名提供查询的方式变得容易。 
视图的优点是:
  • 简单
  • 安全
  • 可维护性
22. MySQL 中如何创建和执行视图?
创建视图是使用 CREATE VIEW 语句完成的。举个例子:
CREATE [ OR REPLACE] [ ALGORITHM = {MERGE | TEMPTABLE | UNDEFINED }] [ DEFINER = { user | CURRENT_USER }] [ SQL SECURITY { DEFINER | INVOKER }] VIEW view_name [ (column_list)] AS select_statement [ WITH [ CASCADED | LOCAL] CHECK OPTION]

23. 什么是 MySQL 触发器?
MySQL面试题解析:触发器是响应某些预定义的数据库事件而执行的任务,例如在将新行添加到特定表之后。具体来说,此事件涉及插入、修改或删除表数据,并且该任务可以在任何此类事件之前或之后立即发生。
触发器有很多用途,包括:
  • 审计跟踪
  • 验证
  • 参照完整性实施
24. MySQL经典面试题有哪些:MySQL 中可能有多少个触发器?
MySQL数据库中允许使用的触发器有六个:
  • 插入前
  • 插入后
  • 更新前
  • 更新后
  • 删除前
  • 删除后
25.什么是MySQL服务器?
服务器 mysqld 是 MySQL 安装的中心;它执行对数据库和表的所有操作。
26. 什么是 MySQL 客户端和实用程序?
有几个 MySQL 程序可用于帮助你与服务器通信。对于管理任务,这里列出了一些最重要的任务:
?  mysql  — 一个交互式程序,可让你将 SQL 语句发送到服务器并查看结果。你还可以使用 mysql 执行批处理脚本(包含 SQL 语句的文本文件)。
?  mysqladmin  — 用于执行任务的管理程序,例如关闭服务器、检查其配置或在其运行不正常时监视其状态。
?  mysqldump  — 一种用于备份数据库或将数据库复制到另一台服务器的工具。
?  mysqlcheck 和myisamchk —帮助你执行表检查、分析和优化以及在表损坏时进行修复的程序。mysqlcheck 适用于 MyISAM 表,并在某种程度上适用于其他存储引擎的表。myisamchk 仅用于 MyISAM 表。
27. MySQL 中使用的关系类型有哪些?
MySQL中的关系分为三类:
  • 一对一:通常,当两个项目具有一对一关系时,你只需将它们作为列包含在同一个表中。
  • 一对多:当一个表中的一行链接到另一个表中的许多行时,就会发生一对多(或多对一)关系。
  • 多对多:在多对多关系中,一个表中的许多行链接到另一个表中的许多行。要创建此关系,请添加第三个表,其中包含来自其他每个表的相同键列
高级MySQL经典面试题和答案合集28. 能解释一下MySQL的逻辑架构吗?
顶层包含大多数基于网络的客户端/服务器工具或服务器所需的服务,例如连接处理、身份验证、安全性等。
第二层包含了 MySQL 的大部分大脑。这有用于查询解析、分析、优化、缓存和所有内置函数的代码。
第三层包含存储引擎,负责存储和检索 MySQL 中存储的数据。
29. MySQL 中的缩放是什么?
在 MySQL 中,扩容实际上是处理负载的能力,从几个不同的角度来考虑负载是很有用的,例如:
  • 数据量
  • 用户数
  • 用户活动
  • 相关数据集的大小
30. 什么是 SQL 中的 Sharding?
将大表分解为分布在多个服务器上的较小块(称为分片)的过程称为分片。 
Sharding 的好处是,由于分片后的数据库一般比原来的小很多;查询、维护和所有其他任务都快得多。
31. MySQL经典面试题有哪些:MySQL 中的事务存储引擎是什么?
为了能够使用 MySQL 的事务工具,你必须使用 MySQL 的 InnoDB 存储引擎(这是从 5.5 版开始的默认设置)。如果你不确定你的代码将在哪个版本的 MySQL 上运行,而不是假设 InnoDB 是默认引擎,你可以在创建表时强制使用它,如下所示。
结论32. 结论
有多种免费或低成本的数据库管理系统可供选择,例如 MySQL、PostgreSQL 或 SQLite。
当你将 MySQL 与其他数据库系统进行比较时,请考虑对你来说最重要的是什么。性能、特性(例如 SQL 一致性或扩展)、支持、许可条件和价格都是需要考虑的因素。
MySQL 是用于开发各种基于 Web 的软件应用程序的最佳 RDBMS 之一。
MySQL 提供两个不同版本:开源 MySQL 社区服务器和专有企业服务器。
考虑到这些因素,MySQL 具有许多吸引人的品质:
  • 速度
  • 便于使用
  • 查询语言支持
  • 能力
  • 连接性和安全性
  • 可移植性
  • 可用性和成本
  • 开放分发和源代码
几个 MySQL 参考:
https://www.mysql.com
https://learning.oreilly.com/library/view/learning-mysql/0596008643/

    推荐阅读