MySQL面试题
- 直接访问链接:https://t.zsxq.com/14F2uGap7
- 微信扫码下图:
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.什么是索引?