zoukankan      html  css  js  c++  java
  • mysql view

    定义:在 SQL 中,视图是基于 SQL 语句的结果集的可视化的表。

    1、视图是一个虚拟存在的表,视图可以包含表的全部或者部分记录,也可以由一个表或者多个表来创建。使用视图就可以不用看到数据表中的所有数据,而是只想得到所需的数据。当我们创建一个视图的时候,实际上是在数据库里执行了SELECT语句,SELECT语句包含了字段名称、函数、运算符,来给用户显示数据。

    2、视图在外观上和很相似,但是它不需要实际上的物理存储数据还是存储在原来的表里。在数据库中,只存放了视图的定义,并没有存放视图的数据,视图的数据是依赖原来表中的数据的,所以原来的表的数据发生了改变,那么显示的视图的数据也会跟着改变,例如向数据表中插入数据,那么在查看视图的时候,会发现视图中也被插入了同样的数据。视图实际上是由预定义的查询形式的表所组成的。

    3、在数据库中,视图的使用方式与表的使用方式一致,我们可以像操作表一样去操作视图,或者去获取数据。一般来说,我们只是利用视图来查询数据,不会通过视图来操作数据。

    4、基于视图可以创建视图

    5、视图增加了数据的安全性和逻辑独立性,数据库的设计和结构不会受到视图中的函数、where 或 join 语句的影响。视图可以只展现数据表的一部分数据,对于我们不希望让用户看到全部数据,只希望用户看到部分数据的时候,可以选择使用视图。

    用法:

    1、创建视图(CREATE VIEW 视图名称[(column_list)] AS SELECT 语句)

    create view employee_view as SELECT * from employee;

    完整的创建视图的格式

    CREATE ALGORITHM VIEW 视图名称[(column_list)] AS SELECT 语句  WITH  [CASCADED|LOCAL] CHECK OPTION

      1)CASCADED 默认值,表示更新视图的时候,要满足视图和表的相关条件

      2)LOCAL:表示更新视图的时候,要满足该视图定义的一个条件即可

    
    
    create view employee_view as SELECT * from employee WITH CASCADED CHECK OPTION;

    看到很多例子,更新视图可以更新真实表。原因,我是这样理解的:视图并没有保存内容。只是引用数据。那么,更新视图,其实就是以引用的方式操作了真实表
    with check option:对视图进行更新操作的时,需要检查更新后的值是否还是满足视图公式定义的条件。通俗点,就是所更新的结果是否还会在视图中存在。如果更新后的值不在视图范围内,就不允许更新如果创建视图的时候,没有加上with check option,更新视图中的某项数据的话,mysql并不会进行有效性检查。删掉了就删掉了。在视图中将看不到了。所以使用WHIT [CASCADED|LOCAL] CHECK OPTION选项可以保证数据的安全性

    2、查看视图数据(select column_list from view)

    SELECT * FROM employee_view;

    3、查看视图(show create view view_name)

     show CREATE view employee_view;

    4、删除视图(drop view view_name)

    drop view employee_view

    5、修改视图

      1)CREATE OR REPLACE VIEW 视图名称[(column_list)] AS SELECT 语句

    create or replace view employee_view as select eid,ename,salary FROM employee;

      2)ALTER VIEW视图名称[(column_list)] AS SELECT 语句

    alter view employee_view as SELECT * FROM employee;

    6、修改视图中的数据(update view_name set column where 语句)

    UPDATE employee_view set ename='小红' WHERE ename='小个';
  • 相关阅读:
    Android 编程下 Eclipse 恢复被删除的文件
    Android 编程下背景图片适配工具类
    Android 编程下 Managing Your App's Memory
    Android 编程下代码之(QQ消息列表滑动删除)
    Android 编程下 Canvas and Drawables
    Android 编程下 AlarmManager
    Android 编程下去除 ListView 上下边界蓝色或黄色阴影
    Java 编程下字符串的 16 位、32位 MD5 加密
    C#枚举类型和int类型相互转换
    MVC和普通三层架构的区别
  • 原文地址:https://www.cnblogs.com/onemorepoint/p/7143122.html
Copyright © 2011-2022 走看看