MySQL视图和文件目录

本文详细介绍了数据库中的视图概念,视图作为虚拟表,允许对表进行选择性展示和操作。同时,讲解了MySQL中不同存储引擎如InnoDB和MyISAM的文件结构和数据存储方式,包括系统表空间和独立表空间的概念。此外,还提及了memory引擎的内存表特性。
摘要由CSDN通过智能技术生成

视图:

视图是一种类型的存储对象,是一个虚拟表,是在表或者其他视图的基础上,使用select语句来定义的。查询视图就等效于查询定义它的那条语句,只是视图将细节隐藏起来了。视图定义里可以包含表达式计算和链接等操作。视图像一个表,但是他不包含数据。

create view [视图名称]  as   [语句];

在使用视图时,只能引用在视图定义里列出的那些列。也就是说,即使某个列属于基表,但它未列在视图定义里,你也不能引用它。

在默认的情况下,视图的列名与其select 语句里 列出的输出列明相同。如果想要显示地改用其他的列名,那么需要在视图定义里,紧跟视图名字的后面用括号列出那些新名字。当引用此视图时,必须使用括号里给出的列名。

create view  [视图名称]  (更改的列名) as [语句]  

有些视图是可更新的,你可以通过视图,对底层表里的那些行实现插入、删除、或者更新操作。如果要让一个视图可更新,那么它必须直接映射到表上,即对视图某行的任何操作必须与底层表中某行的操作相对应。

 

文件目录:

 

MySQL服务器,服务器主程序mysqld是MySQL数据库系统的核心,负责管理所有的数据库和表。

 

每个数据库在数据目录下都对应有一个数据库目录。

数据库里的表、视图和触发器都对应数据库目录中的文件

MySQL支持多种存储引擎,如InnoDB,MyISAM,和memory 。对于每一个表,MySQL在磁盘上至少会使用一个文件来表示即.frm格式文件,其中包含表结构的描述,服务器会负责创建.frm文件,而各个存储引擎会创建一些附加文件,用于保存数据行和索引信息。

InnoDB

每个InnoDB表都有一个.frm文件,其中包含了表结构的定义,对于表的内容,InnoDB提供了两种方式,都是基于表空间实现的。

系统表空间:这种表空间有数据目录里的一个或多个大文件构成。表空间的这些组成文件共同形成了一个在逻辑上连续不断的存储区域,其大小为各个组成文件大小之和。默认情况下,InnoDB会将其表存储到这个系统表空间。对于这类表,唯一与表特定相关的文件是.frm文件

独立婊空间:通过配置,InnoDB可以实现每个表一个表空间的存储模式。在这种情况下,每个InnoDB表在数据库目录里都会有两个与表特定相关的文件,即.frm文件和包含表数据和索引的.ibd文件.

系统表空间还有另一个用途,InnoDB在其内部维护着一个数据字典,其中包含了与每个表有关的信息。这个字典会保存在系统表空间里,因此,即使你是用独立表空间来存储表的内容,系统表空间也是必须的。

MyISAM

MySQL会在包含高表的那个数据库所在的目录里,为每个MyISAM表创建三个文件。其中每个文件的基本名都等于表名,其扩展名则表明了改文件的用途。

例如:一个名为mytbl的MyISAM表将有3个文件:

mytbl.frm  格式文件,其中包含对该表结构的描述.

mytbl.MYD  数据文件,其中存储了该表各行的内容。

mytbl.MYI  索引文件,其中包含了该表的所有索引信息

memory

memory表是一种内存表。每个memory表在数据库目录里独有一个描述其格式的.frm文件。除此之外,文件系统里就没有其他与之对应的东西了,因为服务器会把memory表的数据和索引全部存储在内存里,而不是存储在磁盘里。当服务器关闭时,memory表的内容也会随之丢失。在服务器重启之后,这个表仍然存在(因为它的.frm文件存在),只是其内容为空。

 

注:如果本篇博客有任何错误和建议,欢迎伙伴们留言,你快说句话啊!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值