mysql怎么创建试图 mysql中创建视图的语句( 二 )


mysql中如何建立视图?在查询页面用语句创建就可以 。
1、打开Navicat for MySQLmysql怎么创建试图,并登录到指定数据库 。
2、点击上方查询 。
3、点击新建查询 。
4、在空白处写上视图创建语句mysql怎么创建试图,点击左上方执行即可 。
在mysql中创建视图的例子视图是一个虚拟表 , 是sql的查询结果,其内容由查询定义 。同真实的表一样,视图包含一系列带有名称的列和行数据 , 在使用视图时动态生成 。视图的数据变化会影响到基表,基表的数据变化也会影响到视图[insert update delete ] ; 创建视图需要create view 权限,并且对于查询涉及的列有select权限;使用create or replace 或者 alter修改视图,那么还需要改视图的drop权限 。
创建视图的语法:
create view视图名asselect 字段名 from 表名;
例如:
如何在MySQL中创建视图CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
VIEW view_name [(column_list)]
AS select_statement
[WITH [CASCADED | LOCAL] CHECK OPTION]
该语句能创建新的视图,如果给定了OR REPLACE子句,该语句还能替换已有的视图 。select_statement是一种SELECT语句,它给出了视图的定义 。该语句可从基表或其他视图进行选择 。
该语句要求具有针对视图的CREATE VIEW权限,以及针对由SELECT语句选择的每一列上的某些权限 。对于在SELECT语句中其他地方使用的列,必须具有SELECT权限 。如果还有OR REPLACE子句 , 必须在视图上具有DROP权限 。
视图属于数据库 。在默认情况下 , 将在当前数据库创建新视图 。要想在给定数据库中明确创建视图,创建时 , 应将名称指定为db_name.view_name 。
mysql CREATE VIEW test.v AS SELECT * FROM t;
表和视图共享数据库中相同的名称空间,因此,数据库不能包含具有相同名称的表和视图 。
视图必须具有唯一的列名,不得有重复,就像基表那样 。默认情况下,由SELECT语句检索的列名将用作视图列名 。要想为视图列定义明确的名称,可使用可选的column_list子句 , 列出由逗号隔开的ID 。column_list中的名称数目必须等于SELECT语句检索的列数 。
SELECT语句检索的列可以是对表列的简单引用 。也可以是使用函数、常量值、操作符等的表达式 。
对于SELECT语句中不合格的表或视图 , 将根据默认的数据库进行解释 。通过用恰当的数据库名称限定表或视图名,视图能够引用表或其他数据库中的视图 。
能够使用多种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 |
+------+-------+-------+
视图定义服从下述限制:
·SELECT语句不能包含FROM子句中的子查询 。
·SELECT语句不能引用系统或用户变量 。
·SELECT语句不能引用预处理语句参数 。
·在存储子程序内,定义不能引用子程序参数或局部变量 。
·在定义中引用的表或视图必须存在 。但是,创建了视图后,能够舍弃定义引用的表或视图 。要想检查视图定义是否存在这类问题,可使用CHECK TABLE语句 。
·在定义中不能引用TEMPORARY表,不能创建TEMPORARY视图 。
·在视图定义中命名的表必须已存在 。

推荐阅读