视图

来源:互联网 发布:鬼气凛然实体书淘宝 编辑:程序博客网 时间:2024/06/08 03:52

     数据库中只存放了视图的定义,并没有存放视图中的数据。

     MYsql视图不支持输入参数的功能,交互性有欠缺。

一、创建视图

   create [algorithm={undefined|merge|temptable}] view 视图名 [(属性清单)] as select 语句 [with [cascaded|local] check option];

  ! 查询create view及select权限语句: select select_priv,create_priv from mysql.user where user='用户名';

  •   可选参数algorithm,表示视图选择的算法 (1. undefined表示Mysql将自动选择所要使用的算法;2. merge表示将使用视图的语句与视图定义合并起来,使得视图定义的某一部分取  代语句的对应部分;3. temptable表示将视图结果存入临时表,然后使用临时表执行语句;
  •   可选参数“属性清单”,指定了视图中各个属性的名词,默认与select中查询属性相同;
  •   “select查询语句”是一个完整查询语句,表示从某个表中查出某些满足条件的记录,将这些记录导入视图中;
  •   可选参数“with check option"表示更新视图时要保证在该视图的权限范围之内(1. cascaded表示更新视图时要满足所有相关视图和表的条件,为默认值;2. local表示更新视图时,要满足该视图本身的定义条件即可。

  (一) 在单表上创建视图

    create view 视图名 as select * from 表名;

  (二) 在多个表上创建视图

    create algorithm=merge view 视图名(字段1,字段2,...) as select 表1.字段1,表2.字段2,.... from 表1,表2 where 表1.id=表2.id with local check option;

二、查看视图

 1.describe语句

      desc 视图名

 2.show table status语句   (只有comment属性显示”view“,很少使用)

      show table status like '视图名' \G

 3.show create view语句   (查看所有信息)

       show create view 视图名

 4.在views表中查看视图详细信息

       select * from information_schema.views;

三、修改视图

  1.create or replace view 语句   (视图不存在时创建;存在时修改)

       create or replace [algorithm={undefined|merge|temptable}] view 视图名 [(属性清单)] as select 语句 [with [cascaded|local] check option];

  2.alter 语句  (只能修改已经存在的视图)

       alter [algorithm={undefined|merge|temptable}] view 视图名 [(属性清单)] as select 语句 [with [cascaded|local] check option];

四、更新视图

  updata 视图名 set 字段=‘ ’;

 !!诸多限制条件

  1.  视图中包含sum()、count()、max()和min()函数;
  2.  视图中包含union、union all、distinct、group by和havig等关键字;
  3.  常量视图
  4.  视图中select语句包含子查询;
  5.  由不可更新的视图导出的视图;
  6.  创建视图时,algorithm=temptable(系统默认临时表类型不能更新);
  7.  视图对应表上存在没有默认值的列,而且该列没有包含在视图中
  8.  等等。。。。。

五、删除视图

   drop view [if exists] 视图名列表 [restrict|cascade]

   ! 查看drop权限语句 : select drop_priv from mysql.user where user='用户名';

0 0