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;
+------+-------+-------+
| 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版
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值