在开发岗位面试中,MySQL基本是必考环节。所以接下来我们就进入MySQL八股文环节,看看都有哪些高频考题。
MySQL 中有哪些不同的表格?
在MySQL中,可以创建多种不同类型的表格,其中一些常见的类型包括:
-
InnoDB表: InnoDB 是MySQL默认的存储引擎,它提供了事务、外键和行级锁等功能。在大多数情况下,InnoDB表是推荐的选择,特别是对于需要事务支持和数据完整性的应用程序。
-
MyISAM表: MyISAM 是MySQL的另一种存储引擎,它不支持事务和行级锁,但具有较高的性能和较低的存储开销。MyISAM表适用于读取密集型的应用程序,例如数据仓库或报表生成。
-
Memory表(也称为Heap表): Memory表是基于内存的临时表,数据存储在内存中而不是磁盘上。它们非常快速,适用于临时存储数据或者在数据量较小的情况下快速访问数据。
-
CSV表: CSV表是存储在逗号分隔值(CSV)格式文件中的表格。MySQL提供了一种引擎,允许将CSV文件直接映射到MySQL表格。CSV表格对于将大量数据导入MySQL数据库或者将MySQL数据导出为CSV格式非常有用。
-
Archive表: Archive表是一种高度压缩的表格类型,适用于存储大量历史数据或者日志。它们提供了快速的插入速度和高度的数据压缩率,但查询速度较慢。
-
Blackhole表: Blackhole表是一种特殊类型的表格,它接受但不存储任何数据。所有对Blackhole表的操作都将被忽略,这对于在主从复制环境中过滤数据或者将数据发送到外部系统非常有用。
-
Federated表: Federated表允许在一个MySQL服务器上访问另一个MySQL服务器上的数据,通过远程连接实现数据的访问和查询。
这些是MySQL中的一些常见表格类型,每种类型都有其特定的用途和优势。选择适当的表格类型取决于应用程序的需求和性能要求。
数据库设计三范式
第一范式(1NF):
字段具有原子性,不可再分。所有关系型数据库系统都满足第一范式,数据库表中的字段都是单一属性的,不可再分。例如,姓名字段,其中的姓和名必须作为一个整体,无法区分哪部分是姓,哪部分是名,如果要区分出姓和名,必须设计成两个独立的字段。
第二范式(2NF):
第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF) 必须先满足第一范式(1NF)。要求数据库表中的每个实例或行必须可以被唯一地区分。 通常需要为表加上一个列,以存储 各个实例的唯一标识。 这个唯一属性列被称为主关键字或主键。
第二范式(2NF)要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性,如果存在,那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体,新实体与原实体之间是一对多的关系。为实现区分通常需要为表加上一个列,以存储各个实例的唯一标识。 简而言之,第二范式就是非主属性非部分依赖于主关键字。
第三范式:
满足第三范式(3NF)必须先满足第二范式(2NF)。
简而言之,第三范式(3NF) 要求一个数据库表中不包含已在其它表中己包含的非主关键字信息。
所以第三范式具有如下特征:
-
1,每一列只有一个值 -
2,每一行都能区分。 -
3,每一个表都不包含其他表已经包含的非主关键字信息。
例如,订单表中只能出现用户的id, 而不能既出现用户的id, 还同时出现用户的姓名,否则,只要出现同一用户id的所有记录,它们中的姓名部分都必须严格保持一致,这就是数据冗余。
往期文章
金三银四面试题(十五):Java基础问题(6)2024-04-05
金三银四面试题(十四):Java基础问题(5)2024-04-04
金三银四面试题(十三):Java基础问题(4)2024-04-03
金三银四面试题(十二):Java基础问题(3)2024-04-02
金三银四面试题(十一):Java基础问题(2)2024-04-01
金三银四面试题(十):Java基础问题(1)2024-03-31
金三银四面试题(九):JVM常见面试题(3)2024-03-30
金三银四面试题(八):JVM常见面试题(2)2024-03-30
金三银四面试题(七):JVM常见面试题(1)2024-03-28
金三银四面试题(六):对象大小知多少2024-03-27