`
zy19982004
  • 浏览: 661917 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
博客专栏
F6f66edc-1c1a-3859-b76b-a22e740b7aa7
Hadoop学习
浏览量:251950
社区版块
存档分类
最新评论

数据库学习三:数据表视图

 
阅读更多

一.什么时候使用视图

  1. 某一张表(以下把原始表称为基表)里面存放简单数据,需要向外界提供一个简单的入口来获取这些简单数据的复制运算结果。考虑视图。
  2. 某几张基表具有一些共同特性,需要向外界提供一个简单的入口来获取这几张表所有的数据。强烈建议视图。

二.创建视图

  1. CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
    
    VIEW view_name [(column_list)]
    
    AS select_statement
    
    [WITH [CASCADED | LOCAL] CHECK OPTION]
  2.  例子
    CREATE
    VIEW `cbms`.person` 
    AS
    (SELECT * FROM `cbms`.`person_view`)
     

三.视图类型

  1. ALGORITHM = MERGE。会将引用视图的sql语句与视图本身的sql语句结合起来,去查询基表。
  2. ALGORITHM = TEMPTABLE。会将视图的结果置于临时表里面,引用视图的sql语句从临时表里面取数据。
  3. ALGORITHM = UNDEFINED。创建视图的sql语句没显示的指定ALGORITHM 。如果可能,它倾向于MERGE 而不是TEMPTABLE ,这是因为MERGE 通常更有效,而且如果使用了临时表,视图是不可更新的。

四.视图类型例子

     对于ALGORITHM =TEMPTABLE视图,没什么好说的,数据直接从临时表取。下面看看ALGORITHM = MERGE。

CREATE ALGORITHM = MERGE VIEW v_merge (vc1, vc2) AS
SELECT c1, c2 FROM t WHERE c3 > 100;
  1. SELECT * FROM v_merge;
    =====>
    SELECT c1, c2 FROM t WHERE c3 > 100;

  2. SELECT * FROM v_merge WHERE vc1 < 100;
    =====>
    SELECT c1, c2 FROM t WHERE (c3 > 100) AND (c1 < 100);
    
    注意:WHERE (基表 WHERE) AND (view WHERE) 
    

 

五.视图更新

  1. 如果视图和基表数据是一对一的,那么视图是可以更新的。如二.2的例子。
  2. 以下情况会造成视图与基表数据不是一对一:
    1. 聚合函数(sun(),max(),min(),count()等)。
    2. group by, having, union, union all等情况。
    3. 其他情况,暂时还没遇到。
  3. 视图不能更新时候,你去更新它。The target table 视图名 of the UPDATE is not updatable。 
分享到:
评论

相关推荐

    MySQL数据库应用 实验训练4:视图和索引的构建与使用

    在实验中,学生将学习如何创建各种类型的视图: 1. **单源视图**:用于创建今年新增会员的视图,以及特定品牌的汽车配件视图(例如“奔驰”品牌),并且限制对视图的修改和插入操作只能针对该品牌。 2. **多源视图...

    sql 创建数据库表、视图语句

    在压缩包文件中,"创建数据库表语句"可能包含了具体项目中使用的表结构定义,这些语句可以作为学习和参考的例子,帮助理解如何根据实际需求定制数据库模型。通过分析这些语句,你可以深入理解表的设计原则,如选择...

    数据表视图和数据记录操作PPT学习教案.pptx

    数据表视图是数据库管理中常见的一种表现形式,尤其在会计学中,它对于高效管理和操作数据至关重要。数据表视图允许用户以表格的形式查看、编辑和管理数据库中的记录,提供了一种直观且便捷的方式处理大量信息。在这...

    数据库表/视图的创建与维护实验

    ### 数据库表与视图的创建与维护:深入...综上所述,本次实验通过理论与实践相结合的方式,全面提升了参与者在数据库表与视图创建、维护以及数据导入方面的综合能力,对深化理解数据库管理系统的核心功能具有重要意义。

    数据库实验 1:数据库定义与操作语言实验

    5. 索引与视图:了解索引的作用和创建方法,以及视图的概念和创建过程,学习如何利用它们提高查询效率和简化数据访问。 6. 权限管理:理解数据库权限体系,设置用户权限,进行权限的分配和回收。 通过这个实验,你...

    国家开放大学 MySQL数据库应用 实验训练4:数据库系统维护

    视图是一种基于基表的虚拟表,它提供了一种简洁的方式来查询和操作数据。视图可以单源也可以多源,可以根据需要定义不同的视图来满足不同的查询需求。 在本实验中,我们定义了多种类型的视图,包括单源视图、多源...

    oracle实验3-数据更新与视图.doc

    在实验中,我们将学习数据插入、修改和删除语句的语法格式和使用方法,以及视图的定义和操作方法。 一、数据更新 在实验中,我们使用 SQL 语句完成了以下操作: (1)删除学生“宾兆琦”的所有记录,包括选课记录...

    《数据库应用基础》六视图PPT课件.ppt

    - 控制用户提取数据:通过视图,可以限制用户访问特定的数据,提供定制化的数据视图,同时作为安全机制防止敏感信息泄露。 - 简化数据库用户管理:通过定义不同视图并分配权限,可以将用户限制在特定的数据子集中...

    SQL练习:数据表操作与视图管理

    内容概要:本文档提供了一系列针对四个关系型数据库表(department, student, course, scourse)的基础练习题目,涵盖了基本的数据定义、更新、删除、视图管理和权限控制等多个方面。其中包括创建学生子表、修改课程...

    Oracle数据库视图管理

    理解和掌握这些数据对象是学习Oracle数据库的关键,尤其是表和视图的管理。 #### 二、视图的基本概念 **视图**是一种数据库对象,它基于SELECT语句而创建。视图并不存储数据,而是存储该SELECT语句,当用户查询...

    Oracle数据库表与视图

    Oracle数据库是世界上最流行的数据库管理系统之一,它提供了丰富的数据存储和管理功能。在Oracle中,表和视图是最基本的数据...在学习Oracle的过程中,深入理解表和视图的概念及其操作,是成为专业数据库管理员的基础。

    数据库实验报告 视图的定义及使用实验(详细版有截图的)

    实验报告的主题是“数据库实验”,主要探讨视图的定义与使用,特别针对SQL Server 2000环境。...通过这些操作,学生不仅可以学习到SQL Server 2000的视图操作,还能增强对数据库管理和数据操作的理解。

    C#写的数据库管理工具,用于表、视图、等的查看,修改、创建

    6. 视图操作:创建和修改视图,提供定制的数据视图。 7. 用户权限管理:分配和管理数据库用户的访问权限。 从压缩包子文件的文件名“fucation”来看,这可能是工具中的一个函数或组件名称,但具体功能无法直接推断...

    数据库视图的详细用法讲解

    数据库视图是数据库管理系统中的一个重要概念,它提供了一种虚拟表的形式,允许用户从一个或多个实际表中选择和组织数据,以满足特定查询需求。视图并不存储数据,而是根据用户的需求动态生成数据,因此它是一种逻辑...

    数据库实验报告视图的使用

    实验中,学生将学习如何通过单个表或多个表建立视图,以及如何利用视图进行数据操作。 视图的创建通常使用`CREATE VIEW`语句,例如,若要从"课程信息表"中创建一个仅包含课程名称和课程ID的“课程信息简表”,可以...

    Oracle数据库入门学习课件ppt

    - 更新视图:根据规则允许对视图进行DML操作。 8. **备份与恢复**: - 备份策略:完整备份、增量备份、差异备份。 - RMAN(Recovery Manager):Oracle的备份和恢复工具。 - 数据库恢复:使用备份文件和Redo...

    数据库系统概论:第3章 关系数据库标准语言SQL1.ppt

    视图则是从一个或多个基本表中选择数据的虚拟表,提供了数据的另一种抽象表示,用户可以像操作实际表一样操作视图,但视图并不实际存储数据,其数据来源于基本表。 在学习SQL时,通常会通过实际案例来理解,比如...

    实验四 视图、数据控制

    - **执行SQL语句**:在Form1上添加一个按钮Button1,并为其添加点击事件处理函数,在该函数中编写SQL语句以查询数据库中的表或视图,并将结果展示在界面上。 - **验证结果**:更换不同的SQL语句并观察其执行结果,以...

Global site tag (gtag.js) - Google Analytics