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

    2014-10-16 19:12:33
    描述数据库的视图,以及视图的注意,用法以及举例,更好的学习数据库视图
  • 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”命令。

    展开全文
  • mysql数据库视图

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

    mysql数据库视图和储存过程

    先说说数据库视图,
    视图,注意它是一张 虚拟表,是一张仅存在于咱自己概念上的表,即数据库中看不到但只要你创建他就存在的一张表,
    是你自定义的一个表或多个表中导出来的表,作用和真实表一样,包含一系列带有行和列的数据 视图中,用户可以使用SELECT语句查询数据,也可以使用INSERT,UPDATE,DELETE修改记录,视图可以使用户操作方便,并保障数据库系统安全

    优点及缺点

    优点:

    简单化,数据所见即所得

    安全性,用户只能查询或修改他们所能见到得到的数据

    逻辑独立性,可以屏蔽真实表结构变化带来的影响

    缺点:

    性能相对较差,简单的查询也会变得稍显复杂

    修改不方便,特变是复杂的聚合视图基本无法修改

    语法结构:

    { CREATE|REPLACE } [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
    
    VIEW view_name [{column_list}]
    
    AS SELECT_STATEMENT
    
    [WITH [CASCADED | LOCAL |] CHECK OPTION]
    

    释义:
    CREATE|REPLACE : 【创建|替换已创建的】视图

    ALGORITHM : 视图算法

    1.UNDEFINED 系统自动选择算法
    2.MERGE使用的视图语句与视图定义合并起来
    3.TEMPTABLE 结果存入临时表,然后用临时表执行语句
    view_name : 视图名称

    column_list : 属性列

    SELECT_STATEMENT :SELECT语句

    [WITH [CASCADED | LOCAL |] CHECK OPTION] 表示视图在更新时保证在视图的权限范围内

    1.CASCADED 默认值 更新视图时要满足所有相关视图和表的条件,
    2.LOCAL表示更新视图时满足该视图本身定义的条件即可。

    示例表:
    在这里插入图片描述
    在这里插入图片描述
    创建视图示例:

    CREATE VIEW test_view_1 AS SELECT `name` FROM t_user;
    

    在这里插入图片描述
    查询视图:

    SELECT * FROM test_view_1;
    

    在这里插入图片描述
    在多表中创建视图:

    CREATE VIEW test_view_3 (username, userage, usersex) AS SELECT
    
    t_user.`name`,
    
    t_user_info.age,
    
    t_user_info.sex
    
    FROM
    
    t_user,
    
    t_user_info
    
    WHERE
    
    t_user.id = t_user_info.uid;
    

    在这里插入图片描述
    查询视图:

    SELECT * FROM test_view_3;
    

    在这里插入图片描述

    展开全文
  • 数据库视图的构建 分析 删除修改 视图是数据库查询的一层封装
  • 数据库视图详解

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

    数据库视图详解

    - 定义:

    视图(View)是从一个或多个表(或视图)导出的表。视图与表(有时为与视图区别,也称表为基本表——Base Table)不同,视图是一个虚表,即视图所对应的数据不进行实际存储,数据库中只存储视图的定义,在对视图的数据进行操作时,系统根据视图的定义去操作与视图相关联的基本表。
    

    视图就像一个窗口,透过它可以看到数据库中自己感兴趣的数据及其变化

    - 视图的创建

    SQL Server创建视图的语法:

    
    CREATE VIEW  
    
    [ < database_name > .] [ < owner > .]  
    
        view_name [ ( column [ ,...n ] ) ]  
    
       [ WITH < view_attribute > [ ,...n ] ]  
    
    AS  
    
    select_statement   
       [ WITH CHECK OPTION ]  
    
    < view_attribute > ::=  
    
     { ENCRYPTION | SCHEMABINDING |  
    
          VIEW_METADATA }  
    

    WITH check OPTION 表示对视图进行UPDATE、INSERT、delete操作时要保证更新、删除、或插入的行满足视图定义中的谓词条件

    • 例1:建立显示年龄大于20岁的学生学号、姓名、性别等信息的S_view1
    create view S_view1   
    as  
    select sno,sname,sex 
    from s 
    where age>20  ;
    
    • 例2:创建v_score1,要求基本表来源:S,C,SC;选择的字段为:S表中的sno、sname;C表中的cname及SC表中score;要求查询的数据为学号为20030001的学生的考试成绩。
    
    create view v_score1  
    As  
    Select s.sno,s.sname,c.cname,sc.score  
    From s,c,sc  
    Where s.sno=sc.sno and c.cno=sc.cno and sno=  “  20030001”  ;
    
    • 例3:建立信息系学生的视图,并要求进行修改和插入操作时仍需保证该视图只有信息系的学生
    Create view IS_Student
    AS
    select Sno,Sname,Sage
    from Student
    where Sdept='IS'
    with check option;
    
        在上述视图上加了with check option子句,以后对该视图进行插入、修改和删除操作时,RDBMS都会自动加上Sdept='IS'
    
    行列子集视图: 如果一个视图只是从单个基本表导出的,并且只是去掉了某些行列,但保留了主键,称之为行列子集视图如上面例1和例3就是一个行列子集视图
    

    - 查询视图

    视图定义好之后就可以像对基本表一样进行查询了

    • 例 4 在信息系学生中查找年龄小于20的
    select Sno,Sage
    from IS_Student
    where Sage<20;
    

    对应的转换后的语句为

    select Sno,Sage
    from Student
    where Sdept='IS' and Sage<20;
    

    有时候,单单一个视图并不能查询到需要的数据,如例5

    • 例5 查询选修了1号课程的信息系学生
    select IS_Student.Sno,Sname
    from IS_Student,SC
    where IS_Student.Sno=SC.Sno and SC.Cno='1';
    

    上述查询涉及视图IS_Student和基本表SC共同查询得到结果

    - 更新视图

    更新视图是指通过视图来插入、删除和修改数据

    由于视图是不实际存储数据的虚表,因此对视图的更新最终要转换为对基本表的更新。所以为了防止用户对数据有意无意的操作,可在定义视图时加上 with check option 如例3

    • 例 6 将信息系学生视图IS_Student 好、中学号为200215122的学生姓名改为"张大屁"
    Update IS_Student
    set Sname='张大屁'
    where Sno='2000215122';
    

    转换后对应的语句为

    Update Student
    set Sname='张大屁'
    where Sno='200215122' and Sdept='IS';
    
    • 例7 向信息系学生视图中插入一个新的学生记录 学号为200215129 姓名为 ‘李红’ 年龄为21
    insert into
    IS_Student
    values('200215129','李红',21);
    

    转换后的语句为

    insert into 
    Student(Sno.Sname,Sage,Sdept)
    values('200215129','李红',21,'IS');
    
    • 例8 删除信息系学生学号为200215111的学生
    delete 
    from IS_Student
    where Sno='200215111';
    

    转换后的语句为

    delete
    from Student
    where Sno='200215111' and Sdept='IS';
    

    视图更新的限制

    如果视图定义中有如下子句则不能更新

    • 分组 使用group by 和 Having
    • 联结
    • 子查询
    • 并集
    • 聚集函数 MAX MIN COUNT AVG
    • DISTINCT
    • 导出列

    - 视图的删除

    视图删除格式为

    DROP VIEW <视图名> [CASCADE] ;
    

    视图删除后视图的定义将从数据字典中删除,使用CASCADE是级联删除,删除此视图上导出的视图

    • 例9 删除视图IS_Student
    Drop VIEW IS_Student;
    

    - 视图的优点

    - 1简化用户操作

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

    - 2对重构数据库提供了一定程度上的逻辑独立性

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

    - 3安全性

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

    视图的缺点

    ● 性能:SQL Server必须把视图的查询转化成对基本表的查询,如果这个视图是由一个复杂的多表查询所定义,那么,即使是视图的一个简单查询,SQL Server也把它变成一个复杂的结合体,需要花费一定的时间。

    ● 修改限制:当用户试图修改视图的某些行时,SQL Server必须把它转化为对基本表的某些行的修改。对于简单视图来说,这是很方便的,但是,对于比较复杂的视图,可能是不可修改的。

    展开全文
  • 数据库视图应用

    2013-06-05 23:54:53
    这是数据库实验会用的材料,是关于视图的操作,都是正确的
  • #数据库--第4章 数据库视图

    千次阅读 2020-05-02 17:25:13
    #数据库--第4章 数据库视图一、什么是视图?二、视图的创建三、视图的删除四、视图的查询五、视图的增删改六、总结:   这一章节将会介绍所有的数据库视图操作,使用的数据是 第一章 介绍和导入的数据。 一、什么...


      这一章节将会介绍所有的数据库视图操作,使用的数据是 第一章 介绍和导入的数据。

    一、什么是视图?

      视图是关系数据库系统提供给用户的多种角度观察数据库中数据的重要机制。
      视图是从一个或n个基本表(视图)导出的表,它与基本表不同,是一个虚表。
      数据库中只存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的基本表中。
      视图在概念上与基本表等同,用户可以在视图上再定义视图,可以对视图进行查询、删除、更新等操作。
      如果基本表中的数据发生变化,从视图中查询出的数据也随之改变。
      如果对视图进行更新操作,那么对应的基本表也会进行更新,但是不是所有视图都支持更新操作。
      视图定义被编译后存储,因此执行效率高。

    注意:视图一旦创建,便不可修改,只能删除重建。


    二、视图的创建

      关键字:create view 视图名称[(字段名)] as 子查询 [with check option]
      注意:子查询可以有函数,但不允许有 order by 或者 distinct

      如果子查询的 select 接的不是单纯的字段名,或者有重名字段,则创建视图时字段名不可省略

    create view view_partavgcost(AVG_PARTKEY, AVG_SUPPLYCOST) as 
    select PS_PARTKEY, avg(PS_SUPPLYCOST) from partsupp group by PS_PARTKEY;
    

      如果子查询 select 接的是不重复的字段名,则创建视图时,可以省略字段名,默认使用 select 中的字段名

    create view partcost as select PS_PARTKEY, PS_SUPPLYCOST from partsupp;
    create view region_view as select R_REGIONKEY, R_NAME from region;
    

    三、视图的删除

      关键字:drop view … [cascade]
      注意:cascade 用来连带删除由此视图导出的其它视图
          但是SQL Server里不能够用CASCADE关键字进行表的删除,如果在SQL Server中要对表进行删除可以直接使用DROP<表名>

    drop view partcost cascade;
    

    四、视图的查询

      视图的查询和基本表一致,这里不多赘述

    select * from view_partavgcost;
    

    五、视图的增删改

      视图的增删改和普通表的增删改基本一致,但有以下几点需要注意:

      1、在对视图进行增加操作时,未在视图中出现的列置为默认值,若没有定义默认值则会插入失败
      2、若视图子句中含有聚集函数,则不可对这个视图进行增删改操作
      3、若视图子句含有标量函数,则不可对视图进行增加操作,可以进行删除和受限的修改操作(受限的修改:只能修改非函数字段)
      4、若视图子句不含有函数,即为单纯的字段名,则可以进行增删改
      5、对视图进行的增删改,也会对基本表进行

    insert into region_view(R_REGIONKEY, R_NAME) values (-1, 'ddd');
    

    六、总结

      1、视图其实就相当于预定义一个查询语句,可以让查询的逻辑更清晰
      2、视图使用户能以多种角度看待同一数据
      3、视图对重构数据库提供一定程度的逻辑独立性
      4、视图能够对机密数据提供安全保护
      5、若修改了基本表的结构,那么视图就可能无法工作。需要删除重新建立

    七、BCNF 范式

      一个满足 BCNF 的关系模式有:
      1、所有非主属性对每一个码都是完全函数依赖。
      2、所有主属性对每一个不包含它的码也是完全函数依赖。
      3、没有任何属性完全函数依赖于非码的任何一组属性。

    展开全文
  • 数据库视图创建

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

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

    千次阅读 2019-01-11 17:36:36
    对此我的理解是:你可以将视图成此表的分身,这个分身你可以自如的修饰,你可以自己选择向外展示的数据,所以一般视图也是用在开发中有一些表结构是不希望过多的人去接触的,那你就可以把实体表映射为一个视图。...
  • 数据库视图作用

    千次阅读 2013-09-09 01:07:00
    视图做数据库中的一种实体,实际上存在的只是它的脚本,而它的内容并不真正的单独存在一份。一般,可以对复杂的应用程序从功能角度进行分析,将可以与其它的应用程序共用的那一部分,分离出来。对这部分功能,视...
  • 第7章+sql数据库视图与索引.ppt第7章+sql数据库视图与索引.ppt第7章+sql数据库视图与索引.ppt第7章+sql数据库视图与索引.ppt
  • 数据库视图的创建与使用ppt,需要的童鞋课下载
  • 摘要:Delphi源码,数据库应用,视图 Delphi中的数据库视图应用一例,简单的视图使用例子,初学者参考。 运行环境:Windows/Delphi7
  • 摘要:C#源码,菜单窗体,视图 在C#中应用数据库视图,分享给初学C#的新手参考,源码完整,含有数据库,不过要自己附加到SQLServer里。
  • 数据库 视图基础概念

    万次阅读 2019-01-19 11:06:12
    视图是从一个表或是多个表导出的表,视图与表不同,视图是一个虚表,即视图所对应的数据不进行实际存储,数据库中指存储视图的定义,在对视图的数据进行操作时,系统根据视图的定义去操作与视图相关联的基本表。...
  • 数据库视图的利弊.txt

    2010-11-06 16:38:48
    数据库视图的利弊.txt
  • (1)物化视图  sqlserver中并没有物化视图这一概念,而是用索引视图来替代(具体参考:...https://msdn.microsoft.com/zh-cn/library/aa290257%28VS.71%29.aspx),这里的物化视图主要指oracle数据库中的
  • Entity Framework Core 3 映射数据库视图 数据库视图的反向工程 查询类型表示可从数据库读取但无法更新的数据,它已重命名为无键实体类型。由于它们非常适用于映射多数场景中的数据库视图,当执行数据库视图反向...
  •  修复Domino数据库视图索引的两种方法  解答  第一种方法:  1、在控制台上运行命令:load fixup 数据库名  2、在控制台上运行命令:load updall -R 数据库名  第二种方法:  1、对要修复的数据库新建...
  • MySQL数据库视图

    千次阅读 2012-08-19 09:23:45
    1. 修改、查询、删除记录时都会提示多少条记录被影响,但建表不会提示。...可以根据他们的不同需求,在物理的数据库上定义他们对数据库所要求的数据结构,这种根据用户观点所定义的数据结构就是视图
  • C# 迁移Oracle数据库视图

    千次阅读 2015-06-13 17:50:21
    本文实现oracle 数据库视图的迁移
  • 数据库视图数据是否可以直接删除

    千次阅读 2021-03-25 09:47:36
    数据库视图数据是否可以直接删除 文章目录数据库视图数据是否可以直接删除一、视图是什么?二、视图数据删除1.多表构成视图数据删除2.单表视图数据删除总结 一、视图是什么? 视图(VIEW)也被称作虚表,即虚拟的表...
  • 实验7 数据库视图的定义与使用 7.1实验目的及要求 掌握视图的用法,加深对视图作用的理解 7.2实验内容 1.创建、修改和删除视图 2.利用视图进行查询 7.3实验步骤 7.3.1视图的创建(查看视图结果用select语句...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 483,306
精华内容 193,322
关键字:

如何做数据库视图