• 数据库之mysql 视图


    视图,把基本表的某些数据组合起来构成一个虚拟表的一种形式,之所以叫虚拟,是因为只有当视图用于一条语句中的时候,它才能存在。同时如果对视图中的数据进行修改,会同时修改到基本表中的数据。
    创建视图:
    create [or replace] view view_name [column1,column2..]
    as 表的表达式
    as:
    创建一个视图towns,1.包含了 players 表中的所有城市名,2.接下来并查询这个虚拟表的内容
    1. create view towns as
        select town
        from players
    
    2. select * from towns
    以上是先创建视图towns,再查询视图,其中视图的列名称没有显式写出来,所以默认用的是后面查询的字段作了列的名称字段,as
    之后的查询结果作为视图的数据,可以显式指定视图列名
    as:
    create view cplays (uid,name,job) as
    select id,name,prefession
    from works
    
    从视图 cplays 中删除 id = 100的人
    delete from cplays
    where uid = 100
    此时基本表中的 id = 100的人同时会被删除 
    
    允许select 中的一个表达式为函数或者计算
    as:
    create or replace view result as
    select grand, count(*)
    from score
    group by grand
    查询以上视图时:
    select * from result
    返回的字段有 grand,count(*)
    or replace 是当视图存在时,则会更新这个视图
    
    更新视图
    如果没有约束的话,如下:
    create view t_view as
    select id,name,job
    from test.work
    where id < 4;
    
    update t_view set name = 'xxx'
    where id = 4;
    以上语句会使 id = 4 的name 变为
    'xxx',没有问题,但当加上约束条件时,如果不满足条件,则不允许相应的操作
    as:
    create view t_view as
    select id,name,job
    from test.work
    where id < 4
    with check option;
    
    update t_view set name = 'xxx'
    where id = 4;
    以上更新会失败,因为视图用了约束,后面的所查询的 id
    不在创建的视图中,所以无法更新相关数据,又因为视图是可以嵌套的,所以如果只当对前的视图的操作作检测,用
    with local check option
    约束条件即可,此时只会对当前的视图条件作检测,如果是对其相关的嵌套的视图也作检查,则约束条件用 with
    [cascaded] check option,默认是 cascaded 的
    
    删除视图
    drop view [if exitsts] view_name
    
  • 相关阅读:
    数据库 封装类CppSQLite3的helloword VC6
    数据库 sqlite 进阶
    数据库 sqlite3_get_table,sqlite3_free_table
    数据库 sqlite3_open,sqlite3_exec,slite3_close
    数据库 SQLite C++ 接口
    数据库 如何在VC6下使用sqlite3
    MFC CButtonST使用技巧(一)(二)(三)
    MFC CButtonST简介
    MFC CButtonST 在你的程序中如何使用CButtonST类
    MFC静态分割后锁定分隔条/限制分隔条的移动范围 方法1
  • 原文地址:https://www.cnblogs.com/lin3615/p/4154543.html
Copyright © 2020-2023  润新知