zoukankan      html  css  js  c++  java
  • MySQL中视图

      视图是指计算机数据库中的视图,是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成,仅仅是用来产看储存在别处的数据的一种设施。

    创建视图

    >CREATE VIEW 视图名(列1,列2...) AS SELECT (列1,列2...) FROM ...;

      如果在创建视图的时候制定了“WITH CHECK OPTION”,那么更新数据时不能插入或更新不符合视图限制条件的记录

    查看视图详情

    >DESC 视图名;
    或者
    >SHOW FIELDS FROM 视图名;

    查看创建试图的语句

    show create view v_name;

    查看数据库中的视图

      因为视图就是一张虚拟表,所以查看视图和查看表的语句一样

    show tables;

    也可以用like模糊查询,这时需要创建视图命名有一些特别,比如v_...

    注意

    1. 试图可以嵌套,即可以利用从其他试图中检索数据的查询来构造一个试图
    2. order by可以在视图中,但从视图中检索的select语句中也有order by,那么视图中的order by将会被覆盖
    3. 视图不可以索引,也不能有关联的触发器或默认值
    4. 可以编写联结视图和表的select语句
    5. 使用视图时使用表的组成部分而不是整个表
    6. 如果从视图中检索数据时使用了where字句,则两组字句(一组在视图中另一种是传递给视图的将自动组合)

    更新视图

      更新视图实际上是更新基表,因为视图本身没有数据,对视图进行跟新或删除就是对基表进行更新或删除

    CREATE OR REPLACE VIEW 视图名 AS SELECT [...] FROM [...];

      可以通过视图插入数据,但是只能基于一个基础表进行插入,不能跨表更新数据。

    不是所有视图都可以被更新的,如果mysql不能正确的确认被更新的基数据,则不允许更新,如果定义视图有以下操作,则不允许更新

    1. 分组(group by和having)
    2. 联结
    3. 子查询
    4. 聚集函数(min(),max(),count(),sum()等)
    5. distinct
    6. 导出(计算)列
  • 相关阅读:
    iOS--不重复随机数srand(time(0))
    iOS--kvo&kvc的使用
    iOS-- 添加真机测试
    iOS-- 使用xib实现自动布局
    iOS8-- Size Class的使用
    iOS--排序算法集合
    iOS--使用MD5加密
    iOS--判断一个字符串是不是手机号
    iOS--ASIHTTPRequest类库的添加和使用
    Python入门
  • 原文地址:https://www.cnblogs.com/tianzeng/p/10359244.html
Copyright © 2011-2022 走看看