SQL Sever MYSQL 视图实现的 2 种方式

SQL Sever MYSQL 视图实现的 2 种方式

前期准备:

            1、create table person  # 假设这张表用来收录所以有地球人的基本信息。

                             (ID bigint ,

                             Name varchar(16),

                             Country varchar(16)); 

           2、create view Chinise  # 这个视图用于查询所以有中国人的基本信息。

           as 

           select ID,Name,Country from Person

           where Country = ‘China’;

          

           3、查找中国叫张三的人

           select ID,Name,Country from Chinese where Name = ‘张三’;

——————————————————————————————————————————————————–

方法 1、

         合并算法

         这中算法中、视图的数据还是只保存在表中、并没有从表中分离出来;也就是说我们对   张三    的查询会转化为

         select ID,Name,Country from Chinese where Name = ‘张三’ and Country = ‘China’;引擎会帮我们完成

         条件的合并。合并算法内部是一个映射关系,如果 view的第一行 对就table 的X 行,view的第二行对应table 的第y 行。

         既然是一种映射对view第一行的修改也就是对 table 第X行的修改。delete时同理。

         也就是说合并算法支持对view 的 insert update delete select;(上文说的映射是 一对一映射)

         然、

         有些时候合并算法是没有办法完成的、也就是说对view 的 insert update delete select;都会引发错误。

         如:create view viewXXX as select Name ,count(*) from person group by Name;这样就不存在一对一的映射了,也就不能用合并算法了

方法 2、

         临时表算法

         就是把view 查询出来的数据保存到一张临时表中、以后对view的操作就是对这张表的操作,哪怕是多个用户也是一张表。引擎会在合适的时间内

         更新这张表、

 

 

 

 

 

 

 

 

 

 

         

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/109704.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • nextint() java_java中random.nextint()的用法

    nextint() java_java中random.nextint()的用法java中random.nextint()的用法发布时间:2020-06-1514:41:57来源:亿速云阅读:193作者:鸽子random.nextInt()的用法1、不带参数的nextInt()会生成所有有效的整数(包含正数,负数,0)2、带参的nextInt(intx)则会生成一个范围在0~x(不包含X)内的任意正整数例如:intx=newRandom.nextInt(100);则x…

    2022年7月22日
    10
  • 一个对文本内容进行排序的小程序的核心代码

    一个对文本内容进行排序的小程序的核心代码

    2022年3月12日
    38
  • 时间戳格式化「建议收藏」

    时间戳格式化「建议收藏」须知:1. 时间戳分2种,一种是10位的,只包含年月日时分秒,也就是说,只精确到秒。一种是13位的,包含毫秒。这2种都叫时间戳,并不是只有精确到毫秒的才叫时间戳。10位时间戳就是从1970-01-01到当前的秒数,注意,不是毫秒数,所以需要按毫秒解析时,要*100013位时间戳就是从1970-01-01到当前的毫秒数,在java中用Instant对象对应。2. timestamp的格式化串用大写的S来表示毫秒数。S的个数和毫秒的位数严格对应,否则报错。如果规范中要求精确到毫秒,那么给的时间字符串

    2022年4月19日
    470
  • 测试用例等价类和边界值_等价类划分和边界值的区别与联系

    测试用例等价类和边界值_等价类划分和边界值的区别与联系一、测试用例/案例(testcase/testinstance)  1、定义:是在测试执行之前,由测试人员编写的指导测试过程的重要文档,主要包括:用例编号、测试目的、测试步骤(用例描述),预期结果  2、介绍编写测试用例的7种方法:    1)等价类划分法()    2)边界值法()    3)因果图法    4)判定表法    5)正交排列法    6)测试大纲法    7)场景法(*****)  至少要掌握每种方法的适用场合(用在哪)和使用步骤(怎么用)  编写测试用例可以参考

    2022年10月10日
    0
  • 图卷积网络 GCN Graph Convolutional Network(谱域GCN)的理解和详细推导[通俗易懂]

    图卷积网络 GCN Graph Convolutional Network(谱域GCN)的理解和详细推导[通俗易懂]文章目录1.为什么会出现图卷积神经网络?2.图卷积网络的两种类型2.1vertexdomain(spatialdomain):顶点域(空间域)2.2spectraldomain:频域方法(谱方法)3.什么是拉普拉斯矩阵?3.1常用的几种拉普拉斯矩阵普通形式的拉普拉斯矩阵对称归一化的拉普拉斯矩阵(SymmetricnormalizedLaplacian)随机游走归一化拉普拉斯矩…

    2022年6月11日
    23
  • oracle创建数据库、表空间、用户并授权「建议收藏」

    oracle创建数据库、表空间、用户并授权「建议收藏」在安装完Oracle数据库软件之后可以使用默认的数据库orcl,也可以根据需要创建自定义的数据库。表空间用于对数据库中的资源进行分类,每个用户都有默认的表空间,也可以给用户指定默认的表空间。

    2022年9月13日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号