精华内容
下载资源
问答
  • 对视图
    千次阅读
    2020-03-10 10:42:23

    mysql中可更新视图必须满足一定的条件,参见:http://blog.csdn.net/yangkai_hudong/article/details/7632085

    要通过视图更新基本表数据,必须保证视图是可更新视图,即可以在INSET、UPDATE或DELETE等语句当中使用它们。对于可更新的视图,在视图中的行和基表中的行之间必须具有一对一的关系。还有一些特定的其他结构,这类结构会使得视图不可更新。

    如果视图包含下述结构中的任何一种,那么它就是不可更新的:

    (1)聚合函数;

    (2)DISTINCT关键字;

    (3)GROUP BY子句;

    (4)ORDER BY子句;

    (5)HAVING子句;

    (6)UNION运算符;

    (7)位于选择列表中的子查询;

    (8)FROM子句中包含多个表;

    (9)SELECT语句中引用了不可更新视图;

    (10)WHERE子句中的子查询,引用FROM子句中的表;

    (11)ALGORITHM 选项指定为TEMPTABLE(使用临时表总会使视图成为不可更新的)。

    更多相关内容
  • mysql之对视图的操作

    千次阅读 2021-01-28 00:35:24
    1. 为什么要使用视图?为了提高复杂SQL语句的复用性和表操作的安全性,MySQL数据库管理系统提供了视图特性。所谓视图,本质上是一种虚拟表,在物理上是不存在的,其内容与真实的表相似,包含一系列带有名称的列和行数据。...

    1. 为什么要使用视图?

    为了提高复杂SQL语句的复用性和表操作的安全性,MySQL数据库管理系统提供了视图特性。所谓视图,本质上是一种虚拟表,在物理上是不存在的,其内容与真实的表相似,包含一系列带有名称的列和行数据。但是,视图并不在数据库中以储存的数据值形式存在。行和列数据来自定义视图的查询所引用基本表,并且在具体引用视图时动态生成。

    视图使开发者只关心感兴趣的某些特定数据和所负责的特定任务,只能看到视图中所定义的数据,而不是视图所引用表中的数据,从而提高了数据库中数据的安全性。

    视图的特点如下:

    (1). 视图的列可以来自不同的表,是表的抽象和在逻辑意义上建立的新关系。

    (2). 视图是由基本表(实表)产生的表(虚表)。

    (3). 视图的建立和删除不影响基本表。

    (4). 对视图内容的更新(添加,删除和修改)直接影响基本表。

    (5). 当视图来自多个基本表时,不允许添加和删除数据。

    视图的操作包括创建视图,查看视图,删除视图和修改视图。

    2. 创建视图

    CREATE VIEW view_name AS 查询语句;

    实例如下:

    CREATE VIEW view_name AS SELECT * FROM t_dept;

    3. 查看视图

    3.1. SHOW TABLES语句查看视图名

    AwwC5wcMAucHDALnBwwC5wcMAucHDALnBwwC5wcMAucHDALnBwwC5wcMAucHDALnBwwC5wcMAucHDALnBwwCp+Q+yYDmB2UteOQAAAABJRU5ErkJggg==

    SHOW TABLES不仅会显示表的名字,同时也会显示视图的名字。

    3.2. SHOW TABLE STATUS语句查看视图详细信息

    SHOW TABLE STATUS FROM 【from db_name】【LIKE 'pattern'】

    SHOW TABLE STATUS不仅会显示表的详细信息,同时也会显示视图的详细信息。

    3.3. SHOW CREATE VIEW语句查看视图定义信息

    SHOW CREATE VIEW view_dept

    3.4 DESCRIBE | DESC语句查看视图设计信息

    DESCRIBE | DESC viewname

    3.5 通过系统表查看视图信息

    当Mysql数据库安装成功后,会自动创建系统数据库information_schema。在该数据库中存在一个包含视图信息的表格views,可以通过查看表格views来查看所有视图的相关信息。

    4. 删除视图

    DROP VIEW view_name 【,view_name】;DROP VIEW

    通过DROP VIEW语句可以一次删除一个或多个视图。

    实例:

    DROP VIEW view_dept;

    5. 修改视图

    5.1 CREATE OR REPLACE VIEW语句修改视图

    CREATE OR REPLACE VIEW view_name AS 查询语句;

    5.2 ALTER语句修改视图

    ALTER VIEW viewname AS 查询语句;

    6. 利用视图操作基本表

    6.1 检索(查询)数据

    SELECT * FROM view_name;

    6.2 利用视图操作基本表数据

    由于视图是"虚表",所以对视图数据进行的更新操作,实际上是对其基本表数据进行更新操作。在具体更新视图数据时,需要注意以下两点:

    (1). 对视图数据进行添加,删除,更新操作直接影响基本表。

    (2). 当视图来自多个基本表时,不允许添加和删除数据。

    添加数据操作:

    和向表里添加数据相同。

    删除数据操作:

    和向表里删除数据相同。

    更新数据操作:

    和向表里更新数据相同。

    展开全文
  • Oracle的视图和SQLServer的视图基本一样。 视图,是一个虚拟的表,不会给视图分配存储空间。视图的建立需要依赖于单个或多个普通表,被依赖的普通表就成为"基表"。可以就像 用 select 语句类似,在某些表中选取字段...

    Oracle的视图和SQLServer的视图基本一样。  

    视图,是一个虚拟的表,不会给视图分配存储空间。视图的建立需要依赖于单个或多个普通表,被依赖的普通表就成为"基表"。可以就像 用 select 语句类似,在某些表中选取字段和筛选条件,可以查询出数据,把这数据构成一张虚拟的表,这就叫视图。

      视图隐藏了数据的复杂性,还可以方便用户的查询,另外,还可以隔离物理表结构改变。视图通常是用来查询的,也可以对视图进行增删改。但是在视图上进行增删改要满足一些前提: 单表视图可以进行增删改操作;在多表视图中,只能对 键保留表进行删改操作;或者 定义触发器,替换掉增删改语句。对视图进行新增、删除、修改视图的数据是会把关联的基表数据给改变的。

    视图创建语句如下,也可以在视图上创建视图

    CREATE[OR REPLACE] VIEW  [viewName]
    AS
     select s.sno,s.sname,s.deptno 
            from STUDENT s
    [WITH CHECK OPTION]
    [WITH Read ONLY];

    例如 创建了带主键的表DEPARTMENT、STUDENT 一个多表视图VW_STU_DEPT   两个单表视图

    ---建立表---
    CREATE TABLE DEPARTMENT(
    DEPTNO CHAR(3) PRIMARY KEY,
    DEPTNAME VARCHAR2(20)
    );
    INSERT INTO DEPARTMENT VALUES('001','中文系');
    INSERT INTO DEPARTMENT VALUES('002','数学系');
    INSERT INTO DEPARTMENT VALUES('003','英语系');
    ---建立表---
    CREATE TABLE STUDENT(
     SNO NUMBER (6) PRIMARY KEY,
     SNAME VARCHAR2(10),
     DEPTNO CHAR(3),
     CONSTRAINT dep_DEPARTMENT FOREIGN KEY (DEPTNO) REFERENCES DEPARTMENT(DEPTNO)
    );
    INSERT INTO STUDENT VALUES(1,'张三','001');
    INSERT INTO STUDENT VALUES(2,'李四','001');
    INSERT INTO STUDENT VALUES(3,'王五','002');
    ----建立多表视图----
    CREATE VIEW  VW_STU_DEPT
    as
     select s.sno,s.sname,s.deptno dept1,
            d.deptno dept2,d.deptname from STUDENT s,DEPARTMENT d
     where s.deptno=d.deptno
     commit;
    ------建立单表视图----
    CREATE VIEW  VW_STU1
    as
     select s.sno,s.sname,s.deptno 
            from STUDENT s
            where deptno='001';
    ------建立单表视图----
    CREATE   VIEW  VW_STU2
    as
     select s.sno,s.sname,s.deptno 
            from STUDENT s
            where deptno='001'
    WITH CHECK OPTION;
    

    视图是一个虚拟表,查询视图的方法和查询表是一样的。单表视图是可以进行修改的:

    我们可以看见,单表视图 VW_STU1 被成功修改,修改完后数据少一行的原因就是这个视图的筛选条件只有STUDENT表上的 字段depno值要为 '001'  才会被纳入视图 VW_STU1 。

    我们Rollback 后,再对VW_STU2 视图进行相同的SQL操作

    发现程序报错的原因就在于 VW_STU2,加了 WITH CHECK OPTION 条件,这个条件禁止了把视图数据减少的修改语句,但是增改操作还是可以的。 如果把视图设为只读,在创建视图的时候设定 WITH READ ONLY 就行,这样就无法对视图进行增删改操作。

     

    键保留表就是在定义视图的时候,能够在视图上保留主键的基表

    很明显,对于视图VW_STU_DEPT 中 保留了STUDENT基表上的主键,那么STUDENT就是 键保留表,视图只能对键保留表进行修改操作,不能对非键保留表进行修改操作,新增删除依旧是可以的。

    无法对多表视图进行新增操作

    但是可以对多表视图进行删除操作:

    同时会影响到键保留表数据,但是不会影响到非键保留表数据

    总而言之,在单表视图中可以进行增删查改操作,在多表视图中只能对键保留表进行 删查改 操作,无法修改普通表的。换言之,如果视图没有关联的表里面没有主键,那么就肯定无法进行增删改操作。

    删除视图:

    DROP VIEW  [视图名]; 

    展开全文
  • 其中所引用的基础表来说,视图的作用类似于筛选。定义视图的筛选可以来自当前或其他数据库的一个或多个表,或者其他视图。分布式查询也可以定义使用多个异类源数据的视图视图的结构和内容是通过SQL查询获得的,...

    (1)视图概述
    视图是一个虚拟表,其内容由查询定义。对其中所引用的基础表来说,视图的作用类似于筛选。定义视图的筛选可以来自当前或其他数据库的一个或多个表,或者其他视图。分布式查询也可以定义使用多个异类源数据的视图。视图的结构和内容是通过SQL查询获得的,它也称为视图名,可以永久地保存在数据库中,视图在数据库内存储的是select语句,也即数据库内并没有存储视图这个表,而存储的是视图的定义。Select语句的结果集构成视图所返回的虚拟表。用户可以引用表时所使用的方法,在SQL语句中通过引用视图名称来使用虚拟表。使用视图可以实现下列任一或所有功能:
    A.    将用户限定在表中的特定行上。例如:只允许雇员看见工作跟踪表内记录其工作的行。
    B.    将用户限定在特定列上,例如,对于那些不负责任处理工资单的雇员,只允许其看见雇员表中的姓名列、办公室列、工作电话列和部门列,而不能看见任何包含工资信息或个人信息的列。
    C.    将多个表中的列连接起来,使它们看起来像一个表。
    D.    聚合信息而非提供详细信息。


    (2)视图的类型
    ① 索引视图
    索引视图是被具体化了的视图。这意味着已经对视图定义进行了计算并且生成的数据像表一样存储,用户可以为视图创建索引,即对视图创建一个唯一的聚集索引。索引视图可以显著提高某类查询的性能,尤其适于聚合许多行的查询,但不太适合经常更新的基本数据集。

    ② 分区视图
    分区视图在一台或多台服务器间水平连接一组成员表中的分区数据,使数据看上去来自同一张表。连接同一个SQLSERVER2014实例中成员表的视图就是一个本地分区视图。

    ③ 系统视图
    系统视图包含目录元数据,可以使用系统视图返回SQL Server实例或在该实例中定义的对象有关的信息。例如,可以查询sys.databases目录视图以便返回实例中提供的用户定义数据库有关的信息。


    (3)视图的优缺点
    优点:
    ①    安全保密性。通过视图用户只能查询和修改他们所能见到的数据,数据库中的其他数据则既看不见也取不到。数据库授权命令可以使每个用户对数据库的检索限制到特定的数据库对象上,但不能授权到数据库特定行和特定列上。通过视图,用户可以被限制在数据不同的子集上。
    ②    查询简单性。视图能够从几个不同的关系表中提取数据,并且用一个表单表示出来,利用视图,将多表查询转换成视图的单表查询。
    ③    结构简单性。视图能够给用户一个“个人化”的数据结构外观,用一组用户感兴趣的可见表来代表这个数据库的内容。
    ④    隔离变化。视图能够代表一个个一致的、非变化的数据。即使是在作为视图基础的源表被分隔、重新构造或者重新命名的情况下,也是如此。
    ⑤    数据完整性。如果数据被存取,并通过视图来输入,DBMS就能够自动地校验这个数据,以便却确保满足所规定的完整性约束。
    ⑥    逻辑数据独立性。视图可以使应用程序和数据库表在一定程度上独立。如果没有视图,应用一定是建立在表上的。有了视图之后,程序可以建立在视图之上,从而程序与数据库被视图分隔开来。

    缺点:
    ①    性能。数据库管理系统必须把视图的查询转化成对基本表的查询,如果这个视图是由一个复杂的多表查询所定义,那么,即使是对视图的一个简单查询,数据库管理系统也会将其变成一个复杂的结合体,需要花费一定的时间。
    ②    修改限制。当用户试图修改视图的某些记录行时,数据库管理系统必须将其转换为对基本表的某些行的修改。对于简单视图来说,这是很方便的,但是,对于复杂的视图,可能是不可修改的。


    (4)视图的用途
    A.    集中、简化和自定义每个用户对数据库的认识。
    B.    用作安全机制,方式是通过允许用户通过视图访问数据,而不授权用户直接访问底层基表的权限。
    C.    提供向后兼容接口来模拟架构已更改的表。

     

     【视图属性参数解析】
    ①    数据库:包含此视图的数据库的名称。
    ②    服务器:当前服务器实例的名称。
    ③    用户:此连接的当前用户名。
    ④    创建日期:显示视图的创建日期。
    ⑤    名称:当前视图的名称。
    ⑥    架构:显示视图所属的架构。
    ⑦    系统对象:指示视图是否为系统对象,值为true和false。
    ⑧    ANSI NULLs:指示创建对象时是否选择了“ANSI NULLs”选项。
    ⑨    已加密:指示视图是否已加密,值为true和false。
    ⑩    带引号的标识符:指示创建对象时是否选择了“带引号的标识符”选项。
    ⑪    带架构已绑定:指示视图是否绑定到架构,值为true和false。

    【视图属性窗体参数解析】
    (名称):当前视图的名称
    A.    数据库名称:包含此视图的数据库的名称
    B.    说明:对当前视图的简短说明
    C.    架构:显示视图所属的架构
    D.    服务器名称:当前服务器实例的名称
    E.    绑定到架构:防止用户以会使用视图定义失效的任何方式修改影响此视图的基础对象。
    F.    是的确:显示是否可以明确地确定所选列的数据类型。
    G.    非重复值:指定查询将在视图中筛选出重复值。当只使用表中的部分列并且这些列可能包含重复值时,或者当联接两个或更多表的过程会在结果集中产生重复行时,此选项非常有用。选择该选项等效于向SQL窗格内的语句中插入关键字distinct。
    H.    Group by 扩展:指定对于基于聚合查询的视图,附加选项可用。
    I.    输出所有列:显示所有列是否都由所选视图返回。这是在创建视图时设置的。
    J.    SQL注释:显示SQL语句的说明。若要查看或编辑完整的说明,请单击相应的说明,再单击属性右侧的省略号(…)。注释可用包含视图使用者和使用时间等信息。
    K.    Top规范:展开此项可显示Top、“百分比”、“表达式”和“等同值”属性的属性。
    ①    Top:指定视图将包括Top子句,该子句只返回结果集中的前N行或前百分之N行。默认情况下,视图将在结果集中返回前10行。使用此选项可更改返回的行数或指定不同的百分比。
    ②    表达式:显示视图将返回的百分比(如果“百分比”设置为“是”)或记录(如果“百分比”设置为“否”)。
    ③    百分比:指定查询将包含一个top子句,仅返回结果集中前百分之n行。
    ④    等同值:指定视图将包括with ties子句。如果视图包含order by子句和基于百分比的top子句,with ties将非常有用。如果设置了该选项,并且百分比截止位置在一组行的中间,且这些行在order by子句中具有相同的值,则视图将会扩展,以包含所有这样的行。
    ⑤      更新规范:展开此项可显示“使用视图规则更新”和“check选项”属性。


     (5)创建基于视图的视图


     

     (6)    删除视图
    当一个视图不再需要时,可以将其从数据库中删除,以回收其当前使用的磁盘空间。这样数据库中的任何对象都可以使用此回收空间。
    ①    限制和局限:删除视图时,将从系统目录中删除视图的定义和有关视图的其他信息。还将删除视图的所有权限。使用drop table 删除的表上的任何视图都必须使用drop view显示删除。
    ②    权限:需要有对schema的alter权限或对object的control权限。

     


     

    (7)    对视图的数据进行增删改操作

     

    如上描述如有不懂,可以扫码关注麒琳技术栈公众号,欢迎在线咨询

    展开全文
  • SQL对视图的查询

    千次阅读 2020-11-05 18:47:31
    title : 每日深耕,勤练不缀之sql子查询 本文应用sql数据均从github上下载 ...虚拟表,本身是不具备数据的 只是为了体现安全性,封装性,...它相当于一张表或者多张表的数据结果集,编写视图后,我们可以不断重用他,这个.
  • 解释:因为所创建的视图对其属性值进行了计算的其他形式上的改变,而对视图的更改最终表现为对表的更改而表中不存在视图的某一属性,或属性的性质不相同,则无法更改,这是一种视图机制。 转载于:...
  • sql问题: 删除视图中的数据,其对应的基表中的数据会发生改变吗?
  • MYSQL面试题 说说你对视图的理解?

    千次阅读 2019-02-28 20:39:32
    MYSQL面试题 说说你对视图的理解?
  • 数据库对原表是真实物理存在的表, 视图是对 一些原表 选择 部分列 合并成 的一个虚拟表格   原表: 视图:   以下情况不能对视图进行 插入/更新/删除 操作 ...
  • 做sqlserver实验时,为一个视图建立索引时出现了“无法对视图 'V2' 创建 索引,因为该视图未绑定到架构”的错误,到网上搜了一下,需要为视图加上一条属性with SCHEMABINDING,于是修改视图alter view v2 ...
  • 3.7视图

    千次阅读 2019-11-03 12:43:26
    视图是从一个或几个基本表(或视图)导出的表。它与基本表不同,是一个虚表。数据库中只存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的基本...也可以在一个视图之上再定义新的视图,但对视图的更...
  • MFC分割窗口中控件对视图的控制MFC分割窗口中控件对视图的控制MFC分割窗口中控件对视图的控制
  • 视图的操作

    千次阅读 2021-11-17 22:43:20
    一、学习任务1:为什么使用视图 通过前面章节的知识可以发现,数据库中关于数据的查询有时候非常复杂,例如表连接、子查询等,这种査询会让程序员感到非常痛苦,因为它逻辑太复杂、编写语句比较多。当这种査询需要...
  • sql server中对视图更新的规则

    千次阅读 2018-11-09 14:13:13
    定义视图后,对视图的查询没有什么限制,可以像对待表一样进行操作。但是, 如果对视图中的元组进行更新操作(INSERT,UPDATE,DELETE)将受到限制。概括起 来,关于可更新视图有以下三条规则: (1) 若视图是基于多个表...
  • 对视图创建索引

    千次阅读 2014-01-02 13:09:33
    提示 无法对视图创建 索引,因为该视图未绑定到架构 修改此问题 需要在 创建视图语句中加上 with SCHEMABINDING create View myView(id,code) with SCHEMABINDING as select id,code from dbo.mytable 注意,表的...
  • 提示 无法对视图创建 索引,因为该视图未绑定到架构 修改此问题 需要在 创建视图语句中加上 with SCHEMABINDING create View myView(id,code) with SCHEMABINDING as select id,code from dbo.mytable 注意,表的...
  • 对视图进行 DML 操作

    千次阅读 2017-04-06 15:56:27
    以前只知道视图可以用来查询,最近才知道,原来视图还是可以像普通表一样...接下来,我将详细说明如何对视图进行数据的添加、修改和删除。 在切入主题之前,首先说明一下视图的格式定义: CREATE [OR REPLACE] [FOR
  • hibernate为视图建立实体映射!
  • oracle 物化视图及创建索引

    千次阅读 2021-05-07 14:23:08
    普通视图是虚拟表,应用的局限性大,任何对视图的查询,Oracle都实际上转换为视图SQL语句的查询。这样对整体查询性能的提高,并没有实质上的好处。1、物化视图的类型:ON DEMAND、ON COMMIT二者的区别在于刷新方法的...
  • 【SQL】实验九 视图的使用

    千次阅读 2022-04-05 19:55:55
    1.熟悉视图的操作。 二、实验内容及要求 用SQL语句完成下列功能。使用数据库为SCHOOL数据库。 1.建立一视图View_CSTeacher,列出计算机系各个老师的资料(姓名、性别、职称)。 2.建立一视图View_Class,...
  • SQL语法——创建视图、可更新视图

    千次阅读 2022-04-16 22:32:34
    使用MERGE算法,MySQL首先将输入查询与SELECT定义视图的语句组合成单个查询。然后MySQL执行组合查询以返回结果集。 如果SELECT语句包含聚合函数,例如 MIN,MAX,SUM,COUNT,AVG 或DISTINCT,G
  • 提示无法对视图创建索引,因为该视图未绑定到架构的解决方案 大家都知道视图了是可以建索引的,当然是有一定限制的,想在视图上建索引首先在创建视图时要这样写 create view 视图名称 with schemabinding as ...
  • 如何对视图更新的表数据进行刷新

    千次阅读 2018-05-24 14:03:41
    delete 表名;insert into 表名 select * from 对应的视图名;
  • 无法对视图创建聚集索引

    千次阅读 2013-05-13 17:53:42
    总结一下对视图创建聚集索引创建聚集索引的注意事项 一、视图必须绑定到架构。 要做到这点,在 CREATE VIEW 语句中,必须加上 WITH SCHEMABINDING,如果是使用企业管理器,则在设计界面的空白处点击右键,属性,...
  • 2、可以通过视图插入数据,但只能单表进行插入,不能多表进行插入; 3、创建视图一般加上with check option,此时插入数据会做满足视图条件检查; 三、视图授权示例(视图权限归类为表权限) create table ...
  • ORACLE 创建视图索引序列

    千次阅读 2021-05-07 11:25:54
    /*视图View视图是从若干基本表和(或)其他视图构造出来的表视图存放的都是查询语句,并没有真实的数据虚表作用限制数据的操作复杂查询变简单提供相同数据的不同显示UNION ALL直接添加到一起UNION添加到一起并去重*/...
  • oracle视图的几个重要内容

    千次阅读 2021-04-30 10:43:57
    视图是指计算机数据库中的视图,是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用...
  • 在数据表视图中不能进行的操作是什么?在数据表视图中不能进行的操作是修改字段的类型。在“数据表”视图中可以进行字段的编辑、添加、删除,记录的删除和数据查找等操作,但使用“数据表”视图建立的表结构,只说明...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 937,977
精华内容 375,190
关键字:

对视图