SQL实战新手入门:创建视图(1)

 我来答
华源网络
2022-11-06 · TA获得超过5592个赞
知道小有建树答主
回答量:2486
采纳率:100%
帮助的人:146万
展开全部

   创建视图( )

  对于视图的基本形式来说 将一个查询转换为一个视图非常简单 只需要在查询之前添加一个CREATE VIEW语句 并为新创建的视图定义一个名称即可 例如

  CREATE VIEW vwBooksONshelves

  AS

  SELECT

  loc_bookcase AS bookcase

   loc_shelf AS shelf

   loc_position_left AS position

   bk_title AS title

  FROM location INNER JOIN books

  ON location fk_bk_loc = books bk_id;

  这样就创建了一个视图 接下来就可以使用简单的SELECT *语法来查询该视图 例如下面的例子

  SELECT * FROM vwBooksONshelves;

  表 列出了查询视图的结果 它与定义视图的查询产生的结果完全相同

  表 将两个表的JOIN查询包装到一个视图的结果

  (续表)

  视图具有多种用途 例如封装复杂性 强制安全性等 本章随后还将非常详细地讨论这些功能 在各个RDBMS中 CREATE VIEW语句可能会带有相当多的特定于RDBMS的选项 但前面例子中的语法是通用的 在本书所讨论的每一种RDBMS中都可以正常运行

  本书中介绍的任何一个SQL查询(DQL类型的)几乎都可以转换为一个视图 但也有一些例外 在某些RDBMS中 带有ORDER BY子句的查询不能用在视图的定义中(但是GROUPBY子句则可以) 因此 某些RDBMS不允许使用执行 排序 功能的关键字(DISTINCT FIRST等) 例如 HSQLDB和MySQL允许在视图中使用ORDER BY子句 但Oracle MicrosoftAccess PostgreSQL和IBM DB 则不允许使用ORDER BY子句 任何一种RDBMS都不允许视图引用自身(这会产生一个循环引用) 也不允许引用暂态的结构 例如临时表(请参考第 章)

  Microsoft Access是一个融合了数据库和程序设计构造的集成环境 可以将它作为其他RDBMS的前端 但是这种功能具有很多限制 例如 在本章讨论的环境中 Microsoft Access数据库引擎并不支持使用CREATE VIEW语句(就这一点而言 也包括其他任何DDL语句)对非Microsoft Access引擎的数据库创建视图

  如果数据库中已经存在同名的表或视图 RDBMS将抛出一个错误 某些RDBMS(Oracle PostgreSQL和MySQL)提供了替代的REPLACE关键字用于解决这一情况(在其他数据库中 在创建同名视图之前必须先将已经存在的视图删除掉) 例如

  CREATE OR REPLACE VIEW vwbooksONshelves

  AS

  SELECT

  loc_bookcase AS bookcase

   loc_shelf AS shelf

   loc_position_left AS position

   bk_title AS title

  FROM location INNER JOIN books

  ON location fk_bk_loc = books bk_id;

  开发人员可以轻而易举地创建视图 以便限制用户只能使用数据的某个子集 子集既可以是纵向的(通过限定视图暴露的列数) 也可以是横向的(通过限制返回记录的数量)

  根据某种命名约定来命名数据库对象是一个良好的编程实践 例如 可以在视图名称前添加前缀vw 使视图与表区分开来

       返回目录 SQL实战新手入门

       编辑推荐

       Oracle索引技术

       高性能MySQL

lishixinzhi/Article/program/SQL/201311/16463

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式