欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

如何在MySQL中修改视图内容

最编程 2024-02-19 13:15:26
...

一.   更新视图  

  更新视图是指通过视图来插入、更新、删除表中的数据。视图是一个虚拟表,其中没有数据,通过视图更新的时候都是转到基本表上进行更新的,如果对视图增加或者删除记录,实际上是对其基本表增加或者删除记录。

     更新视图的三种方法:INSERT、UPDATE 和  DELETE。

1.  使用  UPDATE  语句更新视图

    【例】使用  UPDATE  语句更新视图  view_t。

更新前:

mysql> SELECT  *  FROM  view_t;
+----------+
| quantity |
+----------+
|        3 |
+----------+

更新语句:

mysql> UPDATE  view_t  SET  quantity=5;
Query OK, 1 row affected (0.13 sec)

更新后:

mysql> SELECT  *  FROM  view_t;
+----------+
| quantity |
+----------+
|        5 |
+----------+

对视图  view_t  更新后,基本表  t  也更新了。

mysql> SELECT  *  FROM  t;
+----------+-------+
| quantity | price |
+----------+-------+
|        5 |    50 |
+----------+-------+

2.  使用  INSERT  语句更新视图

    【例】使用  INSERT  语句在基本表  t  中插入一条记录。

插入前:
mysql> SELECT  *  FROM  t;
+----------+-------+
| quantity | price |
+----------+-------+
|        5 |    50 |
+----------+-------+

插入语句:

mysql> INSERT  INTO t  VALUES (3,5);
Query OK, 1 row affected (0.10 sec)

更新后:

mysql> SELECT  *  FROM  t;
+----------+-------+
| quantity | price |
+----------+-------+
|        5 |    50 |
|        3 |     5 |
+----------+-------+

基于 t  表的视图  view_t2  也跟新了:

mysql> SELECT  *  FROM  view_t2;
+------+-------+-------+
| qty  | price | total |
+------+-------+-------+
|    5 |    50 |   250 |
|    3 |     5 |    15 |
+------+-------+-------+

3.  用 DELETE 语句更新视图

    【例】使用  DELETE  语句删除视图  view_t2  中的一条记录。

更新前:

mysql> SELECT  *  FROM  view_t2;
+------+-------+-------+
| qty  | price | total |
+------+-------+-------+
|    5 |    50 |   250 |
|    3 |     5 |    15 |
+------+-------+-------+

更新语句:

mysql> DELETE  FROM  view_t2  WHERE  price=5;
Query OK, 1 row affected (0.10 sec)

更新后:

mysql> SELECT  *  FROM  view_t2;
+------+-------+-------+
| qty  | price | total |
+------+-------+-------+
|    5 |    50 |   250 |
+------+-------+-------+


二.   更新视图的限制

        并不是所有的视图都可以更新,以下几种情况是不能更新视图的:

    1.   视图中包含  COUNT()、SUM()、MAX() 和 MIN() 等聚合函数。

    2.   视图中包含  UNION、UNION ALL、DISTINCT、 GROUP  BY  和  HAVING 等关键字。

    3.   常量视图。

    4.   视图中的  SELECT 中包含子查询。

    5.   由不可更新的视图导出的视图。

    6.   创建视图时,ALGORITHM  为 TEMPTABLE 类型。

 
【注】   视图中虽然可以更新数据,但是有很多的限制。一般情况下,最好将视图作为查询教据的虚拟表,而不要通过视图更新数据。因为,使用视图更新数据时,如果没有全面考虑在视图中更新数据的限制,可能会造成数据更新失败。



【注】参考于清华大学出版社《MySQL数据库应用案例课堂》2016年1月第1版

推荐阅读