返回列表 发帖

更新视图

在SQL视图上也可以使用修改数据的DML语句,如 INSERT、UPDATE和DELETE。
 视图可以在特定的情况下更新:

SELECT 子句不能包含 DISTINCT 关键字
SELECT 子句不能包含任何汇总函数(summary functions)
SELECT 子句不能包含任何集合函数(set functions)
SELECT 子句不能包含任何集合运算符(set operators)
SELECT 子句不能包含 ORDER BY 子句
视图不能包含连接操作符
视图不能包含伪列或表达式
FROM 子句中不能有多个数据表
WHERE 子句不能包含子查询(subquery)
查询语句中不能有 GROUP BY 或者 HAVING
计算得出的列不能更新
视图必须包含原始数据表中所有的 NOT NULL 列,从而使 INSERT 查询生效。
 如果视图满足以上所有的条件,该视图就可以被更新。下面的例子中,Ramesh 的年龄被更新了:

SQL > UPDATE CUSTOMERS_VIEW
      SET AGE = 35
      WHERE name='Ramesh';
 最终更新的还是原始数据表,只是其结果反应在了视图上。现在查询原始数据表,SELECT 语句将会产生以下结果:

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  35 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

返回列表