MySql数据库: 视图用法以及作用,创建视图时添加动态WHERE条件

目录

1、视图介绍

2、创建、查询、修改、删除视图

2.1 创建视图

2.2 查询视图

2.3 修改视图

2.4 删除视图

3、视图的检查选项

3.1 CASCADED 检查选项

3.2 LOCAL 检查选项

4、视图的更新

5、视图的作用

(1)简单

(2)安全

(3)数据独立

1、视图介绍

视图(View)是一种虚拟存在的表。视图中的数据并不在数据库中实际存在,行和列数据来自定义视图的查询中使用的表,并且是在使用视图时动态生成的。

通俗的讲,视图只保存了查询的SQL逻辑,不保存查询结果。所以我们在创建视图的时候,主要的工作就落在创建这条SQL查询语句上

2、创建、查询、修改、删除视图

2.1 创建视图

CREATE  [OR REPLACE] VIEW 视图名称[(列名列表)] AS SELECT语句 [WITH[CASCADED | LOCAL] CHECK  OPTION]

2.1.2 oracle 创建视图中怎么加动态where条件

 CREATE OR REPLACE VIEW 视图名称[(列名列表)]  AS  SELECT语句  FROM 表名WHERE status = NVL(:name, name);

在上面的语法中,使用了NVL函数来检查传递给视图的参数值。如果参数值不为空,则使用参数值作为WHERE条件的值。否则,使用表中的原始值。

2.2 查询视图

查看创建视图语句:SHOW CREATE VIEW 视图名称

查看视图数据:SELECT * FROM 视图名称......

2.3 修改视图

方式一:CREATE  [OR REPLACE]  VIEW 视图名称[(列名列表)] AS SELECT语句 [WITH[CASCADED | LOCAL] CHECK OPTION]

方式二:ALTER VIEW 视图名称[(列名列表)] AS SELECT语句 [WITH[CASCADED | LOCAL] CHECK OPTION]

2.4 删除视图

DROP VIEW [IF EXISTS] 视图名称 [,视图名称]......

3、视图的检查选项

当使用WITH CHECK OPTION子句创建视图时,MySQL会通过视图检查正在更改的每个行,例如 插入、更新、删除、以及其符合视图的定义。MySQL允许基于另一个视图创建视图,它还会检查依赖视图中的规则以保持一致性。为了确定检查的范围,mysql提供了两个选项:

CASCADED 和 LOCAL ,默认值为 CASCADED。

3.1 CASCADED 检查选项

① create view v1 as select id,name from student where id <= 20

② create view v2 as select id,name from v1 where id >= 10 with cascaded check option;

③ create view v3 as select id,name from v2 where id <=15

(1)当操作v1这个视图时:由于创建视图语句①没有添加检查选项,不会检查where条件

(2)当操作v2这个视图时:由于创建视图语句② 添加了with cascaded check option 检查选项,它会检查当前操作是否满足v2视图中的where条件,由于v2视图依赖v1视图 ,相当于在v1视图上也加上了with cascaded check option,所以它也会检查当前操作是否满足v1中的where条件

(3)当操作v3这个视图时:由于创建视图语句③没有添加检查选项,不会检查where条件,但是依赖v2视图,去检查v2视图,由于创建视图语句② 添加了with cascaded check option 检查选项,它会检查当前操作是否满足v2中的where条件,由于v2视图依赖视图v1 ,相当于在v1视图上也加上了with cascaded check option,所以它也会检查当前操作是否满足v1中的where条件

3.2 LOCAL 检查选项

④ create view v4 as select id,name from student where id <= 20

⑤ create view v5 as select id,name from v4 where id >= 10 with local check option;

⑥ create view v6 as select id,name from v5 where id <=15

(1)当操作v4这个视图时:由于创建视图语句④没有添加检查选项,不会检查where条件

(2)当操作v5这个视图时:由于创建视图语句⑤ 添加了with local check option 检查选项,它会检查当前操作是否满足v5视图中的where条件,因为v5视图依赖v4视图 ,所以要去检查v4视图,由于v4视图没有定义检查选项,所以它不会检查当前操作是否满足v4中的where条件

(3)当操作v6这个视图时:由于创建视图语句⑥没有添加检查选项,不会检查where条件,但是依赖v5视图,去检查v5视图,由于创建视图语句⑤ 添加了with local check option 检查选项,它会检查当前操作是否满足v5视图中的where条件,因为v5视图依赖v4视图 ,所以要去检查v4视图,由于v4视图没有定义检查选项,所以它不会检查当前操作是否满足v4中的where条件

4、视图的更新

要使视图可更新,视图中的行于基础表中的行之间必须存在一对一的关系。如果视图包含一下任何一项,则该视图不可更新:

1. 聚合函数或窗口函数 (SUM()、MIN()、MAX()、COUTN()等)

2.DISTINCT

3. GROUP BY

4. HAVING

5. UNION 或者 UNION ALL

5、视图的作用

(1)简单

视图不仅可以简化用户对数据的理解,也可以简化他们的操作。那些被经常使用的查询可以被定义为视图,从而使得用户不必为以后的操作每次指定全部的条件。

(2)安全

数据库可以授权,但不能授权到数据库特定行和特定的列上。通过视图用户只能查询和修改他们能看到的数据

(3)数据独立

视图可以帮助用户屏蔽真实表结构变化带来的影响。(屏蔽了基表的变化对业务的影响)

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Linux上建立MySQL视图的方法如下: 1. 首先,确认你已经在Linux系统上安装了MySQL数据库,并且已经成功运行。 2. 打开终端窗口,以root用户身份登录MySQL数据库。 3. 创建一个新的数据库(如果还没有),可以使用以下命令: CREATE DATABASE your_database_name; 4. 切换到要使用的数据库,可以使用以下命令: USE your_database_name; 5. 使用CREATE VIEW语句创建一个新的视图视图的语法如下: CREATE VIEW view_name AS SELECT column1, column2, ... FROM table_name WHERE condition; 在这个语句中,view_name是你为视图指定的名称,column1、column2等是你想要在视图中包含的列的名称,table_name是你从中选择数据的表的名称,condition是可选的筛选条件。 例如,如果你想在名为student_info的表上创建一个名为student_view的视图,可以使用以下命令: CREATE VIEW student_view AS SELECT s_id, s_name, s_no FROM student_info; 6. 确认视图已经成功创建,可以使用以下命令: SHOW CREATE VIEW view_name; 这将显示有关视图的详细信息,包括创建视图的SQL语句。 7. 现在你可以在查询中使用这个视图了。例如,可以使用以下命令查看视图的内容: SELECT * FROM student_view; 这将返回student_view视图的所有行和列。 请注意,创建视图的用户必须具有足够的权限来执行这个操作。另外,视图是虚拟的,并不实际存储数据,它们是通过执行定义视图的查询来动态生成的。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [mysql进阶资料,包含mysql在linux上安装](https://download.csdn.net/download/weixin_38598961/87778166)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [【Linux】Mysql视图的基本操作](https://blog.csdn.net/weixin_65690979/article/details/130045306)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值