视图 订阅
视图是指计算机数据库中的视图,是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。 展开全文
视图是指计算机数据库中的视图,是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。
信息
外文名
view
安全性
用户只能看到标有自己用户名的行
作    用
简单、安全、逻辑数据独立性
含    义
存储在数据库中的查询的SQL 语句
中文名
视图
优    点
视点集中简化操作定制数据安全性
视图视图含义
从用户角度来看,一个视图是从一个特定的角度来查看数据库中的数据。从数据库系统内部来看,一个视图是由SELECT语句组成的查询定义的虚拟表。从数据库系统内部来看,视图是由一张或多张表中的数据组成的,从数据库系统外部来看,视图就如同一张表一样。视图可以查询,但不可以新 计算机视图(16张) 增、删除、修改。视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图的作用类似于筛选。定义视图的筛选可以来自当前或其它数据库的一个或多个表,或者其它视图。分布式查询也可用于定义使用多个异类源数据的视图。视图是存储在数据库中的查询的SQL 语句,它主要出于两种原因:安全原因, 视图可以隐藏一些数据,如:社会保险基金表,可以用视图只显示姓名,地址,而不显示社会保险号和工资数等,另一原因是可使复杂的查询易于理解和使用。视图:查看图形或文档的方式。视图一经定义便存储在数据库中,与其相对应的数据并没有像表 计算机中的视图(20张) 那样又在数据库中再存储一份,通过视图看到的数据只是存放在基本表中的数据。对视图的操作与对表的操作一样,可以对其进行查询、修改(有一定的限制)、删除。当对通过视图看到的数据进行修改时,相应的基本表的数据也要发生变化,同时,若基本表的数据发生变化,则这种变化也可以自动地反映到视图中。
收起全文
精华内容
参与话题
问答
  • Mysql数据库基础入门视频教程

    万人学习 2018-10-24 16:59:26
    Mysql数据库基础入门视频课程:属于零基础Mysql数据库教程,从数据库的基本专业术语介绍到数据库软件的下载使用 一步一步带你安装MySql。...最后视图,存储过程,索引的学习,将会带你掌握更高级的数据库技术.
  • MySQL数据库视图:视图定义、创建视图、修改视图

    万次阅读 多人点赞 2017-03-20 11:54:15
    视图是指计算机数据库中的视图,是一个虚拟表,其内容由查询定义。视图不直接存储数据,不知真正的表。 关系型数据库中的数据是由一张一张的二维关系表所组成,简单的单表查询只需要遍历一个表,而复杂的多表查询...

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

    关系型数据库中的数据是由一张一张的二维关系表所组成,简单的单表查询只需要遍历一个表,而复杂的多表查询需要将多个表连接起来进行查询任务。对于复杂的查询事件,每次查询都需要编写MySQL代码效率低下。为了解决这个问题,数据库提供了视图(view)功能。

    0 视图相关的MySQL指令

    操作指令 代码
    创建视图 CREATE VIEW 视图名(列1,列2...) AS SELECT (列1,列2...) FROM ...;
    使用视图 当成表使用就好
    修改视图 CREATE OR REPLACE VIEW 视图名 AS SELECT [...] FROM [...];
    查看数据库已有视图 >SHOW TABLES [like...];(可以使用模糊查找)
    查看视图详情 DESC 视图名或者SHOW FIELDS FROM 视图名
    视图条件限制 [WITH CHECK OPTION]

    1 视图

    百度百科定义了什么是视图,但是对缺乏相关知识的人可能还是难以理解或者只有一个比较抽象的概念,笔者举个例子来解释下什么是视图。

    朕想要了解皇宫的国库的相关情况,想知道酒窖有什么酒,剩多少,窖藏多少年,于是派最信任的高公公去清点,高公公去国库清点后报给了朕;朕又想知道藏书情况,于是又派高公公去清点并回来报告给朕,又想知道金银珠宝如何,又派高公公清点。。。过一段时间又想知道藏书情况,高公公还得重新再去清点,皇上问一次,高公公就得跑一次路。

    后来皇上觉得高公公不容易,就成立了国库管理部门,小邓子负责酒窖,小卓子负责藏书,而小六子负责金库的清点。。。后来皇上每次想了解国库就直接问话负责人,负责人就按照职责要求进行汇报。
    视图

    安排专人管理后,每次皇上想要了解国库情况,就不必让高公公每次都跑一趟,而是指定的人员按照指定的任务完成指定的汇报工作就可以了。

    和数据库相对应,每次进行查询工作,都需要编写查询代码进行查询;而视图的作用就是不必每次都重新编写查询的SQL代码,而是通过视图直接查询即可。因此:

    视图是虚拟表,本身不存储数据,而是按照指定的方式进行查询。

    比如,我们希望从前文提到的四张表,order_baisc,order_details,user和product中查找所有记录,需要写入代码指令:
    查询
    想再次查询这几个表中uid为u0001的用户的记录,有需要键入一次操作指令:
    查询
    也就是说,每次查询都得重新键入查询指令SQL代码,这种费时费力的体力活,对于时间就是生命的你我来说,是不划算的。所以借助视图,来执行相同或相似的查询。

    2 创建视图

    2.1 创建视图create view
    创建视图的代码为:

    >CREATE VIEW 视图名(列1,列2...)
     AS SELECT (列1,列2...)
     FROM ...;

    可以看到,创建视图和查询相比,增加了前面的CREATE VIEW 视图名 AS

    2.2 视图运用

    使用视图和使用表完全一样,只需要把视图当成一张表就OK了。视图是一张虚拟表。

    eg:创建order_baisc,order_details,user和product的查询视图,并通过视图查找uid为u0001的记录:
    创建视图

    2.3 修改视图CREATE OR REPLACE VIEW

    修改和创建视图可以使用代码:

    CREATE OR REPLACE VIEW 视图名 AS SELECT [...] FROM [...];

    eg:
    修改视图

    2.4 查看视图
    (1)查看数据库中有哪些视图 show tables
    前面提到,视图就是虚拟的表,因此,查看视图的方法和查看表的方法是一样的:

    >SHOW TABLES;

    查看视图

    通过show tables;反馈得到所有的表和视图。同样的,我们可以通过模糊检索的方式专门查看视图,这个时候,视图的命令统一采用v_v_视图名的优势就体现出来了。
    (2)查看视图详情
    查看视图详情的方法有两种,一种是和查看表详情一样使用desc 视图名,另外一种方法是show fields from 视图名

    >DESC 视图名;
    或者
    >SHOW FIELDS FROM 视图名;

    查看视图详情

    两种方法得到的详情都是一毛一样的。

    3 视图与数据变更

    3.1 表格数据变更
    将表product中的数据进行更新,在通过视图检索:

    视图与数据变更

    可以看到表格数据变化后,在通过视图检索,得到的结果也同步发生了变化,因此,在此证明了:

    视图不是表,不保存数据,知识一张虚拟表;

    3.2 通过视图变更数据

    • (1)插入数据
    >INSERT INTO v_order(pid,pname,price) VALUES('p010','柴油','34');

    在此查询视图,发现插入了数据。

    视图变更数据

    • (2)跨表插入数据
      通过上图,我们可以看到,跨表插入数据系统反馈报错,提示不能修改超过一个表的数据。

    因此,可以通过视图插入数据,但是只能基于一个基础表进行插入,不能跨表更新数据。

    • (3)WITH CHECK OPTION
      如果在创建视图的时候制定了“WITH CHECK OPTION”,那么更新数据时不能插入或更新不符合视图限制条件的记录。

      eg:对表product创建一个单价超过3000的视图,并加上“WITH CHECK OPTION”,之后插入一个价格为42的记录:

      “WITH CHECK OPTION”

      可以看到系统提示错误CHECK OPTION FAILED。因为视图限制了价格要高于3000.
      后面再次尝试了不加“WITH CHECK OPTION”的视图,后者可以成功插入。

      同样的,在不加“WITH CHECK OPTION”的情况下,通过视图修改记录,也可以成功执行:
      修改记录

    通过视图修改,可能导致数据无故消失,因此:

    没有特殊的理由,建议加上“WITH CHECK OPTION”命令。

    注意点:
    1. 视图不是表,不直接存储数据,是一张虚拟的表;
    2. 一般情况下,在创建有条件限制的视图时,加上“WITH CHECK OPTION”命令。

    展开全文
  • 数据库 - 视图

    千次阅读 2015-05-05 14:30:49
    视图视图的特点 虚表,是从一个或几个基本表(或视图)导出的表 只存放视图的定义,不存放视图对应的数据 基表中的数据发生变化,从视图中查询出的数据也随之改变 基于视图的操作 查询 删除 受限更新 ...

    视图

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

    定义视图

    建立视图:
    语句格式
           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. 适当的利用视图可以更清晰的表达查询
    展开全文
  • 数据库视图

    千次阅读 2009-03-07 10:14:00
    视图做为数据库中的一种实体,实际上存在的只是它的脚本,而它的内容并不真正的单独存在一份。一般,可以对复杂的应用程序从功能角度进行分析,将可以与其它的应用程序共用的那一部分,分离出来。对这部分功能,视...
    视图有以下几方面的功能:
    1。简化应用程序。
    视图做为数据库中的一种实体,实际上存在的只是它的脚本,而它的内容并不真正的单独存在一份。一般,可以对复杂的应用程序从功能角度进行分析,将可以与其它的应用程序共用的那一部分,分离出来。对这部分功能,视具体情况可做成不同的数据库实体(如过程),有些是可以做成视图的。这样,上层的应用程序就可以从视图中取数据了。
    还有,可以把对远地数据库的访问封装在视图中,使之对上层应用程序透明。
    2。可以对 UNION 后的记录集排序。
    直接对以下语句的结果排序,是不可能的(至少我不知道怎么直接排序)。
    select a.id id from a
    union
    select b.id id from b;
    所以把以上语句作成视图后,就可以了。设视图名为A_B:
    select id from A_B order by id;
    3。可以实现一定的权限控制。
    可以根据需要,对表中的一部分内容做一个视图,以供一定的角色使用。可以对表中的一部分记录做一个视图(纵向),也可以对一个表中的一部分字段做一个视图(横向),或二者兼而有之。
    暂时想了这么多,希望大家多多指正与补充。
    --------------------------------------------------------------------
    视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。

           对其中所引用的基础表来说,视图的作用似于筛选。定义视图的筛选可以来自当前或其它数据库的一个或多个表,或者其它视图。分布式查询也可用于定义使用多个异类源数据的视图。如果有几台不同的服务器分别存储组织中不同地区的数据,而您需要将这些服务器上相似结构的数据组合起来,这种方式就很有用。

    一、视图的作用

           * 简单性。看到的就是需要的。视图不仅可以简化用户对数据的理解,也可以简化他们的操作。那些被经常使用的查询可以被定义为视图,从而使得用户不必为以后的操作每次指定全部的条件。

           * 安全性。通过视图用户只能查询和修改他们所能见到的数据。数据库中的其它数据则既看不见也取不到。数据库授权命令可以使每个用户对数据库的检索限制到特定的数据库对象上,但不能授权到数据库特定行和特定的列上。通过视图,用户可以被限制在数据的不同子集上:

           使用权限可被限制在基表的行的子集上。
           使用权限可被限制在基表的列的子集上。
           使用权限可被限制在基表的行和列的子集上。
           使用权限可被限制在多个基表的连接所限定的行上。
           使用权限可被限制在基表中的数据的统计汇总上。
           使用权限可被限制在另一视图的一个子集上,或是一些视图和基表合并后的子集上。

           * 逻辑数据独立性。视图可帮助用户屏蔽真实表结构变化带来的影响。

    二、视图的优点

           (1)视图能简化用户的操作
           (2)视图机制可以使用户以不同的方式查询同一数据
           (3)视图对数据库重构提供了一定程度的逻辑独立性
           (4)视图可以对机密的数据提供安全保护

    三、视图的安全性

           视图的安全性可以防止未授权用户查看特定的行或列,是用户只能看到表中特定行的方法如下:

           1 在表中增加一个标志用户名的列;

           2 建立视图,是用户只能看到标有自己用户名的行;

           3 把视图授权给其他用户。

    四、逻辑数据独立性

           视图可以使应用程序和数据库表在一定程度上独立。如果没有视图,应用一定是建立在表上的。有了视图之后,程序可以建立在视图之上,从而程序与数据库表被视图分割开来。视图可以在以下几个方面使程序与数据独立:

           1 如果应用建立在数据库表上,当数据库表发生变化时,可以在表上建立视图,通过视图屏蔽表的变化,从而应用程序可以不动。

           2 如果应用建立在数据库表上,当应用发生变化时,可以在表上建立视图,通过视图屏蔽应用的变化,从而使数据库表不动。

           3 如果应用建立在视图上,当数据库表发生变化时,可以在表上修改视图,通过视图屏蔽表的变化,从而应用程序可以不动。

           4 如果应用建立在视图上,当应用发生变化时,可以在表上修改视图,通过视图屏蔽应用的变化,从而数据库可以不动。

    五、视图的书写格式

    CREATE VIEW <视图名>[(列名组)]
    AS <子查询>

    DROP VIEW <索引名>

    注意:视图可以和基本表一样被查询,但是利用视图进行数据增,删,改操作,会受到一定的限制。

    (1)由两个以上的基本表导出的视图
    (2)视图的字段来自字段表达式函数
    (3)视图定义中有嵌套查询
    (4)在一个不允许更新的视图上定义的视

    展开全文
  • 数据库管理系统

    千次阅读 2018-10-24 00:14:00
    一、数据库管理系统的基本功能 ...在关系数据库中就是建立数据库(或模式)、表、视图、索引等,还有创建用户、安全保密定义(如用户口令、级别、角色、存取权限)、数据库的完整性定义。这些定义存储在数据字典(亦...

    一、数据库管理系统的基本功能

    数据库管理系统主要是实现对共享数据有效的组织、存储、管理和存取。围绕数据,数据库管理系统的功能为:

    1、数据库定义和创建

    创建数据库主要是用数据定义语言定义和创建数据库模式、外模式、内模式等数据库对象。在关系数据库中就是建立数据库(或模式)、表、视图、索引等,还有创建用户、安全保密定义(如用户口令、级别、角色、存取权限)、数据库的完整性定义。这些定义存储在数据字典(亦称为系统目录)中,是数据库管理系统运行的基本依据。

    2、数据组织、存储和管理

    数据库管理系统要分类组织、存储和管理各种数据,包括数据字典、用户数据、存取路径等。要确定以何种文件结构和存取方式在存储器上组织这些数据,以及如何实现数据之间的联系。数据组织和存储的基本目标是提高存储空间利用率和方式存取,提高多种存取方法(如索引查找、hash查找、顺序查找等)以提高存取效率。

    3、数据存取

    数据库管理系统提供用户对数据的操作功能,实现对数据库数据的索引、插入、修改和删除。一个友好的关系数据库管理系统应该提供功能强且易学易用的数据操纵语言、方便的操作方式和较高的数据存取效率。数据操纵语言有两类:宿主型语言和自立(独立)型语言。

    4 、数据库事务管理和运行管理

    数据库管理系统的运行控制和管理功能,包括多用户环境下的事务管理功能和安全性、完整性控制功能;数据库恢复、并发控制和死锁检测(或死锁防止)、安全性检查和存取控制、完整性检查和执行、运行日志的组织管理等。这些功能保证了数据库系统的正常运行,保证了事务的ACID特性。

    5、数据库的建立和维护

    包括数据库的初始建立、数据的转换、数据库的转储和恢复、数据库的重组织和重构造以及性能检测分析等。

    6、其他功能

    数据库管理系统包括与网络中其他软件的通信功能,一个数据库管理系统与另一个数据库管理系统或文件系统的数据转换功能;异构数据库之间的互访和互操作功能等。

    和操作系统、编译系统等系统软件相比,数据库管理系统具有跨度大、功能多的特点。从最底层的存储管理、缓冲区管理、数据存取操作、语言处理到最外层的用户接口、数据表示、开发环境的支持都是它要实现的功能。

    数据库管理系统的实现,既要充分利用计算机硬件、操作系统、编译系统和网络通信等技术,又要突出对海量数据存储、管理和处理的特点,还要保证其存取数据和运行事务的高效率。

    二、数据库管理系统的系统结构

    1、数据库管理系统的层次结构

    和操作系统一样,可以将数据管理系统划分为若干层次。例如,IBM公司最早研制的著名的关系数据库管理系统实验系统SystemR,其核心分为底层的关系存储系统(RSS)和上层的关系数据系统(RDS)。
    RDS本质上是一个语言和执行层,包括语法检查与分析、优化、代码生成、视图实现、安全性完整性检查等功能。
    RSS则是一个存取方法层,其功能包括空间和设备管理、索引和存取路径管理、事务管理、并发控制、运行日志管理和恢复。
    按照处理对象的不同,依最高级到最低级的次序来划分的码具有普遍性。关系数据库管理系统的层次结构图示:
    关系数据库管理系统的层次结构

    1. 最上层是应用层,位于关系数据库管理系统的核心之外。应用层处理的对象是各种各样的数据库应用,如用开发工具开发的或用嵌入式SQL、存储过程等编写的应用程序,及终端用户通过应用程序接口发出的事务请求或各种查询要求等。该层是关系数据库管理系统与用户/应用程序的界面层。
    2. 第二层是语言处理层。它处理的对象是数据库语言,如SQL;向上提供的数据接口是关系、视图,即元组的集合。该层的功能是对数据库语言的各类语句进行语法分析、视图转换、安全性检查、完整性检查、查询优化等;通过对下层基本模块的调用,生成可执行代码,这些代码的运行即可完成数据库语句的功能要求。
    3. 第三层是数据存取层。该层处理的对象是单个元组,把上层的集合操作转换为单记录操作。该层执行扫描,排序,元组的增删改查,封锁等基本操作;完成数据记录的存取、存取路径维护、数据管理、并发控制和恢复等工作。
    4. 第四层是数据存储层。该层处理的对象是数据页和系统缓冲区,执行文件的逻辑打开、关闭、读页、写页、缓冲区读和写、页面淘汰等操作,完成缓冲区管理、内外存交换、外存的数据管理等功能。
      操作系统是数据库管理系统的基础,它处理的对象是数据文件的物理块,执行物理文件的读写操作,保证数据管理系统对数据逻辑上的读写真实地映射到物理文件上。操作系统提供的存取原语和基本的存取方法通常作为数据库管理系统数据存储层的接口。
    2、关系数据库管理系统的运行过程示例

    关系数据库管理系统是一个复杂而有序的整体。如下图是应用程序/用户通过关系数据库管理系统读取数据库数据的过程:关系数据库管理系统运行示例
    其中,数据字典是数据库的重要组成部分,存储元数据。

    1. 用户A通过应用程序A向关系数据库管理系统发出调用数据库数据的命令。
    2. 关系数据库管理系统首先对命令进行进行语法检查,检查通过后进行语义检查和用户存取权限检查。具体做法是,关系数据库管理系统读取数据字典,检查是否存在该关系及相应的字段、该用户能否读取它们等,确认语义正确、存取权限合法后便决定指定该命令,否则拒绝执行,返回错误信息。
    3. 关系数据库管理系统执行查询优化。优化器要根据数据字典中的信息进行优化,并把该命令转换成一串单记录的存取操作序列。
    4. 关系数据库管理系统执行存取操作序列(反复执行以下各步,直至结束)。
    5. 关系数据库管理系统首先在系统缓冲区查找记录,若找到满足条件的记录则转到10,否则转到6。
    6. 关系数据库管理系统查看存储模式,决定从哪个文件、用什么方式读取哪个物理记录。
    7. 关系数据库管理系统根据6的结果,向操作系统发出读取记录的命令。
    8. 操作系统执行读取数据的相关操作。
    9. 操作系统将数据从数据库的存储去送至系统缓冲区。
    10. 关系数据库管理系统根据查询命令和数据字典的内容导出用户所要读取的记录格式。
    11. 关系数据库管理系统将数据记录从系统缓冲区传送到应用程序A的用户工作区。
    12. 关系数据库管理系统将执行状态信息。如成功读取或不成功的错误指示、例外状态信息等返回给应用程序A。
      根据数据库管理系统层次结构,可以将以上操作对应相应的层次:
      应用层: 1
      语言处理层:2、3
      数据存取层:4、10、11、12
      数据存储层:5、6、7
      操作系统:8、9

    整个关系数据库管理系统的各层模块相互配合、互相依赖,共同完成对数据库的操纵。

    展开全文
  • Java 数据库视图

    千次阅读 2012-06-04 16:03:39
    数据库视图 视图概念 前面已经提到过视图(View),这一节专门讨论视图的概念、定义和操作。 视图是从一个或多个表(或视图)导出的表。视图数据库的用户使用数据库的观点。例如,对于一个学校,其学生的情况...
  • 1.在visio中新建数据库模型图  打开visio 2010,文件—&gt;新建—&gt;数据库—&gt;数据库模型图。建立数据库模型图之后,菜单栏多出一个菜单项"数据库"。 看下图菜单栏多出了一个数据库...
  • Oracle数据库 视图(虚拟表)创建及使用
  • MySQL视图数据库备份

    千次阅读 2017-04-25 18:43:56
    一:什么是视图: 1.视图是一张虚拟表: 表示一张表的部分数据或多张表的综合数据 其结构和数据是建立在对表的查询基础上 2.视图中不存放数据: 数据存放在视图所引用的原始表中 3.一个原始表,根据不同用户的...
  • mysql数据库视图

    2019-08-28 19:46:57
    mysql数据库视图和储存过程 先说说数据库视图, 视图,注意它是一张 虚拟表,是一张仅存在于咱自己概念上的表,即数据库中看不到但只要你创建他就存在的一张表, 是你自定义的一个表或多个表中导出来的表,作用和...
  • Eclipse视图观察数据库内容

    千次阅读 2018-01-13 15:01:09
    点击打开链接
  • 数据库视图、索引

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

    万次阅读 多人点赞 2015-01-27 18:13:16
    数据库视图详解 - 定义: 视图(View)是从一个或多个表(或视图)导出的表。视图与表(有时为与视图区别,也称表为基本表——Base Table)不同,视图是一个虚表,即视图所对应的数据不进行实际存储,...
  • 数据库视图创建

    千次阅读 2018-05-15 09:52:58
    1、 在xkgl数据库中进行视图的创建。 (1) 新建一个视图V1记录1990年出生的女生信息,包括学号,姓名,性别,出生日期,并且要求透过该视图进行的更新操作只涉及1990年出生的女生。视图创建代码: MySQL低版本...
  • 数据库的查询与视图

    万次阅读 2012-05-28 20:13:03
    第4章 数据库的查询和视图 4.1.1 选择列 通过SELECT语句的项组成结果表的列。 ::= SELECT [ ALL |DISTINCT ] [ TOP n [ PERCENT ] [ WITH TIES ] ] { * /*选择当前表或视图的所有列*/ | { table_name |view_...
  • SQL数据库视图

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

    千次阅读 2017-03-09 11:48:58
    视图命名规范 格式:普通视图V_【具体业务含义名称】,物化视图MV_【具体业务含义名称】。 视图类型 1.普通视图 视图本身只定义sql语句,实际数据存在于sql定义内容的实体表中。视图本身不保存任何数据,不能在...

空空如也

1 2 3 4 5 ... 20
收藏数 267,590
精华内容 107,036
关键字:

视图