视图是外模式再加上外模式到概念模式的映像 :
    外模式是用户与数据库的系统接口,是用户用到的那部分数据的描述。视图对应着三级模式中的外模式,每个用户只能看见和访问所对应的外模式中的数据,简化了用户视图。CREATE VIEW就是实现外模式,AS子查询就完成了E-C映像。

    视图的优点:

    • 简单:使用视图的用户完全不需要关心后面对应的表的结构、关联条件和筛选条件,对用户来说已经是过滤好的复合条件的结果集;
    • 安全:使用视图的用户只能访问他们被允许查询的结果集,对表的权限管理并不能限制到某个行或列,但是通过视图就可以简单的实现;
    • 数据独立:一旦视图的结构确定了,可以屏蔽表结构变化对用户的影响,源表增加列队视图没有影响;源表修改列名,则可以通过修改视图来解决,不会造成对访问者的影响。
    • 总而言之,使用视图的大部分情况是为了保障数据安全性,提高查询效率

    使用视图,可以定制用户数据,简化数据操作:
    当我们在庞大的数据库中搜索想要的关键信息时,聚焦特定的数据,简化搜索后得到数据的复杂性;在使用查询时,很多时候我们要使用聚合函数,同时还要显示其它信息,可能还会需要关联到其它表,这时写的语句会很长,使用视图就可避免这个问题。

    使用视图,基表中的数据就有了一定的安全性:
    因为视图是虚拟的,物理上是不存在的,只是存储了数据的集合,我们可以将基表中重要字段信息通过视图给用户。视图是动态的数据的集合,数据是随着基表的更新而更新。同时,用户对视图,不可以随意的更改和删除,可以保证数据的安全性。

    视图的基本操作:视图是逻辑表,也就是说视图不是真实的表,但操作视图和操作普通表的语法是一样的。

    • 用户可以在视图中无条件地使用select语句查询数据。
    • 但使用insert、update和delete操作需要在创建视图时满足以下条件(满足以下条件的视图称为可更新视图):
      • from子句中只能引用有1个表(真实表或可更新视图);
      • 不能包含 with、distinct、group by、having、limit等子句;
      • 不能使用复合查询,即不能使用union、intersect、except等集合操作;
      • select子句的字段列表不能包含聚合、窗口函数、集合返回函数。

    创建视图语法格式:
    create view 视图名(视图显示字段1,视图显示字段2,视图显示字段3…..)
    as
    (select 字段1,字段2,字段3….. from 表名1,表名2……) ;
    [with check option;] 加上了with check option;后,不能执行插入操作!!!

    1. create view V2_NotReturnBooks
    2. as (
    3. select b.ISBN ISBN,l.bookNo 书号,b.bname 书名,u.lname 借阅人名称,u.unitName 单位,l.borrowDate 借阅时间
    4. from BookInfo b,Users u,Loan l,Books
    5. where u.loanNo=l.loanNo and b.ISBN = Books.ISBN and Books.bookNo=l.BookNo
    6. order by b.ISBN,l.bookNo
    7. );

    删除视图语法格式:

    1. DROP VIEW if exists `视图名`;