码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 数据库专辑--WITH CHECK OPTION的用法


    系列文章

    C#底层库–MySQL脚本自动构建类(insert、update语句生成)
    本文链接:https://blog.csdn.net/youcheng_ge/article/details/129179216

    C#底层库–MySQL数据库访问操作辅助类(推荐阅读)
    本文链接:https://blog.csdn.net/youcheng_ge/article/details/126886379

    C#底层库–SQLiteHelper访问操作辅助类
    本文链接:https://blog.csdn.net/youcheng_ge/article/details/123666958

    【提升编程效率】Excel数据批量导入工具
    本文链接:https://blog.csdn.net/youcheng_ge/article/details/126427323

    【Oracle】数据库服务器限制ip访问
    本文链接:https://blog.csdn.net/youcheng_ge/article/details/122220930

    【Oracle】Excel导入数据教程
    本文链接:https://blog.csdn.net/youcheng_ge/article/details/118722756

    【Oracle】数据库还原教程_数据泵
    本文链接:https://blog.csdn.net/youcheng_ge/article/details/118054855

    【SQL】如何查询表字段并识别主键
    本文链接:https://blog.csdn.net/youcheng_ge/article/details/110820405

    SQL outer apply的用法
    本文链接:https://blog.csdn.net/youcheng_ge/article/details/79903489

    MySQL安装教程(详细)
    本文链接:https://blog.csdn.net/youcheng_ge/article/details/126037520

    MySQL卸载教程(详细)
    本文链接:https://blog.csdn.net/youcheng_ge/article/details/129279265

    MySQL分类汇总(group by…with rollup),如何显示“总计”字段?
    本文链接:https://blog.csdn.net/youcheng_ge/article/details/128217837

    MySQL WITH CHECK OPTION的用法
    本文链接:https://blog.csdn.net/youcheng_ge/article/details/128147196

    MySQL 使用存储过程插入千万级数据如何提升效率?
    本文链接:https://blog.csdn.net/youcheng_ge/article/details/77728189

    MySQL 数据库表行列转置的实现
    本文链接:https://blog.csdn.net/youcheng_ge/article/details/77625052

    文章目录

    • 系列文章
    • 前言
    • 一、技术介绍
    • 二、测试用例
      • 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) 
    );
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    创建用户信息视图V_userinfo,条件:“城市”只取“镇江”的数据。

    CREATE VIEW V_userinfo
    AS 
    SELECT * FROM userinfo
    WHERE city='zhengjiang'
    
    • 1
    • 2
    • 3
    • 4

    向视图中插入数据,本质也是往表中插入数据

    INSERT INTO V_userinfo VALUES('00001','成成','zhengjiang');
    INSERT INTO V_userinfo VALUES('00002','欣欣','zhengjiang');
    INSERT INTO V_userinfo VALUES('00003','刘健','nanjiang');
    
    • 1
    • 2
    • 3

    数据插入成功,如下图所示:
    在这里插入图片描述

    2.2 数据查询

    查询表

    SELECT * FROM userinfo
    
    • 1

    结果
    在这里插入图片描述

    查询视图

    SELECT * FROM V_userinfo
    
    • 1

    结果
    在这里插入图片描述

    2.3 修改视图,加上WITH CHECK OPTION

    修改视图

    ALTER VIEW V_userinfo
    AS 
    SELECT * FROM userinfo
    WHERE city='zhengjiang'
    WITH CHECK OPTION
    
    • 1
    • 2
    • 3
    • 4
    • 5

    运行结果:成功

    2.4 再次进行数据插入

    插入00004

    INSERT INTO V_userinfo VALUES('00004','婷婷','zhengjiang');
    
    • 1

    运行结果:

    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
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    插入00005

    INSERT INTO V_userinfo VALUES('00005','壮壮','nanjiang');
    
    • 1

    运行结果:

    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
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    2.5 再次查询数据

    查询表

    SELECT * FROM userinfo
    
    • 1

    结果
    在这里插入图片描述

    查询视图

    SELECT * FROM V_userinfo
    
    • 1

    结果
    在这里插入图片描述
    可以清楚的发现,将入了“WITH CHECK OPTION”语句,00005这条数据无法插入进数据库中。

    三、用法总结

    WITH CHECK OPTION(带有检查选项)表示对update、insert、delete操作时保证更新、插入或者删除满足视图定义中的谓词条件(即子查询中的条件表达式)。
    使用WITH CHECK OPTION的视图,对于数据插入,不满足where条件的数据,插入失败,错误代码1369。具有一个检查的功能。

    with check option保证了通过视图进行的修改,必须也能通过该视图看到修改后的结果。
    修改的结目标和结果都只在视图上呈现,这样不会影响其他视图。
    所以你插入,那么插入这条记录在刷新视图后必须可以看到;
    如果修改,修改完的结果也必须能通过该视图看到;
    如果删除,当然只能删除视图里有显示的记录。

  • 相关阅读:
    pta——建立学生信息链表,逆序数据建立链表,删除单链表偶数节点,链表拼接,统计专业人数,链表逆置
    java特种兵读书笔记(3-6)——java程序员的OS之JAVA常用工具
    openEuler 22.03 LTS 安装 Docker CE 和 Dcoker Compose
    SpringMvc视图解析器
    css 实现文字渐变以及文字颜色流动
    tomcat 命令行窗口乱码
    msf渗透练习-震网三代
    Java(八)----多线程
    如何从 FastReport VCL 中将报表导出为PNG格式?
    vue window.print()打印多页页面指定内容 纯前端
  • 原文地址:https://blog.csdn.net/youcheng_ge/article/details/128147196
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号