数据库-索引与视图-视图的定义与操纵

创建视图:

CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
    VIEW view_name [(column_list)]
    AS select_statement
   [WITH [CASCADED | LOCAL] CHECK OPTION]
  • OR REPLACE:表示替换已有视图;

  • ALGORITHM:表示视图选择算法,默认算法是UNDEFINED(未定义的): MySQL 自动选择要使用的算法 ;merge合并;temptable临时表;

  • column_list:可选参数,指定视图中各个属性的名词,默认情况下与 select 语句中查询的属性相同;

  • select_statement:表示 select 语句;

  • [WITH [CASCADED | LOCAL] CHECK OPTION]:表示视图在更新时保证在视图的权限范围之内;cascade是默认值,表示更新视图的时候,要满足视图和表的相关条件;local表示更新视图的时候,要满足该视图定义的一个条件即可。


在视图 V_AVG_S_G 上,查询平均成绩为90分及以上的学生学号、姓名和成绩:

SELECT sno,sname,grade from V_AVG_S_G WHRER 平均成绩>=90;

使用WITH CHECK OPTION可以有效地保护视图中的数据,确保只有符合特定条件的记录才能被插入或更新,从而提高数据的完整性和一致性。 


CREATE OR REPLACE : 【创建或替换已创建的】视图

view_name : 视图名称;

column_list : 属性列;

SELECT_STATEMENT :SELECT语句;

WITH CHECK OPTION 表示视图在更新时保证在视图的权限范围内。


在视图上使用INSERT语句添加数据时,要符合以下规则:

  1. 使用INSERT语句向数据表中插入数据时,用户必须有插入数据的权利;
  2. 由于视图只引用表中的部分字段,所以通过视图插入数据时只能明确指定视图中引用的字段的取值。而那些表中并未引用的字段,必须知道在没有指定取值的情况下如何填充数据,因此视图中未引用的字段必须具备下列条件之一;

(1)该字段允许空值;

(2)该字段设有默认值;

(3)该字段是标识字段,可根据标识种子和标识增量自动填充数据

(4)该字段的数据类型为 timestamp 或 uniqueidentifier。

3. 视图中不能包含多个字段值的组合,或者包含使用统计函数的结果;

4. 视图中不能包含 DISTINCT 或 GROUP BY子句;

5. 如果视图中使用了 WITH CHECK OPTION,那么该子句将检查插入的数据是否符合视图定义中 SELECT 语句所设置的条件。如果插入的数据不符合该条件,SQL Server 会拒绝插入数据;

6. 不能在一个语句中对多个基础表使用数据修改语句。因此,如果要向一个引用了多个数据表的视图添加数据时,必须使用多个 INSERT 语句进行添加。

insert into v_information(sno,sname,sdept,sclass) values  ('98001','王立红','信息','02');

  • 21
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值