精华内容
下载资源
问答
  • 数据库中视图的作用

    万次阅读 多人点赞 2018-07-30 14:36:12
    数据库只存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的基本表。所以基本表的数据发生变化,从视图中查询出的数据也就随之改变了。从这个意义上讲,视图就像一个窗口,透过它可以看到数据库中...

    一、视图简介

    视图是从一个或几个基本表(或视图)导出的表。它与基本表不同,是一个虚表。数据库只存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的基本表中。所以基本表中的数据发生变化,从视图中查询出的数据也就随之改变了。从这个意义上讲,视图就像一个窗口,透过它可以看到数据库中自己感兴趣的数据及其变化。

    二、视图的优点

    既然视图的定义是基于基本表的,哪为什么还要定义视图呢?这是因为合理地使用视图能够带来许多好处:

    1. 视图能简化用户操作

    视图机制使用户可以将注意力集中在所关心地数据上。如果这些数据不是直接来自基本表,则可以通过定义视图,使数据库看起来结构简单、清晰,并且可以简化用户的的数据查询操作。例如,那些定义了若干张表连接的视图,就将表与表之间的连接操作对用户隐藏起来了。换句话说,用户所作的只是对一个虚表的简单查询,而这个虚表是怎样得来的,用户无需了解。

    2. 视图使用户能以多种角度看待同一数据

    视图机制能使不同的用户以不同的方式看待同一数据,当许多不同种类的用户共享同一个数据库时,这种灵活性是非常必要的。

    3. 视图对重构数据库提供了一定程度的逻辑独立性

    数据的物理独立性是指用户的应用程序不依赖于数据库的物理结构。数据的逻辑独立性是指当数据库重构造时,如增加新的关系或对原有的关系增加新的字段,用户的应用程序不会受影响。层次数据库和网状数据库一般能较好地支持数据的物理独立性,而对于逻辑独立性则不能完全的支持。

    在关许数据库中,数据库的重构造往往是不可避免的。重构数据库最常见的是将一个基本表“垂直”地分成多个基本表。例如:将学生关系Student(Sno,Sname,Ssex,Sage,Sdept),

    分为SX(Sno,Sname,Sage)和SY(Sno,Ssex,Sdept)两个关系。这时原表Student为SX表和SY表自然连接的结果。如果建立一个视图Student:

    CREATE VIEW Student(Sno,Sname,Ssex,Sage,Sdept)
    
    AS
    
    SELECT SX.Sno,SX.Sname,SY.Ssex,SX.Sage,SY.Sdept
    
    FROM SX,SY
    
    WHERE SX.Sno=SY.Sno;

    这样尽管数据库的逻辑结构改变了(变为SX和SY两个表了),但应用程序不必修改,因为新建立的视图定义为用户原来的关系,使用户的外模式保持不变,用户的应用程序通过视图仍然能够查找数据。

    当然,视图只能在一定程度上提供数据的逻辑独立,比如由于视图的更新是有条件的,因此应用程序中修改数据的语句可能仍会因为基本表构造的改变而改变。

    4. 视图能够对机密数据提供安全保护

    有了视图机制,就可以在设计数据库应用系统时,对不同的用户定义不同的视图,使机密数据不出现在不应该看到这些数据的用户视图上。这样视图机制就自动提供了对机密数据的安全保护功能。例如,Student表涉及全校15个院系学生数据,可以在其上定义15个视图,每个视图只包含一个院系的学生数据,并只允许每个院系的主任查询和修改本原系学生视图。

    5. 适当的利用视图可以更清晰地表达查询

    例如经常需要执行这样的查询“对每个学生找出他获得最高成绩的课程号”。可以先定义一个视图,求出每个同学获得的最高成绩:

    CREATE VIEW VMGRADE
    
    AS
    
    SELECT Sno,MAX(Grade) Mgrade
    
    FROM SC
    
    GROUP BY Sno;
    
    --然后用如下的查询语句完成查询:
    
    SELECT SC.Sno,Cno
    
    FROM SC,VMGRADE
    
    WHERE SC.Sno = VMGRADE.Sno AND SC.Grade = VMGRADE.Mgrade;

     

    展开全文
  • 一、问题问题:我使用nativecat创建的存储过程、视图,当进行数据迁移后不知为何存储过程丢失,于是,我要找啊,但是不知道哪找,于是查了一下,发现了他们的存放过程。二、解决方法:2.1 存储过程或函数存放位置...

    一、问题

    问题:我使用nativecat创建的存储过程、视图,当进行数据迁移后不知为何存储过程丢失,于是,我要找啊,但是不知道在哪找,于是查了一下,发现了他们的存放过程。

    二、解决方法:

    2.1 存储过程或函数

    存放位置:

    mysql数据库=====》proc表存放对存储过程或函数的描述;

    information_schema数据库=====》ROUTINES表存放具体的存储过程

      2.2 视图

    information_schema数据库=====》VIEWES表存放具体的视图定义

    展开全文
  • 数据库 - 视图

    千次阅读 2015-05-05 14:30:49
    只存放视图的定义,不存放视图对应的数据 基表的数据发生变化,从视图中查询出的数据也随之改变 基于视图的操作 查询 删除 受限更新 定义基于该视图的新视图定义视图建立视图: 语句格式 CREATE VIEW ...

    视图

    视图的特点
    虚表,是从一个或几个基本表(或视图)导出的表
    只存放视图的定义,不存放视图对应的数据
    基表中的数据发生变化,从视图中查询出的数据也随之改变
    基于视图的操作
    查询
    删除
    受限更新
    定义基于该视图的新视图

    定义视图

    建立视图:
    语句格式
           CREATE  VIEW 
                 <视图名>  [(<列名>  [,<列名>]…)]
           AS  <子查询>
           [WITH  CHECK  OPTION];
    组成视图的属性列名:全部省略或全部指定
    子查询不允许含有ORDER BY子句和DISTINCT短语
    

    RDBMS执行CREATE VIEW语句时只是把视图定义存入数据字典,并不执行其中的SELECT语句。
    在对视图查询时,按视图的定义从基本表中将数据查出。

     [例1]  建立信息系学生的视图。
    
            CREATE VIEW IS_Student
            AS 
            SELECT Sno,Sname,Sage
            FROM    Student
            WHERE  Sdept= 'IS'
    [例2]建立信息系学生的视图,并要求进行修改和插入操作时仍需保证该视图只有信息系的学生 。
            CREATE VIEW IS_Student
            AS 
            SELECT Sno,Sname,Sage
            FROM  Student
            WHERE  Sdept= 'IS'
            WITH CHECK OPTION

    对IS_Student视图的更新操作:
    修改操作:自动加上Sdept= ‘IS’的条件
    删除操作:自动加上Sdept= ‘IS’的条件
    插入操作:自动检查Sdept属性值是否为’IS’
    如果不是,则拒绝该插入操作
    如果没有提供Sdept属性值,则自动定义Sdept为’IS’

    基于多个基表的视图
    
    [例3]  建立信息系选修了1号课程的学生视图。
            CREATE VIEW IS_S1(Sno,Sname,Grade)
            AS 
            SELECT Student.Sno,Sname,Grade
            FROM  Student,SC
            WHERE  Sdept= 'IS' AND
                           Student.Sno=SC.Sno AND
                           SC.Cno= '1'
    基于视图的视图
    
        [例4]  建立信息系选修了1号课程且成绩在90分以上的学生的视图。
            CREATE VIEW IS_S2
            AS
            SELECT Sno,Sname,Grade
            FROM  IS_S1
            WHERE  Grade>=90
    带表达式的视图
    
    [例5]  定义一个反映学生出生年份的视图。
            CREATE  VIEW BT_S(Sno,Sname,Sbirth)
            AS 
            SELECT Sno,Sname,2000-Sage
            FROM  Student;
    
    分组视图
    
    [例6]  将学生的学号及他的平均成绩定义为一个视图
               假设SC表中“成绩”列Grade为数字型
                CREAT  VIEW S_G(Sno,Gavg)
                 AS  
                 SELECT Sno,AVG(Grade)
                 FROM  SC
                 GROUP BY Sno;
    
    不指定属性列
    [例7]将Student表中所有女生记录定义为一个视图
          CREATE VIEW F_Student(F_Sno,name,sex,age,dept)
          AS
          SELECT *
          FROM  Student
          WHERE Ssex=‘女’;
    
         缺点:
         修改基表Student的结构后,Student表与F_Student视图的映象关系被破坏,导致该视图不能正确工作
    删除视图:
    语句的格式:
            DROP  VIEW  <视图名>;
    该语句从数据字典中删除指定的视图定义
    如果该视图上还导出了其他视图,使用CASCADE级联删除语句,把该视图和由它导出的所有视图一起删除 
    删除基表时,由该基表导出的所有视图定义都必须显式地使用DROP VIEW语句删除 
    
    [例8]  删除视图BT_S: DROP VIEW BT_S;
    
                  删除视图IS_S1:DROP VIEW IS_S1;
    拒绝执行
    级联删除:
                         DROP VIEW IS_S1 CASCADE;       
    

    查询视图

    用户角度:查询视图与查询基本表相同
    RDBMS实现视图查询的方法
    视图消解法(View Resolution)
    进行有效性检查
    转换成等价的对基本表的查询
    执行修正后的查询

    [例9]  在信息系学生的视图中找出年龄小于20岁的学生。
    
            SELECT   Sno,Sage
            FROM      IS_Student
            WHERE   Sage<20;
    
    IS_Student视图的定义 (参见视图定义例1)
    
    视图消解转换后的查询语句为:
    
     SELECT  Sno,Sage       
     FROM  Student
     WHERE  Sdept= 'IS'  AND  Sage<20
    [例10]  查询选修了1号课程的信息系学生
    SELECT  IS_Student.Sno,Sname
    FROM     IS_Student,SC
    WHERE  IS_Student.Sno =SC.Sno AND SC.Cno= '1'
    [例11]在S_G视图中查询平均成绩在90分以上的学生学号和平均成绩
    SELECT *
    FROM   S_G
    WHERE  Gavg>=90;
    
           S_G视图的子查询定义: 
             CREATE VIEW S_G (Sno,Gavg)
             AS 
    SELECT  Sno,AVG(Grade)
    FROM  SC
    GROUP BY Sno;
    
    错误:
    SELECT Sno,AVG(Grade)
    FROM     SC
    WHERE  AVG(Grade)>=90
    GROUP BY Sno;
    
    正确:
    SELECT  Sno,AVG(Grade)
    FROM  SC
    GROUP BY Sno
    HAVING AVG(Grade)>=90

    更新视图

    [例12]  将信息系学生视图IS_Student中学号200215122的学生姓名改为“刘辰”。
    UPDATE  IS_Student
    SET  Sname= '刘辰'
    WHERE  Sno= ' 200215122 ';
    转换后的语句:
    UPDATE  Student
    SET Sname= '刘辰'
    WHERE Sno= ' 200215122 ' AND Sdept= 'IS'
    [例13]  向信息系学生视图IS_S中插入一个新的学生记录:200215129,赵新,20岁
    INSERT
    INTO IS_Student
    VALUES(‘200215129’,‘赵新’,20);
    转换为对基本表的更新:
    INSERT
    INTO   Student(Sno,Sname,Sage,Sdept)
    VALUES(‘200215129 ','赵新',20,'IS' );
    
    [例14]删除信息系学生视图IS_Student中学号为200215129的记录 
    DELETE
    FROM IS_Student
    WHERE Sno= ' 200215129 ';
    转换为对基本表的更新:
    DELETE
    FROM Student
    WHERE Sno= ' 200215129 ' AND Sdept= 'IS'

    更新视图的限制:一些视图是不可更新的,因为对这些视图的更新不能唯一地有意义地转换成对相应基本表的更新

    例:视图S_G为不可更新视图。

    UPDATE  S_G
    SET          Gavg=90
    WHERE  Sno= ‘200215121’;

    这个对视图的更新无法转换成对基本表SC的更新

    视图的作用

    1. 视图能够简化用户的操作
    2. 视图使用户能以多种角度看待同一数据
    3. 视图对重构数据库提供了一定程度的逻辑独立性
    4. 视图能够对机密数据提供安全保护
    5. 适当的利用视图可以更清晰的表达查询
    展开全文
  • MySQL数据库中视图的作用

    千次阅读 2013-02-04 09:32:54
    数据库只存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的基本表。所以基本表的数据发生变化,从视图中查询出的数据也就随之改变了。从这个意义上讲,视图就像一个窗口,透过它可以看到数据库中...

    数据库中视图的作用

    视图是从一个或几个基本表(或视图)导出的表。它与基本表不同,是一个虚表。数据库只存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的基本表中。所以基本表中的数据发生变化,从视图中查询出的数据也就随之改变了。从这个意义上讲,视图就像一个窗口,透过它可以看到数据库中自己感兴趣的数据及其变化。

    既然视图的定义是基于基本表的,哪为什么还要定义视图呢?这是因为合理地使用视图能够带来许多好处:

    1、 视图能简化用户操作

    视图机制使用户可以将注意力集中在所关心地数据上。如果这些数据不是直接来自基本表,则可以通过定义视图,使数据库看起来结构简单、清晰,并且可以简化用户的的数据查询操作。例如,那些定义了若干张表连接的视图,就将表与表之间的连接操作对用户隐藏起来了。换句话说,用户所作的只是对一个虚表的简单查询,而这个虚表是怎样得来的,用户无需了解。

    2、 视图使用户能以多种角度看待同一数据

    视图机制能使不同的用户以不同的方式看待同一数据,当许多不同种类的用户共享同一个数据库时,这种灵活性是非常必要的。

    3、 视图对重构数据库提供了一定程度的逻辑独立性

    数据的物理独立性是指用户的应用程序不依赖于数据库的物理结构。数据的逻辑独立性是指当数据库重构造时,如增加新的关系或对原有的关系增加新的字段,用户的应用程序不会受影响。层次数据库和网状数据库一般能较好地支持数据的物理独立性,而对于逻辑独立性则不能完全的支持。

    在关许数据库中,数据库的重构造往往是不可避免的。重构数据库最常见的是将一个基本表“垂直”地分成多个基本表。例如:将学生关系Student(Sno,Sname,Ssex,Sage,Sdept),

    分为SX(Sno,Sname,Sage)和SY(Sno,Ssex,Sdept)两个关系。这时原表Student为SX表和SY表自然连接的结果。如果建立一个视图Student:

    CREATE VIEW Student(Sno,Sname,Ssex,Sage,Sdept)

    AS

    SELECT SX.Sno,SX.Sname,SY.Ssex,SX.Sage,SY.Sdept

    FROM SX,SY

    WHERE SX.Sno=SY.Sno;

    这样尽管数据库的逻辑结构改变了(变为SX和SY两个表了),但应用程序不必修改,因为新建立的视图定义为用户原来的关系,使用户的外模式保持不变,用户的应用程序通过视图仍然能够查找数据。

    当然,视图只能在一定程度上提供数据的逻辑独立,比如由于视图的更新是有条件的,因此应用程序中修改数据的语句可能仍会因为基本表构造的改变而改变。

    4、视图能够对机密数据提供安全保护

    有了视图机制,就可以在设计数据库应用系统时,对不同的用户定义不同的视图,使机密数据不出现在不应该看到这些数据的用户视图上。这样视图机制就自动提供了对机密数据的安全保护功能。例如,Student表涉及全校15个院系学生数据,可以在其上定义15个视图,每个视图只包含一个院系的学生数据,并只允许每个院系的主任查询和修改本原系学生视图。

    5、适当的利用视图可以更清晰地表达查询

    例如经常需要执行这样的查询“对每个学生找出他获得最高成绩的课程号”。可以先定义一个视图,求出每个同学获得的最高成绩:

    CREATE VIEW VMGRADE

    AS

    SELECT Sno,MAX(Grade) Mgrade

    FROM SC

    GROUP BY Sno;

    然后用如下的查询语句完成查询:

    SELECT SC.Sno,Cno

    FROM SC,VMGRADE

    WHERE SC.Sno = VMGRADE.Sno AND SC.Grade = VMGRADE.Mgrade;

    展开全文
  • 数据库视图

    2017-08-09 11:46:49
    对我自己而言,数据库视图使用的...数据库只存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的基本表。所以基本表的数据发生变化,从视图查询出的数据也就随之改变了。从这个意义上讲,视图就像
  • 数据库视图、索引

    千次阅读 2016-10-10 09:03:01
    数据库视图以及索引的概念和作用介绍
  • 数据库——视图

    热门讨论 2014-08-10 19:59:28
     视图是虚表,是从一个或几个基本表(或视图导出的表,系统的数据字典存放视图的定义,不存放视图对应的数据。 为什么用视图:  视图不仅可以简化用户对数据的理解,也可以简化他们的操作。那些被经常...
  • 数据库视图

    千次阅读 2013-10-22 21:05:47
    当我们创建一个视图时,只是把其视图的定义存放在数据字典用户使用时才去求对应的数据。 二、视图的作用  1、简单性。看到的就是需要的。视图不后的操作每次指定全部的条件仅可以简化用户对数据的理解,也...
  • 数据库-视图

    2007-06-21 17:19:00
     视图是从一个或多个实际表获得的,这些表的数据存放在数据库中。那些用于产生视图的表叫做该视图的基表。一个视图也可以从另一个视图中产生。 视图的定义存在数据库中,与此定义相关的数据并没有
  • 数据库中视图理解和优点介绍

    万次阅读 2016-10-31 20:21:03
    数据库中视图的概念:视图是从一个表或是多个表导出的表,视图与表...可以将视图看做是移动的窗口,通过它可以看到自己感兴趣的数据,视图是从一个或是多个表获得的,这些表的数据存放在数据库中,那些用户产生视图
  • 达梦数据库视图管理

    千次阅读 2019-12-31 17:02:12
    达梦数据库视图管理 视图(view),也称虚表, 不占用物理空间,因为视图本身的定义语句还是要...视图是从一个或多个实际表获得的,这些表的数据存放在数据库中。那些用于产生视图的表叫做该视图的基表,一个...
  • 数据库 模式 视图 索引

    千次阅读 2018-10-02 16:24:46
    数据模型有“型”(Type)和“值”(Value)的概念。型是指对某一类数据的结构和属性的说明,值是型的一个具体赋值。数据库系统的模式是数据库中全体数据的逻辑结构和特征的描述,它仅仅涉及到型的描述,不涉及...
  • 数据库中视图

    2007-11-28 13:53:00
    视图是从一个或多个表或视图中导出的表,结构和数据是建立对表的查询基础上的。和表一样,视图也是包括几个被定义的数据列和多个数据行,但就本质而言这些数据列和数据行来源于所引用的表。所以视图不是真实...
  • 任务五 数据库视图设计 ...多表上建立视图3.创建带表达式的视图4.创建分组视图二、查看视图1.使用DESC语句查看视图2.使用SHOW TABLE STATUS语句查看视图3.使用SHOW CREATE VIEW查看视图三、查询视图...
  • 介绍 oracle 数据库中视图信息在数据库的存储详细信息。
  • 数据库视图和索引的概念和区别

    万次阅读 2016-07-19 15:39:04
    一、视图 1、什么是视图视图是从一个或多个表导出来的表,是一种...数据库中只存放视图的定义,而没有存放视图中的数据,这些数据存放在原来的表。 使用视图查询数据时,数据库系统会从原来的表取出
  • SQL数据库视图

    千次阅读 2017-11-01 15:07:45
    视图只能建立当前正在使用的数据库中。 优点:1.可以使视图集中数据、简化和定制不同用户对数据库的不同数据要求。 2.使用视图可以屏蔽数据的复杂性,用户不必了解数据库的结构,就可以方便地使用和管理数据,简化...
  • 数据库 视图基础概念

    万次阅读 2019-01-19 11:06:12
    数据库中视图的概念: 视图是从一个表或是多个表导出的表,视图与表...可以将视图看做是移动的窗口,通过它可以看到自己感兴趣的数据,视图是从一个或是多个表获得的,这些表的数据存放在数据库中,那些用户产生...
  • #数据库--第4章 数据库视图

    千次阅读 2020-05-02 17:25:13
    #数据库--第4章 数据库视图一、什么是视图?二、视图的创建三、视图的删除四、视图的查询五、视图的增删改六、总结:   这一章节将会介绍所有的数据库视图操作,使用的数据是 第一章...  数据库中只存放视图的定...
  • 视图是指计算机数据库中视图,是一个虚拟表,内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用...
  • 数据库视图

    千次阅读 2019-05-27 18:46:04
    视图是一个虚拟表,内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据 基本使用 创建视图 create view 视图名 as select 语句; 视图的数据变化会影响到基表,基表的数据变化也会影响到...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 105,695
精华内容 42,278
关键字:

在数据库中视图只存放其