`

SQL入门:创建视图

SQL 
阅读更多
  如视图中所讨论的,视图提供在一个或多个表中查看数据的替代方法。通过创建视图,可以对想要各种用户查看的信息进行限制。下列图表显示视图和表之间的关系。
  
  图 2. 表和视图之间的关系
   
  在图 2中,View_A 被限制仅存取 TABLE_A 的列 AC1 和 AC2。 View_AB 允许存取 TABLE_A 中的列 AC3 和 TABLE_B 中的列 BC2。通过创建 View_A,将用户可以具有的存取权限制于 TABLE_A,通过创建 VIEW_AB,将存取权限制于某些列并创建查看数据的替代方式。
  
  下列语句创建 STAFF 表 中 20 部门的非经理人员视图,其中薪水和佣金不通过基表显示。
  
   
   CREATE VIEW STAFF_ONLY
    AS SELECT ID, NAME, DEPT, JOB, YEARS
       FROM STAFF
       WHERE JOB <> 'Mgr' AND DEPT=20
  
  在创建视图之后,下列语句显示视图的内容:
  
   SELECT *
    FROM STAFF_ONLY
  
  此语句产生下列结果:
  
  早些时候,我们把 STAFF 和 ORG 表连接起来产生一个列出每个部门名称及其部门经理姓名的结果。下列语句创建可重复用于相同目的的视图:
  
   
   CREATE VIEW DEPARTMENT_MGRS
    AS SELECT NAME, DEPTNAME
       FROM STAFF, ORG
       WHERE MANAGER = ID
  
  创建视图时,可以使用 WITH CHECK OPTION 子句将附加约束添加到通过视图插入和更新表。此子句导致数据库管理程序验证对视图的任何更新或插入是否符合该视图的定义,并拒绝那些不符合定义的更新或插入。如果省略此子句,则不检查违反视图定义的插入和更新。有关 WITH CHECK OPTION 如何起作用的详情,参考 SQL Reference 中的 CREATE VIEW 语句。
  
  
  使用视图来处理数据
  象 SELECT 语句一样,INSERT、DELETE 以及 UPDATE 语句可以应用于视图,就好象视图是一个实表一样。这些语句处理基本基表中的数据。因此当再次存取该视图时,使用最新的基表对它进行计算。如果未使用 WITH CHECK OPTION,则使用视图修改的数据可能由于不再满足原始视图定义而不在视图的重复存取中出现。
  
  下列是一个将更新应用于视图 FIXED_INCOME 的示例:
  
  FIXED_INCOME 的视图定义:
  
  
   CREATE VIEW FIXED_INCOME (LNAME, DEPART, JOBTITLE, NEWSALARY)
    AS SELECT NAME, DEPT, JOB, SALARY
       FROM PERS
       WHERE JOB <> 'Sales' WITH CHECK OPTION
  
  
   UPDATE FIXED_INCOME
    SET NEWSALARY = 19000
    WHERE LNAME = 'Li'
  
  除了校验选项以外,先前视图中的更新等效于对基表 PERS 的更新:
  
   UPDATE PERS
    SET SALARY = SALARY * 1.10
    WHERE NAME = 'Li'
     AND JOB <> 'Sales'
  
  注意:由于视图是在 CREATE VIEW FIXED_INCOME 中对约束 JOB <> 'Sales'使用 WITH CHECK OPTION 创建的,所以当 Limoges 调去做销售时不允许下列更新:
  
   UPDATE FIXED_INCOME
    SET JOBTITLE = 'Sales'
    WHERE LNAME = 'Limoges'
  
  不能更新由表达式 SALARY + COMM or SALARY * 1.25 定义的列。如果定义的视图包含一列或多个这样的列,则拥有者不接受对这些列的更新(UPDATE)特权。在包含这样的列的视图上不允许 INSERT 语句,但允许 DELETE 语句。
  
  考虑一个没有一列定义为 NOT NULL 的 PERS 表。可以通过 FIXED_INCOME 视图将行插入 PERS 表中,即使该视图不包含基本表 PERS 的 ID、YEARS、COMM 或 BIRTHDATE。整个视图中看不到的列被适当地设置为空值或缺省值。
  
  然而,PERS 表确实已将列 ID 定义为 NOT NULL。如果尝试通过 FIXED_INCOME 视图插入行,则系统试图将空值插入在整个视图中“看不到”的所有 PERS 列。由于 ID 列未包括在视图中并且该列不允许空值,所以系统不允许通过该视图进行插入。
  
  有关修改视图的规则和限制,参考 SQL Reference 中的 CREATE VIEW 语句。
分享到:
评论

相关推荐

    SQL入门经典(第四版) pdf

    不仅如此,《SQL入门经典(第四版)》还会介绍视图的概念,它允许你创建虚拟表,方便数据的查看和分析。此外,你还将学习到事务处理,这是数据库系统中保证数据一致性的关键特性,通常与回滚、提交和保存点等概念...

    SQL入门经典书籍

    本资料集合了两本关于SQL学习的经典书籍——"SQL入门经典(第四版)"和"SQL21天 入门",旨在为初学者提供全面而系统的SQL学习资源。 "SQL入门经典(第四版)"这本书可能是对SQL的基础概念和语法进行了详尽的介绍,...

    SQL入门经典(第四版)PDF

    《SQL入门经典(第四版)》是一本专为SQL初学者设计的教程,全面而深入地介绍了SQL语言的基础知识和高级技巧。SQL,全称Structured Query Language,即结构化查询语言,是数据库管理的核心工具,用于操作、查询、...

    通用SQL命令大全入门

    通用SQL命令大全入门 SQL语言是结构化查询语言(Structured Query Language),它是一种标准的数据库语言,用于管理关系数据库管理系统(RDBMS)。SQL语言可以对数据库进行创建、修改、删除、查询等操作。下面是...

    SQL_入门新手教程

    ### SQL入门新手教程知识点详解 #### 一、SQL简介 - **定义**:SQL(Structured Query Language,结构化查询语言)是一种广泛应用于访问和管理数据库的标准计算机语言。 - **功能**: - **执行查询**:能够从...

    ORACLE SQL入门与实战经典

    不过,根据标题《ORACLE SQL入门与实战经典》,我们可以推断出这是一本关于Oracle SQL语言学习和应用的书籍。Oracle SQL是Oracle数据库的核心技术之一,用于数据查询、定义、更新和管理。接下来,将详细介绍Oracle ...

    SQL入门经典

    4. 视图、存储过程和函数:了解如何使用SQL创建视图来简化复杂的查询操作,创建存储过程来封装逻辑以重复使用,以及如何定义函数来处理数据。 5. 事务处理:学习数据库事务的概念、特性(ACID),以及如何使用SQL...

    sqlserver入门到精通txt

    12. SQL高级功能:这部分涵盖了如UNIQUE约束、视图、事务处理等高级功能,它们对于管理复杂数据库环境和保证数据完整性具有重要作用。 整体而言,这份SQL Server的入门到精通教程覆盖了从基础到高级的各种知识要点...

    SQL学习:10分钟学会SQL

    以下是一个简要的SQL入门教程,帮助你在10分钟内掌握SQL的基础知识。 **1. SQL简介** SQL全称为结构化查询语言,它由IBM的员工Raymond Boyce和Donald Chamberlin在1974年开发。SQL用于创建、查询、更新和删除数据库...

    SQL入门经典第5版pdf

    《SQL入门经典第5版》是一本针对初学者和有一定基础的数据库使用者设计的教程,旨在帮助读者快速掌握SQL(Structured Query Language)语言的核心概念和实际应用。SQL是用于管理和处理关系型数据库的标准编程语言,...

    SQLserver资料|sql基础教程|sql基础案例|sql入门教程

    6. 创建视图:创建一个显示部门平均工资的视图。 7. 使用存储过程处理业务逻辑:例如,计算每个员工的年假天数。 四、SQL入门 入门SQL Server,你需要先安装SQL Server,然后使用SQL Server Management Studio...

    SQL入门教程。适合新手学习

    这个“SQL入门教程”是专为初学者设计的,旨在帮助新手快速掌握SQL的基础知识和核心技能。 教程内容可能包括以下几个方面: 1. **SQL概述**:介绍SQL的基本概念,它的用途以及为什么在数据处理中如此重要。可能会...

    SQL入门到精通

    ### SQL入门到精通知识点梳理 #### 一、数据库基础知识概览 **1.1 数据库基础知识** - **几个数据库应用案例** - **背景与重要性:** 随着计算机技术的发展,人类社会产生了海量的信息,如何有效地组织、存储和...

    IBM DB2通用数据库SQL入门 (PDF)

    4. **索引与视图**:讲解如何创建和使用索引来加速查询,以及创建视图以简化复杂查询和提供数据抽象。 5. **事务与并发控制**:介绍SQL中的事务概念,如何提交和回滚事务,以及DB2如何处理多用户并发访问,如锁定...

    SQL Server入门到精通SQL Server入门到精通

    本教程将从基础开始,逐步深入,帮助你全面掌握SQL Server,从入门到精通。 1. SQL Server简介:SQL Server是基于标准的SQL语言,提供了一套完整的数据库解决方案,包括数据库引擎、分析服务、报告服务、集成服务等...

    sqlserver入门教程

    **SQL Server 入门教程** SQL Server 是微软公司推出的一款关系型数据库管理系统,广泛应用于企业级数据存储、管理和分析。本教程将引导你逐步了解并掌握 SQL Server 的基本概念、安装配置、数据库管理以及SQL查询...

    PL/SQL入门到精通书的源代码

    本资料“PL/SQL入门到精通书的源代码”是一份针对初学者到高级用户的实践教程,旨在帮助读者深入理解和掌握PL/SQL的各个方面。 在学习PL/SQL时,你需要了解以下几个关键知识点: 1. **基础语法**:PL/SQL由声明...

    sql 查询凡人入门 第一版 cd

    9. **视图**:创建视图以简化复杂的查询,视图可以看作是虚拟表。 10. **索引**:了解索引的作用,如何创建和管理索引以提高查询效率。 11. **事务处理**:理解ACID(原子性、一致性、隔离性和持久性)原则,学习...

    SQL入门学习资料

    《SQL入门学习资料》是一份专为初学者设计的教程,旨在帮助那些对数据库查询语句感到陌生,但渴望掌握SQL这一强大工具的人。SQL,全称Structured Query Language(结构化查询语言),是管理和处理关系型数据库的标准...

Global site tag (gtag.js) - Google Analytics