视图创建语句对视图操作的影响

如果想要一个可以更新(这里的更新指的是增加,删除,修改)的视图,原表应尽量使单表,否则限制比较多。下面的情况一旦出现在视图中,视图就不允许更新。

1. 若视图是由两个以上基本表导出的,则此视图不允许更新。

2. 若视图的字段来自字段表达式或常数,则不允许对此视图执行INSERT和UPDATE操作,但允许执行DELETE操作。

3. 若视图的字段来自集函数,则此视图不允许更新。

4. 若视图定义中含有GROUP BY子句,则此视图不允许更新。

5. 若视图定义中含有DISTINCT短语,则此视图不允许更新。

6. 若视图定义中有嵌套查询,并且内层查询的FROM子句中涉及的表也是导出该视图的基本表,则此视图不允许更新。例如将成绩在平均成绩之上的元组定义成一个视图GOOD_SC: CREATE VIEW GOOD_SC AS SELECT Sno, Cno, Grade FROM SC WHERE Grade > (SELECT AVG(Grade) FROM SC);   导出视图GOOD_SC的基本表是SC,内层查询中涉及的表也是SC,所以视图GOOD_SC是不允许更新的。

7. 一个不允许更新的视图上定义的视图也不允许更新。

8. 若视图中出现集合运算或分组函数, 如INSTINCE,SUM,MAX,COUNT等,则次数图不允许更新。

9. 出现GROUP BY,ODER BY, MODEL,START WITH 等,则此视图不可以更新。

10. 出现伪列关键字,如ROWNUM,则此视图不可以更新。

 

 

视图在MySQL数据库管理系统中是一种虚拟表,它并不存储数据而是通过SQL查询从现有的一张或多张表中生成。当你创建一个视图时,实际上是在创建一条查询规则,该规则指出如何选择、过滤以及组合数据。 ### 创建视图的基本语法 创建视图的基本语法结构如下: ```sql CREATE VIEW view_name AS query; ``` 这里的`view_name`是要创建视图的名称,而`query`是一个SQL查询语句,用于从现有的表中提取所需的数据。 #### 示例 假设有一个名为 `employees` 的表,包含列 `employee_id`, `first_name`, `last_name` 和 `salary`。如果我们想创建一个只显示员工名字和薪水的视图,并按照薪水降序排列,可以这样做: ```sql CREATE VIEW employee_salaries AS SELECT first_name, last_name, salary FROM employees ORDER BY salary DESC; ``` 一旦视图创建完成,你可以像查询任何其他表一样查询它: ```sql SELECT * FROM employee_salaries; ``` ### 使用视图的好处: 1. **简化复杂查询**:视图可以将复杂的查询结果简化为更易于理解的形式,减少了对原始表的直接操作需求。 2. **数据安全性**:通过对某些信息应用视图限制,可以控制用户访问特定数据的方式,增加数据安全性和隐私保护。 3. **提供单一入口**:视图可以作为系统中数据的主要入口点,允许基于不同需要的不同查询结果。 4. **更新一致性**:通过视图,可以控制数据的更新,比如只允许更新视图中计算出的部分字段。 ### 相关问题: 1. 视图与实际表的区别是什么? 2. 如何删除MySQL中的视图? 3. 是否可以在视图上再次创建视图? --- 在这个回答的基础上,我们可以继续探讨MySQL视图的更多细节,如它们是如何影响查询性能的,如何利用视图实现数据分组和汇总等高级特性,以及如何管理视图生命周期,包括创建、修改、删除等方面的内容。同时,也可以讨论关于视图的安全性设置、性能优化策略,以及在实际项目中如何合理使用视图以提高数据管理和查询效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值