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小时内删除。
发表评论