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

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论