返回介绍

2 建立需要的 View

发布于 2025-02-20 13:00:31 字数 3476 浏览 0 评论 0 收藏 0

不论是为了查询或维护,如果你很常需要使用到同一个查询叙述,你就可以考虑建立一个 View 元件把这个查询叙述储存起来。下列是建立 View 元件基本的语法:

mysql_11_snap_06

如果你很常执行查询“每个地区 GNP 最高的国家”资料,这样的需求可以使用子查询来完成,为了不想要每次重复输入这个查询叙述,你可以建立一个名称“CountryMaxGNP”的 View 元件,这样以后要执行这个查询的时候就方便多了:

mysql_11_snap_07

在上列建立 View 元件的范例中,只有“Name”与“GNP”两个字段,如果想要在已经建立好的“CountryMaxGNP”的 View 元件中,再加入新的“Code”字段的话:

mysql_11_snap_08

如果需要修改一个已经建立好的 View 元件,你就要加入“OR REPLACE”的设定,这样才不会出现错误讯息:

mysql_11_snap_09

如果想要查询一个 View 元件中会传回哪些字段的资料,可以使用“DESCRIBE”或是比较简短的“DESC”指令:

mysql_11_snap_10

下列是 MySQL 关于 View 元件的规定与限制:

  • 在同一个数据库中,View 的名称不可以重复,也不可以跟表格名称一样
  • View 不可以跟 Triggers 建立联结

储存在 View 中的查询叙述也有下列的规定:

  • 查询叙述中只能使用到已存在的表格或 View
  • “FROM”子句中不可以使用子查询
  • 不可以使用“TEMPORARY”表格
  • 不可以使用自行定义的变量、Procedure 与 Prepared statement 参数

注:“TEMPORARY”表格在“表格与索引、建立表格、建立暂存表格”中讨论。“Triggers”、定义变量、“Procedure”与“Prepared statement”在后面都会有章节详细的讨论。

结合查询在关联式数据库中几乎是必要的一种查询,以下列查询“国家与城市人口比例”的需求来说,就需要从“country”与“city”表格中查询必要的字段资料:

mysql_11_snap_11

如果会经常执行这个结合查询的话,你应该会很希望把它储存为 View 元件:

mysql_11_snap_12

你不会在一个表格中,为不同的两个字段取一样的名称;在使用查询叙述提供 View 元件的字段时,也要注意名称重复的问题,虽然在单纯的结合查询回传的资料中,有一样的字段名称并不会造成错误。要解决这个错误有两种方式,第一种是在查询叙述的“SELECT”子句中,自己为名称重复的字段取不同的字段别名:

mysql_11_snap_13

另外一种方式可以在建立 View 元件的时候,另外指定 View 元件的字段名称:

mysql_11_snap_14

这样的作法不用修改查询叙述,依照查询叙述回传的字段顺序,另外指定 View 元件使用的字段名称:

mysql_11_snap_15

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文