一、视图的概念:

概念:

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

首先明白几个概念:

.视图是一个虚拟表,其内容由查询定义。
.视图中的数据是由一张或多张表中的数据组成的。
.如果你改动了基本表,如果你的视图来源于这个基本表,那视图给你呈现的结果也会随之发生变化。

作用:

* 简单性。看到的就是需要的。视图不仅可以简化用户对数据的理解,也可以简化他们的操作。那些被经常使用的查询可以被定义为视图,从而使得用户不必为以后的操作每次指定全部的条件。
* 安全性。通过视图用户只能查询和修改他们所能见到的数据。但不能授权到数据库特定行和特定的列上。通过视图,用户可以被限制在数据的不同子集上:
使用权限可被限制在另一视图的一个子集上,或是一些视图和基表合并后的子集上。
* 逻辑数据独立性。视图可帮助用户屏蔽真实表结构变化带来的影响。

二、视图语法:

视图创建:

CREATE [OR REPLACE] [{FORCE|NOFORCE}] VIEW view_name
AS
SELECT查询
[WITH READ ONLY CONSTRAINT]

语法解析:
1. OR REPLACE:如果视图已经存在,则替换旧视图。
2. FORCE:即使基表不存在,也可以创建该视图,但是该视图不能正常使用,当基表创建成功后,视图才能正常使用。
3. NOFORCE:如果基表不存在,无法创建视图,该项是默认选项。
4. WITH READ ONLY:默认可以通过视图对基表执行增删改操作,但是有很多在基表上的限制(比如:基表中某列不能为空,但是该列没有出现在视图中,则不能通过视图执行insert操作),WITH READ ONLY说明视图是只读视图,不能通过该视图进行增删改操作。现实开发中,基本上不通过视图对表中的数据进行增删改操作。

示例:

CREATE OR REPLACE VIEW afa_attach_fileinfo_view (ID,NAME,  FILESIZE,  CONTENTTYPE,  FILEPATH,  BIZID,  BIZTYPE,  CREATETIME,  CREATEBY,  VERSION,  FAGENIDCODE)
AS
select * from (select f.*,ab.fagenidcode
from fab_bill_template t
left join fab_agen_bill ab on ab.fbillid = t.fbillid
left join fab_agen a on a.fagenidcode = ab.fagenidcode and a.fisfinal =
left join fab_billbatch bb on t.fbillbatchid = bb.fid
left join afa_attach_fileinfo f on f.bizid = t.fid
UNION ALL
select f.*,fa.fagenidcode
from FAB_AGEN_SEAL fa
left join afa_attach_fileinfo f on fa.fid=f.bizid);

查询可用:

select * from afa_attach_filestore_view
where fagenIdCode IN (
select fagenidcode from fab_agen where flevelcode like (
select flevelcode from fab_agen where fagenidcode ='20340af2dc7741adbd58df214819d4e7'
)||'%')

如果是mysql数据,注意:

以上sql可修改为:

select *
from afa_attach_filestore_view
where fagenIdCode IN
(select fagenidcode
from fab_agen
where flevelcode like concat(
(select flevelcode
from fab_agen
where fagenidcode = 'BE8EF91813BAA4D36FE1DFEF87C6EF07'),'%'));

视图操作:

备注:以下操作,如果当前视图是单表的情况下,且不是只读的情况,这个时候基本表的数据也会修改、新增、删除。新增的时候要覆盖所有字段。

修改:

UPDATE afa_user_view SET user_name='视图' WHERE user_code='system'

添加:

INSERT INTO afa_user_view VALUES('test','') 

删除:

delete from afa_attach_filestore_view where id='cf446676ca0c4c49bd1a3f33a6b5f553';

数据库视图View的使用的更多相关文章

  1. MySQL数据库视图(view),视图定义、创建视图、修改视图

    原文链接:https://blog.csdn.net/moxigandashu/article/details/63254901

  2. 数据库视图 (View)和EntityFramework Code First结合使用

    问题来源: 项目需要进行查询操作,会涉及多表间的联合查询,使用Entity Framework会牵涉到效率问题,为增加查询速度,所以使用数据库视图技术,综合来讲是将Model类映射到数据库View. ...

  3. How to: Map a Persistent Class to a Database View Which Has No Key Field如何:映射持久化类到无主键数据库视图

    With XAF, you can build new applications from scratch or maintain existing databases. The How to: Ge ...

  4. MySQL/MariaDB数据库的视图(VIEW)

     MySQL/MariaDB数据库的视图(VIEW) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.视图概述 1>.什么是视图 视图就是一个虚拟的表,保存有实表的查询结果 ...

  5. SQL Server 索引(index) 和 视图(view) 的简单介绍和操作

    --索引(index)和视图(view)-- --索引(index)----概述: 数据库中的索引类似于书籍的目录,他以指针形式包含了表中一列或几列组合的新顺序,实现表中数据库的逻辑排序.索引创建在数 ...

  6. Oracle 学习笔记 11 -- 视图 (VIEW)

    本次必须学习一个全新的概念-- 视图 (VIEW).在前面的笔记中曾提到过,数据对象包含:表.视图.序列.索引和同义词.前面的笔记都是对表的想剖析,那么本次笔记就对视图的世界进行深入的剖析. 视图是通 ...

  7. SQL Server数据库视图

    1:什么是视图 2:视图和查询的区别 3:视图的优点 4:如何创建和管理视图 5:如何通过视图修改基本表的数据 6:如何通过视图实现数据的安全性 A:什么是视图: 视图(view):从一个或几个基本表 ...

  8. MySQL视图view/存储过程和函数的使用

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Helvetica Neue"; color: #454545 } p. ...

  9. C#-MVC基础-模型(Model)、视图(View)和控制器(Controller)

    搜狗百科:http://baike.sogou.com/v25227.htm?fromTitle=MVC MVC全名是Model View Controller,是软件工程中的一种软件架构模式,把软件 ...

随机推荐

  1. leetcode算法总结

    算法思想 二分查找 贪心思想 双指针 排序 快速选择 堆排序 桶排序 搜索 BFS DFS Backtracking 分治 动态规划 分割整数 矩阵路径 斐波那契数列 最长递增子序列 最长公共子系列 ...

  2. anaconda的一些命令

    先安装好TensorFlow. 1.安装sklearn 本安装方式是在anaconda prompt上用命令来更新 (1)激活TensorFlow:activate tensorflow (2)查看是 ...

  3. python 连接操作 各类数据库

    转载自MySQL Loners 一,python 操作 MySQL:详情见:这里 #!/bin/env python # -*- encoding: utf-8 -*- #-------------- ...

  4. c#中事务及回滚

    程序一般在特殊数据的时候,会有数据上的同步,这个时候就用到了事物.闲话不多说,直接上代码. public void UpdateContactTableByDataSet(DataSet ds, st ...

  5. Poj 1651 Multiplication Puzzle(区间dp)

    Multiplication Puzzle Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 10010   Accepted: ...

  6. 平衡二叉树(AVL)的实现,附可运行C语言代码

    最近几月一直在自学C语言和数据结构,先是写了排序二叉树,觉得平衡二叉树作为一个经典数据结构,有必要实现一下. 网上看了些资料,在AVL和红黑树之间考虑,最后个人还是倾向于AVL. 不同于标准AVL的是 ...

  7. shell getopts学习

    #!/bin/bash while getopts i:vh name do case $name in i) opt=1 echo $OPTARG;; v) opt=2 echo 2;; h) op ...

  8. L154

    Several possessions of the late physicist's Stephen Hawking will be included in an upcoming auction ...

  9. (转)MapReduce Design Patterns(chapter 7 (part 1))(十三)

    CHAPTER 7.Input and Output Patterns 本章关注一个最经常忽略的问题,来改进MapReduce 的value:自定义输入和输出.我们并不会总使用Mapreduce本身的 ...

  10. Leetcode 429. N-ary Tree Level Order Traversal

    bfs class Solution: def levelOrder(self, root: 'Node') -> List[List[int]]: q,ans=[root],[] while ...