不论是为了查询或维护,如果你很常需要使用到同一个查询叙述,你就可以考虑建立一个View元件把这个查询叙述储存起来。下列是建立View元件基本的语法:
如果你很常执行查询「每个地区GNP最高的国家」资料,这样的需求可以使用子查询来完成,为了不想要每次重复输入这个查询叙述,你可以建立一个名称「CountryMaxGNP」的View元件,这样以后要执行这个查询的时候就方便多了:
在上列建立View元件的范例中,只有「Name」与「GNP」两个栏位,如果想要在已经建立好的「CountryMaxGNP」的View元件中,再加入新的「Code」栏位的话:
如果需要修改一个已经建立好的View元件,你就要加入「OR REPLACE」的设定,这样才不会出现错误讯息:
如果想要查询一个View元件中会传回哪些栏位的资料,可以使用「DESCRIBE」或是比较简短的「DESC」指令:
下列是MySQL关于View元件的规定与限制:
储存在View中的查询叙述也有下列的规定:
注:「TEMPORARY」表格在「表格与索引、建立表格、建立暂存表格」中讨论。「Triggers」、定义变数、「Procedure」与「Prepared statement」在后面都会有章节详细的讨论。
结合查询在关联式资料库中几乎是必要的一种查询,以下列查询「国家与城市人口比例」的需求来说,就需要从「country」与「city」表格中查询必要的栏位资料:
如果会经常执行这个结合查询的话,你应该会很希望把它储存为View元件:
你不会在一个表格中,为不同的两个栏位取一样的名称;在使用查询叙述提供View元件的栏位时,也要注意名称重复的问题,虽然在单纯的结合查询回传的资料中,有一样的栏位名称并不会造成错误。要解决这个错误有两种方式,第一种是在查询叙述的「SELECT」子句中,自己为名称重复的栏位取不同的栏位别名:
另外一种方式可以在建立View元件的时候,另外指定View元件的栏位名称:
这样的作法不用修改查询叙述,依照查询叙述回传的栏位顺序,另外指定View元件使用的栏位名称: