`
endual
  • 浏览: 3566845 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

视图概述

 
阅读更多
<!--$sinatopbar-->

 

<!--$end sinatopbar-->
<!--主题内容开始 -->
<!--第一列start-->
个人资料
小胖之家一周年勋章
小胖之家
<!--user['qing_url'] -->Qing 微博
  • 博客等级:
  • 博客积分:852
  • 博客访问:43,237
  • 关注人气:18
谁看过这篇博文
加载中…
<!--第一列end--><!--第二列start-->
正文 字体大小:
<!--博文正文 begin -->

mysql视图简介

(2009-07-27 11:41:52)
<script></script>标签:

mysql

视图

简介

杂谈

分类: Mysql数据库
<!-- 正文开始 -->

一. 视图概述

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

对其中所引用的基础表来说,视图的作用类似于筛选。定义视图的筛选可以来自当前或其它数据库的一个或多个表,或者其它视图。通过视图进行查询没有任何限制,通过它们进行数据修改时的限制也很少。

视图是存储在数据库中的查询的sql 语句,它主要出于两种原因:安全原因,视图可以隐藏一些数据,如:社会保险基金表,可以用视图只显示姓名,地址,而不显示社会保险号和工资数等,另一原因是可使复杂的查询易于理解和使用。


  视图:查看图形或文档的方式。


  视图是从一个或多个表或视图中导出的表,其结构和数据是建立在对表的查询基础上的。和表一样,视图也是包括几个被定义的数据列和多个数据行,但就本质而言这些数据列和数据行来源于其所引用的表。


  所以视图不是真实存在的基础表而是一张虚表,视图所对应的数据并不实际地以视图结构存储在数据库中,而是存储在视图所引用的表中。


  视图一经定义便存储在数据库中,与其相对应的数据并没有像表那样又在数据库中再存储一份,通过视图看到的数据只是存放在基本表中的数据。对视图的操作与对表的操作一样,可以对其进行查询、修改(有一定的限制)、删除。


  当对通过视图看到的数据进行修改时,相应的基本表的数据也要发生变化,同时,若基本表的数据发生变化,则这种变化也可以自动地反映到视图中。


  视图有很多优点,主要表现在:


  •视点集中


  •简化操作


  •定制数据


  •合并分割数据


  •安全性

二. 创建视图——create view

1. 语法

create [or replace] [algorithm = {undefined | merge | temptable}] view [db_name.]view_name [(column_list)] as select_statement [with [cascaded | local] check option]通过该语句可以创建视图,若给定了[or replace],则表示当已具有同名的视图时,将覆盖原视图。select_statement是一个查询语句,这个查询语句可从表或其它的视图中查询。视图属于数据库,因此需要指定数据库的名称,若未指定时,表示在当前的数据库创建新视图。

表和数据库共享数据库中相同的名称空间,因此,数据库不能包含相同名称的表和视图,并且,视图的列名也不能重复。

2. 使用举例

eg. 本例创建一个产品表(product)和一个购买记录表(purchase),再通过视图purchase_detail查询出购买的详细信息。

create table product

(

product_id int not null,

name varchar(50) not null,

price double not null

);

insert into product values(1, 'apple ', 5.5);

create table purchase

(

id int not null,

product_id int not null,

qty int not null default 0,

gen_time datetime not null

);

insert into purchase values(1, 1, 10, now());

create view purchase_detail as select product.name as name, product .price as price, purchase.qty as qty, product .price * purchase.qty as total_value from product, purchase where product.product_id = purchase.product_id;

创建成功后,输入:select * from purchase_detail;

运行效果如下:

+-------+-------+-----+-------------+

| name | price | qty | total_value |

+-------+-------+-----+-------------+

| apple | 5.5 | 10 | 55 |

+-------+-------+-----+-------------+

1 row in set (0.01 sec)

3. 注意事项

创建视图存在如下注意事项:

(1) 运行创建视图的语句需要用户具有创建视图(crate view)的权限,若加了[or replace]时,还需要用户具有删除视图(drop view)的权限;

(2) select语句不能包含from子句中的子查询;

(3) select语句不能引用系统或用户变量;

(4) select语句不能引用预处理语句参数;

(5) 在存储子程序内,定义不能引用子程序参数或局部变量;

(6)在定义中引用的表或视图必须存在。但是,创建了视图后,能够舍弃定义引用的表或视图。要想检查视图定义是否存在这类问题,可使用check table语句;

(7) 在定义中不能引用temporary表,不能创建temporary视图;

(8) 在视图定义中命名的表必须已存在;

(9) 不能将触发程序与视图关联在一起;

(10) 在视图定义中允许使用order by,但是,如果从特定视图进行了选择,而该视图使用了具有自己order by的语句,它将被忽略。

三. 修改视图——alter view

1. 语法

alter [algorithm = {undefined | merge | temptable}] view view_name [(column_list)] as select_statement [with [cascaded | local] check option]该语句用于更改已有视图的定义。其语法与create view类似。

2. 使用举例

eg. 将上一小节中中创建的视purchase_detail进行修改,去掉qty列,语句如下:

alter view purchase_detail as select product.name as name, product .price as price, product .price * purchase.qty as total_value from product, purchase where product.product_id = purchase.product_id;

此时通过语句:select * from purchase_detail;对视图进行查询时,结果如下:

+-------+-------+-------------+

<!-- 正文结束 -->

0

<!-- 分享到微博 {$t_blog} -->
阅读(2742) 评论 (0) 收藏(0) 转载(8) 打印举报
已投稿到:
    <!-- 循环始 -->
  • 评论加载中,请稍候...<!-- 循环终 -->

登录名:密码:找回密码 注册 记住登录状态

昵   称:

分享到微博    评论并转载此博文

验证码:请点击后输入验证码 收听验证码

匿名评论
发评论

以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

<!--博文正文 end --> <script type="text/javascript"></script>
<!--第二列start--><!--第三列start-->
  
<!--第三列end-->
<!--主题内容结束 -->

新浪BLOG意见反馈留言板 不良信息反馈 电话:4006900000 提示音后按1键(按当地市话标准计费) 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

新浪公司 版权所有

<script id="PVCOUNTER_FORIE" type="text/javascript"></script><script type="text/javascript"></script><script src="http://sjs.sinajs.cn/blog7common/js/boot.js" type="text/javascript"></script><script type="text/javascript"></script><script type="text/javascript"></script>

 

 

<script src="http://blog.sina.com.cn/lm/iframe/js/blognew2011.js" type="text/javascript"></script><script src="http://blog.sina.com.cn/lm/iframe/js/blognew2011.js" type="text/javascript"></script><script src="http://blog.sina.com.cn/lm/iframe/js/blognew2011.js" type="text/javascript"></script><script src="http://blog.sina.com.cn/lm/iframe/js/blognew2011.js" type="text/javascript"></script>

分享到:
评论

相关推荐

    MySQL数据库:数据视图概述.pptx

    **MySQL数据库中的视图概述** 视图是数据库系统中一个重要的概念,它提供了一种抽象数据的方法,使得用户可以根据自己的需求看到数据库中的特定部分。在MySQL数据库中,视图是通过执行`SELECT`语句从一个或多个基本...

    Symbian视频讲座-33多视图概述

    《Symbian视频讲座-33多视图概述》是由北航分布与计算实验室推出的系列教程,主要聚焦于Symbian操作系统中的多视图技术。在这个视频讲座中,讲师将深入浅出地介绍多视图的概念、应用以及实现机制,为观众提供一个...

    正投影与三视图概述.pptx

    《正投影与三视图概述》这份材料主要面向初学者和那些需要深入理解技术绘图的人群。通过它,读者可以系统学习正投影的基本概念,以及如何利用三视图准确表达物体形状和尺寸。 在工程图样表达中,投影法扮演了基础的...

    数据库管理与应用 6.1视图概述tp.pdf

    数据库管理与应用 6.1视图概述tp.pdf 学习资料 复习资料 教学资源

    一基本体三视图概述二平面体的三视图及表面取点三PPT学习教案.pptx

    一基本体三视图概述二平面体的三视图及表面取点三PPT学习教案.pptx

    SQL Server视图概述.pdf

    SQL Server视图是数据库中的一种重要数据结构,它为数据库用户提供了一种从多个角度观察和访问数据的方式。视图本质上是一个虚拟表,它通过SQL查询语句定义,而这个查询语句确定了视图中将要显示的数据。尽管视图看...

    django中的视图概述

    之前学django时整理的视图笔记,这段时间在整理以前的东西,上传给大家以作参考

    SQL Server 2005中的视图概述

    **视图概述** 视图是数据库中预定义的SQL SELECT语句的结果集。它可以包含一个或多个表的数据,也可以包含其他视图。视图的创建主要是为了以下目的: 1. **简化数据访问**:通过创建视图,用户可以隐藏复杂的查询...

    内嵌视图简介

    #### 一、视图概述及其分类 在Oracle数据库系统中,视图是一种非常重要的逻辑结构,它可以帮助我们更高效地管理和查询数据。根据不同的应用场景和目的,视图主要分为四种类型:关系视图、内嵌视图、对象视图以及...

    Oracle 中的视图详解.pdf

    #### 视图概述 在Oracle数据库中,视图是一种非常重要的概念,它实质上是一条预定义的SQL查询语句,用于展示一个或多个表(或视图)中的数据。视图可以被视为一个虚拟的表,它的数据是在运行时动态从基表中获取的。...

    mysql视图简介.pdf

    #### 一、视图概述 视图是MySQL中一种重要的功能,它为用户提供了灵活的数据访问方式。简而言之,视图是一个虚拟表,其内容由一条SELECT语句定义。尽管视图看起来像是一个独立的表,但实际上它并不存储任何数据,...

    常用的oracle表和视图

    #### 九、Oracle系统表和视图概述 Oracle提供了大量的系统表和视图来帮助管理员管理数据库。以下是一些常见的视图和表: - **DBA_开头的视图**:这些视图提供了整个数据库的全局视图。 - `DBA_USERS`: 数据库用户...

    Oracle动态性能视图

    #### 一、Oracle动态性能视图概述 **Oracle动态性能视图**是一组预定义的视图,用于显示Oracle数据库的内部状态和活动信息。这些视图对于DBA(数据库管理员)来说非常重要,可以帮助他们监控数据库性能、诊断问题并...

    Oracle性能视图学习大全

    #### 二、V$视图概述 1. **创建与访问权限**:V$视图是在安装过程中由`catalog.sql`脚本创建的,创建时都带有前缀`v_$`。为了方便用户访问,又创建了一系列前缀为`V$`的视图,即所谓的“公共视图”,这些视图实际上...

    Oracle中的数据字典技术和动态性能视图

    #### 数据字典技术与动态性能视图概述 在Oracle数据库中,数据字典与动态性能视图是理解数据库内部运作机制的重要工具。两者都提供了丰富的信息用于诊断问题、监控性能以及管理数据库。 #### 数据字典视图与动态...

    数据库2005索引与视图

    7.3 视图概述: 视图是数据库中预定义的SQL查询结果,类似于虚拟表,但并不实际存储数据。它提供了简化数据访问和数据抽象的途径,可以隐藏复杂查询细节,提供安全访问控制,并允许对多表进行联合查询。 7.4 视图的...

    oracle 创建视图

    #### 视图概述 视图是基于一个或多个表(或视图)导出的虚拟表,它并不实际存储数据,而是存储一条SQL查询语句。通过视图可以简化复杂的查询过程,并提供了一种安全的数据访问机制,即可以通过授予用户对视图的访问...

    ORACLE 动态性能视图

    #### 动态性能视图概述 动态性能视图是一系列由Oracle服务器自动维护的视图,它们反映了数据库的实时状态和活动。这些视图通常以`V$`前缀命名,如`V$SESSION`、`V$PROCESS`等,其中`V$`是公共同义词,而实际的视图...

    ORACLE 物化视图 详解

    #### 一、物化视图概述 在Oracle数据库中,物化视图(Materialized View)是一种特殊的数据库对象,它存储的是一个查询的结果集,可以理解为一个预计算的快照。物化视图主要用于提高报表查询性能和实现数据复制等...

Global site tag (gtag.js) - Google Analytics