MySQL面试题

《林老师带你学编程》知识星球是由多个工作10年以上的一线大厂开发人员联合创建,希望通过我们的分享,帮助大家少走弯路,可以在技术的领域不断突破和发展。

🔥 具体的加入方式:

1.什么是数据库?

数据库是“按照数据结构来组织、存储和管理数据的仓库” 。是一个长期存储在计算机内的、有组织的、 可共享的、统一管理的大量数据的集合。

2.如何查看某个操作的语法?

比如看建表的语法:

mysql> ? create table
Name: \'CREATE TABLE\'
Description:
Syntax:
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
 (create_definition,…)
 [table_options]
 [partition_options]
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
 [(create_definition,…)]
 [table_options]
 [partition_options]
 [IGNORE | REPLACE]
 [AS] query_expression
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name

3.MySql的存储引擎有哪些?

MyISAM 、 InnoDB 、BDB 、MEMORY 、MERGE 、EXAMPLE 、NDB Cluster 、 ARCHIVE 、CSV、

BLACKHOLE 、FEDERATED。

Tips:InnoDB和BDB提供事务安全表,其他存储引擎都是非事务安全表。

4.常用的2种存储引擎?

1.Myisam是Mysql的默认存储引擎,当create创建新表时,未指定新表的存储引擎时,默认使用 Myisam。

每个MyISAM 在磁盘上存储成三个文件。文件名都和表名相同,扩展名分别是 .frm (存储表定义) 、.MYD (MYData,存储数据) 、.MYI (MYIndex,存储索引)。

数据文件和索引文件可以放置在不同的目录,平均分布io,获得更快的速度。

2.InnoDB 存储引擎提供了具有提交、回滚和崩溃恢复能力的事务安全。但是对比 Myisam 的存储引 擎, InnoDB 写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引。

6.可以针对表设置引擎吗?如何设置?

可以, ENGINE=xxx 设置引擎。

代码示例:

create table person(
 id int primary key auto_increment,
 username varchar(32)
) ENGINE=InnoDB

6.选择合适的存储引擎?

选择标准: 根据应用特点选择合适的存储引擎,对于复杂的应用系统可以根据实际情况选择 多种存储引擎 进行组合.

下面是常用存储引擎的适用环境:

1.  MyISAM: 默认的 MySQL 插件式存储引擎, 它是在 Web 、 数据仓储和其他应用环境下最常使用的存 储引擎之一。

2.  InnoDB:用于事务处理应用程序,具有众多特性,包括 ACID 事务支持。

3.  Memory: 将 所有数据保存在RAM 中,  在 需要快速查找引用和其他类似数据的环境下,可 提供极快 的访问。

4.  Merge:允许 MySQL DBA 或开发人员将一系列等同的 MyISAM 表以逻辑方式组合在一起,并作为 1 个 对象引用它们。对于诸如数据仓储等 VLDB 环境十分适合。

7.选择合适的数据类型

前提: 使用适合存储引擎。

选择原则: 根据选定的存储引擎,确定如何选择合适的数据类型下面的选择方法按存储引擎分类 :

1.  MyISAM 数据存储引擎和数据列

MyISAM数据表,最好使用固定长度的数据列代替可变长度的数据列。

2.  MEMORY存储引擎和数据列

MEMORY数据表目前都使用固定长度的数据行存储,因此无论使用CHAR或VARCHAR列都没有关 系。两者都是作为CHAR类型处理的。

3.  InnoDB 存储引擎和数据列

建议使用 VARCHAR类型

对于InnoDB数据表,内部的行存储格式没有区分固定长度和可变长度列(所有数据行 都使用指向数据 列值的头指针) ,因此在本质上,使用固定长度的CHAR列不一定比使 用可变长度VARCHAR列简

单。  因而,  主要的性能因素是数据行使用的存储总量。   由于 CHAR 平均占用的空间多于

VARCHAR,因此使用VARCHAR来最小化需要处理的数据行的存储总 量和磁盘I/O是比较好的。

8.char & varchar

保存和检索的方式不同。它们的最大长度和是否尾部空格被保留等方面也不同。在存储或检索过程中不 进行大小写转换。

9.Mysql字符集

mysql服务器可以支持多种字符集 (可以用show character set命令查看所有mysql支持 的字符集)  ,在同 一台服务器、同一个数据库、甚至同一个表的不同字段都可以指定使用不 同的字符集。

mysql的字符集包括字符集(CHARACTER)和校对规则(COLLATION)两个概念。

10.如何选择字符集?

建议在能够完全满足应用的前提下,尽量使用小的字符集。因为更小的字符集意味着能够节省空间、   减

少网络传输字节数, 同时由于存储空间的较小间接的提高了系统的性能。

有很多字符集可以保存汉字,比如 utf8 、gb2312 、gbk、latin1 等等,但是常用的是 gb2312 和 gbk。因 为 gb2312 字库比 gbk 字库小,有些偏僻字(例如:洛)不能保存,因此 在选择字符集的时候一定要权衡这 些偏僻字在应用出现的几率以及造成的影响,   不能做出肯 定答复的话最好选用 gbk。

11.什么是索引?

查看更多