视图:
视图是一种类型的存储对象,是一个虚拟表,是在表或者其他视图的基础上,使用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文件存在),只是其内容为空。