zoukankan      html  css  js  c++  java
  • mysql之视图

    mysql视图创建的语句,就不过多赘述,下面提供一个示例。主要讲的是mysql创建视图时的一些特性。

    创建视图示例:

    create or replace view staff_list_view  as
    select s.staff_id,s.first_name,s.last_name,a.address
    from staff as s, address as a
    where s.address_id = a.address_id

    mysql创建视图的时候有一些限制。例如,在from关键字后面不能包含子查询,这和其他的数据库是不同的,如果视图时从其他数据库迁移过来,那么可能需要因此做一些改变,可以将子查询的内容先定义为一个视图,然后对该视图再创建视图就可以实现类似的功能。

    一下类型的视图是不可以更新的。

    1、包含一下关键字的sql语句:聚合函数(sum、min、max、count等)、distinct、group by、having、union、union all。
    2、常量视图
    3、select中包含子查询
    4、join
    5、from一个不能更新的视图
    6、where字句的子查询引用了from字句中的表。  

    with [cascaded | local] check option
    1、local只要满足本视图的条件就可以更新。

    2、cascaded则必须满足所有针对该视图的所有视图条件才可以更新。没有写cascaded 还是 local时,默认是cascaded 。

    执行show tables命令时,不仅显示表的名字,同时也会显示视图的名字,而不存在单独显示视图的show views命令。

    同样在使用show tables status命令时,不但可以显示表的信息,同时也可以显示视图的信息。

    show table status like 'staff_list';

    查询某个视图的定义

    show create view staff_list;

    通过系统表information_schema.views也可以查看视图的相关信息。

    select * from views where table_name = 'staff_list';
  • 相关阅读:
    poj 1700 Crossing River 过河问题。贪心
    Alice's Print Service
    POI 2000 ------Stripes
    Uva 1378
    hdu 3068 最长回文
    bnu Game 博弈。
    链栈的C语言实现
    链栈的C语言实现
    顺序栈C语言实现
    顺序栈C语言实现
  • 原文地址:https://www.cnblogs.com/songcuiting/p/10395387.html
Copyright © 2011-2022 走看看