mysql可更新视图_mysql 可更新视图 - CSDN
精华内容
参与话题
  • Mysql更新视图限制

    千次阅读 2018-01-12 14:15:36
    老司机直接上路了.前提:基本关系如果改变,必须立即反映到设计的视图上但是通过视图去更新则必须注意以下条件:1、如果视图有一个基本关系的简单查询生成,而且它还包含了...ISO标准给出的视图可更新充要条件为:1、

    老司机直接上路了.

    前提:

    基本关系如果改变,必须立即反映到设计的视图上

    但是通过视图去更新则必须注意以下条件:

    1、如果视图有一个基本关系的简单查询生成,而且它还包含了基本关系中的主关键字或是候选关键字,则可以通过这个视图进行更新操作。
    2、不允许对涉及到多个基本关系的视图进行更新。
    3、如果视图的生成中涉及到聚集或是分组操作,则不允许通过这个视图进行更新。

    ISO标准给出的视图的可更新充要条件为:

    1、没有指定DISTINCT,即重复元组未从查询结果中消除;
    2、定义查询的SELECT列表中的每个元素均为列名(而不是常量,表达式或聚合函数),且列名出现不能多于一次;
    3、FROM子句只能指定一个表,即视图必须有一个源表且用户有请求该表的权限。如果源表本身就是一个视图,那么视图必须满足这些条件。因此,排除了基于连接、并(UNION)、交(INTERSECT)或差(EXCEPT)操作的所有视图;
    4、where子句不能包含任何引用了FROM子句的表的嵌套SELECT操作。
    5、定义查询不能有GROUP BY或HAVING子句。

    这里写图片描述

    关注博客

    关注更多文章

    展开全文
  • 创建MySQL可更新视图

    千次阅读 2016-10-19 22:58:49
    MySQL中,视图不仅是可查询的,而且是可更新的。这意味着您可以使用INSERT或UPDATE语句通过可更新视图插入或更新基表的行。此外,您可以使用DELETE语句通过视图删除基础表的行。 在本教程中,我们将向您展示如何...

    在MySQL中,视图不仅是可查询的,而且是可更新的。这意味着您可以使用INSERT或UPDATE语句通过可更新视图插入或更新基表的行。此外,您可以使用DELETE语句通过视图删除基础表的行。
    在本教程中,我们将向您展示如何创建可更新视图并更新基础表中的数据。

    MySQL可更新数据视图简介

    在MySQL中,视图不仅是可查询的,而且是可更新的。这意味着您可以使用INSERTUPDATE语句通过可更新视图插入或更新基表的行。此外,您可以使用DELETE语句通过视图删除基础表的行。

    但是,要创建可更新视图,定义视图的SELECT语句不能包含以下任何元素:
    - 不能包含聚合函数,如:MINMAXSUMAVGCOUNT等等。
    - 不能包含DISTINCT
    - 不能包含GROUP BY子句。
    - 不能包含HAVING子句。
    - 不能包含UNION或UNION ALL子句。
    - 不能包含左连接与外连接。
    - SELECT语句中不能包含子查询或引用该表的WHERE子句出现在FROM子句中。
    - 在FROM子句中引用不可更新视图。
    - 不能仅引用文字值。
    - 不能对基表的任何列有多个引用。

    如果使用TEMP TABLE算法创建视图,则无法更新视图。

    请注意,有时可以使用内部联接创建基于多个表的可更新视图。

    MySQL可更新视图示例

    现在,让我们来创建一个可更新的视图。
    首先,基于示例数据库中的office表创建一个名称为officeInfo的视图。视图涉及office表的三列:office_idphonecity。如下代码所示 -

    CREATE VIEW officeInfo
     AS 
       SELECT office_id, phone, city
       FROM studymysql.office;

    接下来,我们可以使用以下语句从officeInfo视图中查询数据:

    SELECT 
        *
    FROM
        officeInfo;

    执行上面的查询语句,得到以下结果 -

    然后,我们可以使用以下UPDATE语句通过officeInfo视图更改办公室编号为5的办公室的电话号码。

    UPDATE officeInfo 
    SET 
        phone = '13800138000'
    WHERE
        office_id = 1005;

    最后,要验证修改结果,我们可以通过执行以下查询从officeInfo视图中查询数据:

    SELECT 
        *
    FROM
        officeInfo
    WHERE
        office_id = 1005;

    执行上面的查询语句,查询结果如下 -

    检查可更新视图信息

    您可以通过从information_schema数据库中的 views 表查询is_updatable列来检查数据库中的视图是否可更新。
    以下查询从studymysql数据库获取所有视图,并显示哪些视图是可更新的。如下查询语句所示 -

    SELECT 
        table_name, is_updatable
    FROM
        information_schema.views
    WHERE
        table_schema = 'studymysql';

    执行上面的查询结果如下-

    通过视图删除行记录

    首先,我们创建一个名为items的表,在items表中插入一些行记录,并创建一个包含价格大于2000的项目的视图。

    -- create a new table named items
    CREATE TABLE items (
        id INT AUTO_INCREMENT PRIMARY KEY,
        name VARCHAR(100) NOT NULL,
        price DECIMAL(11 , 2 ) NOT NULL
    );
    
    -- insert data into the items table
    INSERT INTO items(name,price) 
    VALUES('Laptop',4200.56),('Desktop',3699.99),('iPad',3990.58),('小米',1990.98),('荣耀X6',1590.58),('华为P9 plus 4G',5190.00) ;
    
    -- create a view based on items table
    CREATE VIEW HightPriceItems AS
        SELECT 
            *
        FROM
            items
        WHERE
            price > 2000;
    -- query data from the HightPriceItems view
    SELECT 
        *
    FROM
        HightPriceItems;

    执行上面的语句,结果如下所示 -

    第二步,我们使用DELETE语句删除id3的行记录。MySQL返回一条消息: 1 row(s) affected. 说明执行语句成功。

    DELETE FROM HightPriceItems 
    WHERE
        id = 3;

    第三步,让我们再次通过查询HightPriceItems视图查看数据。

    SELECT 
        *
    FROM
        HightPriceItems;

    执行上面的查询语句,查询结果如下 -

    第四步,我们还可以从基表items查询数据,以验证DELETE语句是否实际删除ID为3的行记录。

    SELECT 
        *
    FROM
        items;

    执行上面的查询语句,查询结果如下 -

    正如您所看到的,在基表中删除了ID3的行记录。

    在本教程中,我们向您展示了如何通过创建可更新视图并更新基础表中的数据。

    相关教程

    MySQL学习QQ群:418407075

    展开全文
  • MySQL更新视图

    千次阅读 2017-07-29 23:58:44
    更新视图 是指通过视图,来更新、插入、删除基本表中的数据因为,视图是一个虚拟表,其中没有数据,所以,当通过视图更新数据时...MySQL中,可以使用UPDATE语句,更新视图更新view_stu视图中,chinese字段对应的数据值

    更新视图
    是指通过视图,来更新、插入、删除基本表中的数据

    因为,视图是一个虚拟表,其中没有数据,所以,当通过视图更新数据时,其实,是在更新基本表中的数据,如果对视图中的数据进行增加,或者删除操作时,实际上是在对其基本表中的数据,进行增加或者删除操作

    UPDATE语句

    使用UPDATE语句更新视图
    MySQL中,可以使用UPDATE语句,更新视图

    更新view_stu视图中,chinese字段对应的数据值,将字段值改为100
    UPDATE view_stu SET chinese=100;
    首先,查看view_stu视图,student表中chinese字段的信息

    这里写图片描述

    可以看出,view_stu视图和student表中,chinese字段的信息
    使用UPDATE语句,更新视图view_stu中的chinese字段值

    这里写图片描述

    可以看出,view_stu视图和student表中,chinese字段更新为100

    这里写图片描述

    同时,基本表student中的chinese字段,和基于基本表建立的view_stu2视图中的chin字段的值,都变为100

    INSERT语句

    使用INSERT语句更新视图
    MySQL中,可以使用INSERT语句,向表中插入一条记录

    使用INSERT语句,向student表中插入一条数据
    其中,s_id字段的值为4,name字段的值为Lily,math字段的值为100,chinese字段的值为100

    这里写图片描述

    可以看出,已经向student表中,插入了id为4的记录
    此时,查看基于student,建立的view_stu2视图中的信息

    这里写图片描述

    可以看出,在student表中插入数据之后
    View_stu2视图中的数据,也随之改变
    因此,当基本表中的数据发生变化之后,与基本表对应的视图也会一起改变

    DELETE语句

    使用DELETE语句更新视图
    MySQL中,可以使用DELETE语句,删除视图中的部分记录

    使用DELETE语句,在view_stu2视图中删除一条记录
    DELETE FROM view_stu2 WHERE math=70;

    这里写图片描述

    可以看出,view_stu2视图中,删除了math=70的记录
    此时,查看student表中的信息

    这里写图片描述

    可以看出,student表中math=70的记录,也被删除了
    因为,视图中的删除操作,最终是通过删除基本表中的记录实现的

    注意,虽然视图更新的方式有多种,但是,并不是所有情况下,都能执行视图的更新操作
    当视图中包含如下内容时,视图的更新操作不能被执行
    1、视图中包含,基本表中被定义为非空的列
    2、在定义视图的SELECT语句后的字段列表中,使用了数学表达式
    3、在定义视图的SELECT语句后的字段列表中,使用了聚合函数
    4、在定义视图的SELECT语句中,使用了DISTINCT、UNION、TOP、GROUP BY或者HAVING子句

    展开全文
  • 视图报错: [code="java"] The target table t_view of the UPDATE is not updatable [/code] [code="java"] CREATE OR REPLACE VIEW t_view AS SELECT * FROM user LIMIT 1,3; [/code]
    视图报错:

    The target table t_view of the UPDATE is not updatable


    CREATE OR REPLACE VIEW t_view AS SELECT * FROM user LIMIT 1,3;
    展开全文
  • 主要介绍了mysql视图之创建可更新视图的方法,结合实例形式分析了mysql可更新视图的具体创建、使用方法及相关操作注意事项,需要的朋友可以参考下
  • MySQL可更新视图

    千次阅读 2018-07-24 10:43:55
    可更新视图是指通过视图,来更新、插入、删除基本表中的数据。视图是一个虚拟表,即对视图的更新,实质上是更新基表。但是视图的构造很多时候是由多个表连接查询,以及结合聚合函数,分组过滤等等定义的。对于这类的...
  • mysql视图之创建可更新视图

    千次阅读 2018-07-12 16:13:36
    我们知道,在mysql中,视图不仅是可查询的,而且是可更新的。这意味着我们可以使用insert或update语句通过可更新视图插入或更新基表的行。 另外,我们还可以使用delete语句通过视图删除底层表的行。但是,要创建...
  • MySQL——更新视图

    千次阅读 2018-05-16 23:07:48
     更新视图 更新视图是指通过视图来插入、更新、删除表中的数据。视图是一个虚拟表,其中没有数据,通过视图更新的时候都是转到基本表上进行更新的,如果对视图增加或者删除记录,实际上是对其基本表增加或者删除...
  • MySQL数据库面试题(2020最新版)

    万次阅读 多人点赞 2020-03-10 17:20:40
    数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4...
  • MySQL数据库视图视图定义、创建视图、修改视图

    万次阅读 多人点赞 2017-03-20 11:54:15
    视图是指计算机数据库中的视图,是一个虚拟表,其内容由查询定义。视图不直接存储数据,不知真正的表。 关系型数据库中的数据是由一张一张的二维关系表所组成,简单的单表查询只需要遍历一个表,而复杂的多表查询...
  • 首先mysql视图不是一种物化视图,他相当于一个虚拟表,本身并不存储数据,当sql在操作视图时所有数据都是从其他表中查询出来的。者带来的问题是使用视图并不能将常用数据分离出来,优化查询速度,切操作视图的很多...
  • MySQL视图

    千次阅读 2019-08-03 16:44:21
    1、视图概述 视图是由数据库中的一个表或多个表导出的虚拟表,是一种虚拟存在的表,方便用户对数据的操作。 1.1 视图的概念 视图是一个虚拟表,是从数据库中一个或多个表中导出来的表,其内容由查询定义。同真实...
  • 1、什么是视图 视图就是一条SELECT语句执行后返回的结果集, 视图是一个虚拟表,同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义...
  • mysql视图不允许更新的条件

    千次阅读 2015-12-15 20:35:17
    1. 若视图是由两个以上基本表导出的,则此视图不允许更新。 2. 若视图的字段来自字段表达式或常数,则不允许对此视图执行INSERT和UPDATE操作,但允许执行DELETE操作。 3. 若视图的字段来自集函数,则此视图不...
  • mysql删除或更新视图时都会执行下视图的查询吗? 问题的引发:目前有这么一个视图 执行得很慢(是我手贱把一个本身就执行得很慢的函数放了进去,本想试试究竟要耗时多长时间的,结果就再也回不了头了) ,之后我就想...
  • MySQL创建视图语法,MySQL视图的作用

    千次阅读 2019-10-01 14:32:22
    MySQL创建视图语法,MySQL视图的作用 一、语法 1、 MySQL创建视图语法如下: CREATE VIEW view_name AS SELECT * FROM table_name ; 2、view_name:必填,唯一不重复。 3、调用视图: SELECT * FROM ...
1 2 3 4 5 ... 20
收藏数 121,939
精华内容 48,775
关键字:

mysql可更新视图