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

    2017-08-09 11:46:49
    对我自己而言,数据库视图使用的其实并不多,我自己的经历当中,很多时候,基本上可以这样认为,视图好像没有什么用处,希望通过这篇记录出,视图的应用场景。 什么叫做视图视图是从一个或几个基本表(或视图)导出...

    对我自己而言,数据库视图使用的其实并不多,我自己的经历当中,很多时候,基本上可以这样认为,视图好像没有什么用处,希望通过这篇记录出,视图的应用场景。

    什么叫做视图

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

    视图(View)作为一种数据库对象,为用户提供了一个可以检索数据表中的数据方式。用户通过视图来浏览数据表中感兴趣的部分或全部数据,而数据的物理存储位置仍然在表中。
    视图是一个虚拟表,并不代表任何物理数据,只是用来查看数据的窗口而已。视图并不是以一组数据的形式存储在数据库中,数据库中只存储视图的定义,而不存储视图对应的数据,这些数据仍存储在导出视图的基本表中。当基本表中的数据发生变化时,从视图中查询出来的数据也随之改变。

    视图优缺点

    视图的优点

    1. 数据安全性。
      对不同的用户定义不同的视图,使用户只能看到与自己有关的数据。数据库授权命令可以使每个用户对数据库的检索限制到特定的数据库对象上,但不能授权到数据库特定行和特定的列上。通过视图,用户可以被限制在数据的不同子集上。

    2. 查询简单化。
      为复杂的查询建立一个视图,用户不必输入复杂的查询语句,只需针对此视图做简单的查询即可。那些被经常使用的查询可以被定义为视图,从而使用户不必为以后的操作每次都指定全部的条件。

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

    对于视图的操作,例如,查询只依赖于视图的定义,当构成视图的基本表需要修改时,只需要修改视图定义中的子查询部分,而基于视图的查询不用改变。

    视图的缺点

    1. 性能。
      SQL Server必须把视图的查询转化成对基本表的查询,如果这个视图是由一个复杂的多表查询所定义,那么,即使是视图的一个简单查询,SQL Server也把它变成一个复杂的结合体,需要花费一定的时间。
    2. 修改限制。
      当用户试图修改视图的某些行时,SQL Server必须把它转化为对基本表的某些行的修改。事实上,当从视图中插入或者删除时,情况也是这样。对于简单视图来说,这是很方便的,但是,对于比较复杂的视图,可能是不可修改的,这些视图有如下特征:
        a.有UNIQUE等集合操作符的视图。
        b.有GROUP BY子句的视图。
        c.有诸如AVG\SUM\MAX等聚合函数的视图。
        d.使用DISTINCT关键字的视图。
        e.连接表的视图(其中有些例外)
    3. 创建视图的限制:
      在创建视图时,还要注意试图必须满足以下几点限制:
      <1>.不能将规则或者DEFAULT定义关联于视图。
      <2>.定义视图的查询中不能含有ORDER BY\COMPURER\COMPUTER BY 子句和INTO关键字
      <3>.如果视图中某一列是一个算术表达式、构造函数或者常数,而且视图中两个或者更多的不同列拥有一个相同的名字(这种情况通常是因为在视图的定义中有一个连接,而且这两个或者多个来自不同表的列拥有相同的名字),此时,用户需要为视图的每一列指定列的名称。

    如何使用视图

    一般建议对视图的修改:
    - 单表视图一般用于查询和修改,会改变基本表的数据,
    - 多表视图一般用于查询,不会改变基本表的数据。

    SQL CREATE VIEW 语法

    CREATE VIEW view_name AS
    SELECT column_name(s)
    FROM table_name
    WHERE condition
    展开全文
  • 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;
    

    在这里插入图片描述

    展开全文
  • #数据库--第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、若修改了基本表的结构,那么视图就可能无法工作。需要删除重新建立

    展开全文
  • 数据库视图操作

    千次阅读 2017-04-21 15:01:59
    JY数据库视图操作USE JY GO1. 创建视图创建视图的原型: CREAT VIEW view_name[column_list] [WITH ENCRYPTION] AS select_statement [WITH CHECK OPTION] –注释: –1.view_name:视图的名称 –2.column_list...
  • Entity Framework Core 3 映射数据库视图 数据库视图的反向工程 查询类型表示可从数据库读取但无法更新的数据,它已重命名为无键实体类型。由于它们非常适用于映射多数场景中的数据库视图,当执行数据库视图反向...
  • 数据库视图详解

    万次阅读 多人点赞 2015-01-27 18:13:16
    数据库视图详解 - 定义: 视图(View)是从一个或多个表(或视图)导出的表。视图与表(有时为与视图区别,也称表为基本表——Base Table)不同,视图是一个虚表,即视图所对应的数据不进行实际存储,...
  • 实验7 数据库视图的定义与使用 7.1实验目的及要求 掌握视图的用法,加深对视图作用的理解 7.2实验内容 1.创建、修改和删除视图 2.利用视图进行查询 7.3实验步骤 7.3.1视图的创建(查看视图结果用select语句...
  • Odoo8基于数据库视图构建模型的用法 利用数据库视图构建模型来展示时,其实是用了一种伪model的实现方式,创建的视图名称与定义的model名称是一致的,这样Odoo框架在加载模型时,就可以找到对应的视图,从而获取数据...
  • C# 迁移Oracle数据库视图

    千次阅读 2015-06-13 17:50:21
    本文实现oracle 数据库视图的迁移
  •  数据库视图是虚拟表或逻辑表,它被定义为具有连接的SQL SELECT查询语句。 视图是对若干张基本表的引用,一张虚表,查询语句执行的结果,不存储具体的数据(基本表数据发生了改变,视图也会跟着改变);   2....
  • 我在EF的项目中使用了这条命令 ``` Scaffold-DbContext "Data Source=.;Initial Catalog=EFCore_dbfirst;...但是只能生成数据库表的模型,请问需要加什么参数,或者使用什么命令才能生成出数据库视图的模型
  • 数据库 视图基础概念

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

    千次阅读 2014-09-18 23:46:48
    Django中建立数据库视图 Django中没有建立视图的接口,如果要建立一个视图需要一些手动的改变。 这里使用的Django 版本>1.5, 使用的数据库为mysql 第一步 建立视图,例如视图的名称叫做 user_info 第二步 ...
  • 数据库视图创建

    千次阅读 2018-05-15 09:52:58
    1、 在xkgl数据库中进行视图的创建。 (1) 新建一个视图V1记录1990年出生的女生信息,包括学号,姓名,性别,出生日期,并且要求透过该视图进行的更新操作只涉及1990年出生的女生。视图创建代码: MySQL低版本...
  • SQL Server实验——数据库视图的定义与使用学生选课数据库的创建创建学生信息表student创建课程信息表course创建学生选课信息表sc插入相关信息视图的创建基本应用一、创建信息系(sdept=’IS’)学生信息的视图IS_...
  • SQL数据库视图

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

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 43,162
精华内容 17,264
关键字:

数据库视图