MySQL 基本面试问题

154 阅读12分钟

MySQL 是一个开源关系数据库管理系统(RDBMS)。它既可以在网络上运行,也可以在服务器上运行。MySQL 快速、可靠且易于使用。它是开源软件。MySQL 使用标准SQL并在多种平台上编译。它是一个多线程、多用户的SQL数据库管理系统。

MySQL数据库中的数据以表的形式存储。表是相关数据的集合,由列和行组成。

MySQL具有独立的客户端,允许用户使用 SQL 直接与 MySQL 数据库交互,但更常见的是 MySQL 与其他程序一起使用来实现需要关系数据库功能的应用程序。

基本 MySQL 面试问题****

1.MySQL是什么?****

MySQL 是一个用于 Web 服务器的数据库管理系统。它可以随着网站一起成长,因为它具有高度可扩展性。当今大多数网站均由 MySQL 提供支持。

2. 使用MySQL有哪些优点?****

· 灵活性: MySQL 可在所有操作系统上运行

· 强大: MySQL 注重性能

· 企业级 SQL 功能: MySQL 一段时间以来一直缺乏高级功能,例如子查询、视图和存储过程。

· 全文索引和搜索

· 查询缓存:这有助于大大提高MySQL的速度

· 复制:一台 MySQL 服务器可以在另一台服务器上复制,从而提供许多优势

· 配置和安全

3.“数据库”是什么意思?****

数据库是存储在计算机系统中并以可快速搜索的方式组织的结构化数据集合。通过数据库,可以快速检索信息。



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 常用命令有哪些?****

命令 ****行动 ****
改变更改数据库或表
备份备份表
\C取消输入
创造创建数据库
删除从表中删除行
描述描述表的列
降低删除数据库或表
退出(ctrl+c)退出
授予更改用户权限
帮助(\h,\?)显示帮助
插入插入数据
锁定表
退出(\q)与退出相同
改名重命名表
展示列出有关对象的详细信息
来源执行一个文件
状态(\s)显示当前状态
截短清空一张桌子
开锁解锁表
更新更新现有记录
使用使用数据库

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?****

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 中,有不同的索引类型,例如常规 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 具有整数、定点、浮点和位值的数字数据类型,如下表所示。数字类型可以有符号或无符号,BIT 除外。特殊属性可以自动生成连续的整数或浮点列值,这对于需要一系列唯一标识号的应用程序非常有用。

类型名称 ****意义 ****
天音非常小的整数
小智小整数
中薄荷中型整数
INT标准整数
BIGINT大整数
十进制定点数
漂浮单精度浮点数
双倍的双精度浮点数
少量位域

17. MySQL中有哪些字符串数据类型?****

类型名称 ****意义 ****
字符固定长度的非二进制(字符)字符串
VARCHAR变长非二进制字符串
二进制固定长度的二进制字符串
二进制变长二进制字符串
小斑点非常小的BLOB(二进制大对象)
BLOB小斑点
中型斑点中型 BLOB
长块大斑点
小文本一个非常小的非二进制字符串
文本小非二进制字符串
中文本中等大小的非二进制字符串
长文本大型非二进制字符串
枚举枚举;每列值被分配一个枚举成员
一套; 每个列值被分配零个或多个集合成员
无效的SQL 中的 NULL 是用于表示缺失值的术语。表中的 NULL 值是字段中显示为空白的值。该值不同于零值或包含空格的字段。

18. MySQL 中有哪些时态数据类型?****

类型名称 ****意义 ****
日期日期值,采用“CCYY-MM-DD”格式
时间时间值,格式为 ' hh : mm :ss '
约会时间日期和时间值,格式为“CCYY-MM-DD hh : mm :ss ”
时间戳时间戳值,格式为“CCYY-MM-DD hh : mm :ss ”
年份值,采用 CCYY 或 YY 格式

示例:从表中选择订单日期为“2018-11-11”的记录:

SELECT * FROM Orders WHERE OrderDate='2018-11-11'

19. MySQL中的BLOB是什么?****

BLOB 是首字母缩写词,代表二进制大对象。它用于保存可变数量的数据。
BLOB 有四种类型:

· 小斑点

· BLOB

· 中型斑点

· 长块

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触发器?****

触发器是响应某些预定义数据库事件而执行的任务,例如在将新行添加到特定表后。具体来说,此事件涉及插入、修改或删除表数据,并且该任务可以在任何此类事件之前或紧随其后发生。 
触发器有很多用途,包括:

· 审计跟踪

· 验证

· 参照完整性强制执行

24. 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 的 InnoDB 存储引擎(这是从 5.5 版本开始的默认引擎)。如果您不确定您的代码将在哪个版本的 MySQL 上运行,您可以在创建表时强制使用它,而不是假设 InnoDB 是默认引擎,如下所示。

结论****

32. 结论****

有多种免费或低成本的数据库管理系统可供选择,例如 MySQL、PostgreSQL 或 SQLite。

当您将 MySQL 与其他数据库系统进行比较时,请考虑什么对您最重要。性能、功能(例如 SQL 一致性或扩展)、支持、许可条件和价格都是需要考虑的因素。

MySQL 是用于开发各种基于 Web 的软件应用程序的最佳 RDBMS 之一。

MySQL 提供两种不同的版本:开源 MySQL Community Server 和专有 Enterprise Server。
考虑到这些因素,MySQL 有许多吸引人的品质:

· 速度

· 使用方便

· 查询语言支持

· 能力

· 连接性和安全性

· 可移植性

· 可用性和成本

· 开放分发和源代码

MySQL MCQ 问题****

字符数据可以存储为 __

固定长度字符串

变长字符串

固定或可变长度字符串

以上都不是

MySQL 支持不同的字符集。哪个命令用来显示所有字符集?

显示字符集;

展示;

字符集;

以上都不是

以下哪一个具有最大字节数?

瓦尔查尔

字符

文本类型

Varchar 和 Char

MySQL 能够以批处理模式从文件中读取输入。这也称为非交互模式。当命令存储在文件中并从文件执行时,可以节省大量的输入和时间。
上述说法是真是假?

真的

错误的

以下哪项不是 MySQL 的特性?

开源

可移植性

速度慢

使用方便

以下哪条命令用于在 MySQL 中创建数据库?

创建数据库 db_name;

建立数据库

创建数据库 db_name;

创建数据库

用于设置 MySQL 的连接参数可以存储在选项文件中,以便每次建立连接时无需键入名称。

真的

错误的

MySQL 中什么导出表定义和内容?

mysql管理员

mysql导入

mysql转储

mysql导出

您将使用以下哪个命令将数据文件加载到表中?

mysql导入

mysql转储

mysql导出

mysql管理员

哪个声明表示“字符数据将消耗与声明相同的字节数并且正确填充”?

字符

瓦尔查尔

Char 和 Varchar

以上都不是

对于选择默认字符集以外的字符集,哪一项是正确的声明?

Varchar(20) 字符集;

Varchar(20) 字符集 utf8;

varchar(20);

以上都不是

在 MySQL 中,完全限定的表名由什么组成?

仅表名

仅数据库名称

表名后跟数据库名

数据库名称后跟表名称

sampledb如果“ ”是数据库且“ tbl”是其中的表,则以下哪条 MySQL 语句有效?

从“sampledb.member”中选择 *

SELECT * FROM sampledb.member

member.sampledb中选择*

member.sampledb中选择*