MySQL——创建视图

    创建视图是指在已经存在的数据库表上建立视图。视图可以建立在一张表中,也可以建立在多张表中。

一.    查看用户是否具有创建视图的权限

    创建视图需要具有  CREATE  VIEW  的权限,同时应该具有查询涉及的列的  SELECT  权限。可以使用  SELECT  语句来查询这些权限信息,查询语法如下:

    SELECT   Select_priv, Create_view_priv  FROM mysql.user  WHERE  user='用户名';

    Select_priv  属性表示用户是否具有  SELECT 权限,Y 表示拥有 SELECT  权限,N 表示没有。
    Create_view_priv 属性表示用户是否具有  CREATE  VIEW权限; mysql.user 表示  MySQL 数据库下面的  user 表。

    "用户名"  参数表示要查询是否拥有  DROP 权限的用户,该参数需要用单引号引起来。


    【例】查询  MySOL 中,root 用户是否具有创建视图的权限,SQL语句如下:
mysql> SELECT  Select_priv, Create_view_priv  FROM  mysql.user  WHERE  user='root';
+-------------+------------------+
| Select_priv | Create_view_priv |
+-------------+------------------+
| Y           | Y                |
+-------------+------------------+


二.  创建视图

    语法如下:

     CREATE  [ALGORITHM={  UNDEFINED |  MERGE  |  TEMPTABLE }]
                   VIEW   view_name  [(  column_list )]
                   AS SELECT_statement

                   [ WITH  |  [ CASCADED |  LOCAL  ]  CHECK OPTION];

    ALGORITHM  是可选参数,表示视图选择的算法。ALGORTHIM参数的取值有3个,分别是UNDEFINED、MERGE和TEMPTABLE。UNDEFINED 表示 MySQL  将自动选择算法M;MERGE 表示将使用的视图语句与视图定义合并,使得视图定义的某一部分取代语句对应的部分; TEMPTABLE  表示将视图的结果存入临时表,然后用临时表来执行语句。

    view_name  参数表示要创建的视图名称。

    column_list  是可选参数,指定视图中各个属性的名词,默认情况下与 SELECT 语句中查询的属性相同。

    SELECT_statement  参数是个完整的查询语句,表示从某个表中查出某些满足条件的记录,将这些记录导入视图中。

    WITH CHECK OPTION 是可选参数,表示更新视图时要保证在该视图的权限范围之内。

    CASCADED 与 LOCAL 为可选参数,CASCADED 为默认值。表示更新视图时要满足所有相关视图和表的条件;LOCAL 表示更新视图时满足该视图本身定义的条件即可。

   

    视图属于数据库。在默认情况下,将在当前数据库中创建新视图。要想在给定数据库中明确创建视图,创建时应将视图名称设置为  db_name.view_name。


1.  在单表上创建视图

【例】在  t  表格上创建一个名为  view_t  的视图。

创建基本表并插入数据,SQL语句如下:

 1
mysql> CREATE  TABLE  t (quantity  INT,  price  INT);
Query OK, 0 rows affected (0.56 sec)

mysql> INSERT  INTO  t  VALUES  (3, 50);
Query OK, 1 row affected (0.07 sec)

创建视图,SQL语句如下:

mysql> CREATE VIEW  view_t  AS  SELECT quantity,  price,  quantity *price   FROM t;
Query OK, 0 rows affected (0.91 sec)

查看执行结果:

mysql> SELECT  *  FROM  view_t;
+----------+-------+-----------------+
| quantity | price | quantity *price |
+----------+-------+-----------------+
|        3 |    50 |             150 |
+----------+-------+-----------------+
也可通过指定视图字段名称来创建视图。


【例】在  t  表格上创建一个名为  view_t2  的视图。

创建视图,SQL语句如下:

mysql> CREATE VIEW  view_t2(qty,price,total)  AS  SELECT quantity,  price,  quantity *price   FROM t;
Query OK, 0 rows affected (0.04 sec)

查看执行结果:

mysql> SELECT  *  FROM  view_t2;
+------+-------+-------+
| qty  | price | total |
+------+-------+-------+
|    3 |    50 |   150 |
+------+-------+-------+

2.  在多表上创建视图

【例】在表  student  和表  stu_info  上创建视图  stu_glass。

首先创建如下的表:

mysql> select *  from  student;
+------+----------+
| s_id | name     |
+------+----------+
|    1 | wanglin1 |
|    2 | gaoli    |
|    3 | zhanghai |
+------+----------+
mysql> select *  from  stu_info;
+------+--------+----------+
| s_id | glass  | addr     |
+------+--------+----------+
|    1 | wuban  | henan    |
|    2 | liuban | hebei    |
|    3 | qiban  | shandong |
+------+--------+----------+

创建视图  stu_glass,  SQL语句如下:

mysql> SELECT  *  from  stu_glass;
+------+----------+--------+
| id   | name     | glass  |
+------+----------+--------+
|    1 | wanglin1 | wuban  |
|    2 | gaoli    | liuban |
|    3 | zhanghai | qiban  |
+------+----------+--------+


【注】参考于清华大学出版社《MySQL数据库应用案例课堂》2016年1月第1版

你可能感兴趣的:(MySQL)