MySQL 创建一个视图

示例

礼遇

CREATE VIEW语句需要该视图的CREATE VIEW特权,以及SELECT语句选择的每个列的某些特权。对于SELECT语句中其他地方使用的列,您必须具有SELECT特权。如果存在OR REPLACE子句,则您还必须具有该视图的DROP特权。CREATE VIEW也可能需要SUPER特权,具体取决于DEFINER值,如本节后面所述。

引用视图时,将进行特权检查。

视图属于数据库。默认情况下,将在默认数据库中创建一个新视图。要在给定的数据库中显式创建视图,请使用标准名称

例如:

db_name.view_name

mysql> CREATE VIEWtest.vAS SELECT * FROM t;

注–在数据库中,基本表和视图共享相同的名称空间,因此基本表和视图不能具有相同的名称。

视图可以:

  • 由多种SELECT语句创建

  • 参考基本表或其他视图

  • 使用联接,UNION和子查询

  • SELECT甚至不需要引用任何表

另一个例子

下面的示例定义一个视图,该视图从另一个表中选择两个列以及从这些列中计算出的表达式:

mysql> CREATE TABLE t (qty INT, price INT);

mysql> INSERT INTO t VALUES(3, 50);

mysql> CREATE VIEW v AS SELECT qty, price, qty*price AS value FROM t;

mysql> SELECT * FROM v;

+------+-------+-------+

| qty  | price | value |

+------+-------+-------+

|    3 |    50 |   150 |

+------+-------+-------+

限制条件

  • 在MySQL 5.7.7之前,SELECT语句不能在FROM子句中包含子查询。

  • SELECT语句不能引用系统变量或用户定义的变量。

  • 在存储的程序中,SELECT语句不能引用程序参数或局部变量。

  • SELECT语句不能引用准备好的语句参数。

  • 定义中引用的任何表或视图都必须存在。创建视图后,可以删除
    定义所引用的表或视图。在这种情况下,使用视图会导致错误。要检查视图定义中是否存在此类问题,请使用CHECK TABLE语句。

  • 该定义不能引用TEMPORARY表,也不能
    创建TEMPORARY视图。

  • 您无法将触发器与视图关联。

  • SELECT语句中列名的别名将根据最大列长度64个字符(而不是最大别名
    长度256个字符)进行检查。

  • AVIEW可能会优化,也可能会不优化SELECT。优化的可能性不大。

以上是 MySQL 创建一个视图 的全部内容, 来源链接: utcz.com/z/340685.html

回到顶部