系列文章
C#底层库–数据库访问帮助类(MySQL版)
本文链接:https://blog.csdn.net/youcheng_ge/article/details/126886379
文章目录
- 系列文章
- 前言
- 一、概念介绍
- 二、测试用例
- 2.1 数据准备
- 2.2 数据查询
- 2.3 修改视图,加上WITH CHECK OPTION
- 2.4 再次进行数据插入
- 2.5 再次查询数据
- 三、用法总结
前言
本专辑主要介绍SQL的功能与特点、SQL数据定义语言(表、视图、索引、约束)、SQL数据操作语言(数据检索、数据插入、数据删除、数据更新)、创建与删除触发器、SQL数据控制语言(安全性和授权、事务处理)以及嵌入式SQL。
如果你对本专辑感兴趣,持续关注吧。大家有任何问题,也可以评论区反馈,私信我。
一、概念介绍
视图的定义:
视图不是真实存在的基本表,而是一个虚拟表
视图的作用:
1、可以使视图集中数据、简化和定制不同用户对数据库的不同数据要求
2、使用视图可以屏蔽数据的复杂性,用户不必了解数据库的结构,就可以方便地使用和管理数据,简化数据权限管理和重新组织数据以便输出到其他应用程序中。
3、视图可以使用户只关心他感兴趣的某些特定数据和所负责的特定任务,而那些不需要的或者无用的数据则不再视图中显示。
4、视图大大地简化了用户对数据的操作。
5、视图可以让不同的用户以不同的方式看到不同或者相同的数据集。
6、在某些情况下,由于表中数据量太大,因此在表的设计时常对表进行水平或者垂直分割,但表的结构的变化对应用程序产生不良的影响。
7、视图提供了一个简单而有效的安全机制。
视图的创建:
CREATE VIEW 视图名(列表名)
AS SELECT 查询子句
[WITH CHECK OPTION]
二、测试用例
2.1 数据准备
创建用户信息表userinfo
CREATE TABLE userinfo(
sno CHAR(10) NOT NULL UNIQUE,
sname CHAR(40) UNIQUE,
city CHAR(20),
PRIMARY KEY (sno)
);
创建用户信息视图V_userinfo,条件:“城市”只取“镇江”的数据。
CREATE VIEW V_userinfo
AS
SELECT * FROM userinfo
WHERE city='zhengjiang'
向视图中插入数据,本质也是往表中插入数据
INSERT INTO V_userinfo VALUES('00001','成成','zhengjiang');
INSERT INTO V_userinfo VALUES('00002','欣欣','zhengjiang');
INSERT INTO V_userinfo VALUES('00003','刘健','nanjiang');
数据插入成功,如下图所示:
2.2 数据查询
查询表
SELECT * FROM userinfo
结果
查询视图
SELECT * FROM V_userinfo
结果
2.3 修改视图,加上WITH CHECK OPTION
修改视图
ALTER VIEW V_userinfo
AS
SELECT * FROM userinfo
WHERE city='zhengjiang'
WITH CHECK OPTION
运行结果:成功
2.4 再次进行数据插入
插入00004
INSERT INTO V_userinfo VALUES('00004','婷婷','zhengjiang');
运行结果:
1 queries executed, 1 success, 0 errors, 0 warnings
查询:INSERT INTO V_userinfo VALUES('00004','婷婷','zhengjiang')
共 1 行受到影响
执行耗时 : 0.009 sec
传送时间 : 0 sec
总耗时 : 0.009 sec
插入00005
INSERT INTO V_userinfo VALUES('00005','壮壮','nanjiang');
运行结果:
1 queries executed, 0 success, 1 errors, 0 warnings
查询:INSERT INTO V_userinfo VALUES('00005','壮壮','nanjiang')
错误代码: 1369
CHECK OPTION failed 'test.v_userinfo'
执行耗时 : 0 sec
传送时间 : 0 sec
总耗时 : 0 sec
2.5 再次查询数据
查询表
SELECT * FROM userinfo
结果
查询视图
SELECT * FROM V_userinfo
结果
可以清楚的发现,将入了“WITH CHECK OPTION”语句,00005这条数据无法插入进数据库中。
三、用法总结
WITH CHECK OPTION(带有检查选项)表示对update、insert、delete操作时保证更新、插入或者删除满足视图定义中的谓词条件(即子查询中的条件表达式)。
使用WITH CHECK OPTION的视图,对于数据插入,不满足where条件的数据,插入失败,错误代码1369。具有一个检查的功能。
with check option保证了通过视图进行的修改,必须也能通过该视图看到修改后的结果。
修改的结目标和结果都只在视图上呈现,这样不会影响其他视图。
所以你插入,那么插入这条记录在刷新视图后必须可以看到;
如果修改,修改完的结果也必须能通过该视图看到;
如果删除,当然只能删除视图里有显示的记录。