MySQL——更新视图
⼀.  更新视图
更新视图是指通过视图来插⼊、更新、删除表中的数据。视图是⼀个虚拟表,其中没有数据,通过视图更新的时候都是转到基本表上进⾏更新的,如果对视图增加或者删除记录,实际上是对其基本表增加或者删除记录。
更新视图的三种⽅法: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;
+------+-------+-------+mysql数据库的方法
| 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版

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。