`
endual
  • 浏览: 3517589 次
  • 性别: 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

    视图概述 数据视图 课程目标 理解 —— 理解视图的概念及存储; 了解 ——了解视图的优点。 视图概述 视图是从一个或者几个基本表或者视图中导出的虚拟表,是从现有基表中抽取若干子集组成用户的“专用表”,这种...

    SQL Server视图概述.pdf

    SQL Server视图概述.pdf

    正投影与三视图概述.pptx

    正投影与三视图概述.pptx

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

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

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

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

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

    北航分布与计算实验室-Symbian视频讲座-33多视图概述,用Flash播放器播放

    django中的视图概述

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

    SQL Server 2005中的视图概述

    视图概述,系统视图,视图创建以及绑定和保护视图。

    uml状态机视图概述

    火龙果软件工程技术中心 概述状态机视图通过对类对象的生存周期建立模型来描述对象随时间变化的动态行为。每一个对象都被看作是通过对事件进行探测并做出回应来与外界其他部分通信的独立的实体。事件表示对象可以...

    【MySQL数据库设计与应用(四)】视图

    文章目录1 视图概述、创建视图1.1 基本概念1.2 创建视图(1)在单表中创建视图(2)在多表中创建视图(3)在视图中创建新视图2 查看视图、修改视图2.1 查看视图2.2 修改视图3 视图数据更新、删除3.1 视图数据更新3.2...

    第14章_视图1

    第14章_视图讲师:尚硅谷-宋红康(江湖人称:康师傅)1. 常见的数据库对象2. 视图概述2.1 为什么使用视图?视图一方面可以帮我们使用表的一部分而不是所有的

    第14章_视图3

    第14章_视图讲师:尚硅谷-宋红康(江湖人称:康师傅)1. 常见的数据库对象2. 视图概述北京宏福校区:010-56253825深圳西部硅谷校区:0755-23

    immutable-views:其他集合对象的不变视图

    不可变视图-其他集合对象的不可变视图概述immutable-views包提供的集合类是其他(可变)集合对象上的不可变视图: 另一个映射对象的不可变视图。 在另一个列表(序列)对象上的变视图。 在另一个set对象上的变视图。...

    2021年MySQL高级教程视频.rar

    12.MySQL高级视图概述.avi 13.MySQL高级视图创建及修改视图.avi 14.MySQL高级视图查看及删除视图.avi 15.MySQL高级存储过程概述.avi 16.MySQL高级存储过程创建调用查询删除语法.avi 17.MySQL高级存储过程语法变量....

    精通sql结构化查询语句

    5.2.5 创建复合索引 5.3 删除索引 5.3.1 删除索引的语句结构 5.3.2 使用SQL语句删除索引 5.4 视图的基础知识 5.4.1 视图概述 5.4.2 视图的优点与缺点 5.5 视图的基本操作 5.5.1 创建视图的基本语句结构 5.5.2 使用...

    SQLServer2008数据库基础入门教程含思考题练习题 第10章 视图 共25页.ppt

    【概述】 从表的角度来看,每一个表都存储了大量数据,通过表可以查看到表中的数据。但是,从业务数据角度来看,同一种业务数据有可能分散在不同的表中,如何从一个数据库对象中查看这些分散存储的数据呢?从安全...

    PICircularProgressView

    PIC循环进度视图概述PICircularProgressView是UIView的子类,具有圆形的UIProgressView属性和表示进度的圆圈中的文本。 它基于来自用于 OS X 的TSPCircularProgressIndicator 。安装将PICircularProgressView目录...

    UML 教程 全面了解uml模型图,基本视图,学习方法

    . 引 论; 2. 建模技术; 3. UML的模型图; 4. UML的基本视图; 5. 标准建模过程概述; UML的学习方法和应用领域; 6.小 结。

    Symbian视频讲座-31视图与控制概述

    北航分布与计算实验室-Symbian视频讲座-30对话框练习,用Flash播放器播放

Global site tag (gtag.js) - Google Analytics