Mysql 视图笔记2

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 这学期开了数据库的课,对sql注入颇感兴趣。因此,对数据库语句也颇为喜爱。遇到了with check option 问题。这属于sql view里面的一个问题。
这学期开了数据库的课,对sql注入颇感兴趣。因此,对数据库语句也颇为喜爱。遇到了with check option 问题。这属于sql view里面的一个问题。在此略做小结。大牛勿喷!

先自定义一个table   名为 :Star

 

 

 

 

 

先定义视图找出所有张姓明星:

Java代码
  1. create view  IS_Star  
Java代码 
  1. as  
  2.   
  3. select  *from Star  
Java代码
  1. where  name  like '张%'   
  2.   
  3. with check option    

 获取张姓明星情况:

Java代码 
  1. select * from IS_Star  

 此时,with  check option 约束条件是对视图里面所有的name 首字符必须是以 ‘张’字打头。不管是修改前还是修改后都必须总从此规则。否则出错。

 

 比如

Java代码 
  1. update IS_Star  set name='刘家辉'  where name='张家辉  

 这是不可以的。

 而

Java代码   收藏代码
  1. update IS_test set name='张家界'  where name='张家辉'  

 是可以。前后姓没有变。满足where 后面的约束条件。

而如果在选取视图的时候没有使用 with check option 约束语句的话,那么。是可以改得。也就是张家辉既可以变成刘家辉也可以变成张家界

 另外如果选取年龄大于四十的明星

Java代码   收藏代码
  1. create  view IS_Star1   
Java代码 
  1. as  
Java代码
  1. select * from Star where age>40  
Java代码 
  1. with check option   
Java代码 
  1.   
Java代码 
  1. update  IS_Star1 set age=age-6 where name='张家辉'  

   这样会报错 服务器: 消息 550,级别 16,状态 1,行 1
试图进行的插入或更新已失败,原因是目标视图或者目标视图所跨越的某一视图指定了 WITH CHECK OPTION,而该操作的一个或多个结果行又不符合 CHECK OPTION 约束的条件。
语句已终止。

  而如果是

Java代码 
  1. update  IS_Star1 set age=age-4 where name='张家辉'  

  那么则正确插入。这里的意思是在视图里面的所有信息,只要在创建视图的时候加了with check option  那么。则不允许它的那个属性值变为不属于 where 后面条件的情况 

 如果不加with check option 那么则值可以任意变。

Java代码 
  1. /*create  view IS_Star2 
  2. as  select * from Star   
  3. where age >40  
  4.  
  5.  
  6. select * from IS_Star2 
  7.  
  8. update IS_Star set age =age-10 where name='张家辉'*/  

  小结:

1.对于update,有with check option,要保证update后,数据要被视图查询出来
2.对于delete,有无with check option都一样
4.对于insert,有with check option,要保证insert后,数据要被视图查询出来
5.对于没有where 子句的视图,使用with check option是多余的

 

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
2月前
|
Java 关系型数据库 MySQL
自动化测试项目实战笔记(一):JDK、Tomcat、MySQL、Jpress环境安装和搭建
这篇文章是关于自动化测试项目实战笔记,涵盖了JDK、Tomcat、MySQL、Jpress环境的安装和搭建过程,以及测试用例和常见问题总结。
52 1
自动化测试项目实战笔记(一):JDK、Tomcat、MySQL、Jpress环境安装和搭建
|
26天前
|
NoSQL 关系型数据库 MySQL
2024Mysql And Redis基础与进阶操作系列(8)作者——LJS[含MySQL 创建、修改、跟新、重命名、删除视图等具体详步骤;注意点及常见报错问题所对应的解决方法]
MySQL 创建、修改、跟新、重命名、删除视图等具体详步骤;举例说明注意点及常见报错问题所对应的解决方法
|
3月前
|
SQL 存储 关系型数据库
mysql-视图的定义和简单使用
这篇文章介绍了MySQL中视图的定义和简单使用方法,包括视图的创建规则和使用限制。通过一个实际的例子,展示了如何创建视图以及如何使用视图来简化复杂的SQL查询操作。
mysql-视图的定义和简单使用
|
3月前
|
存储 缓存 关系型数据库
MySQL 视图:数据库中的灵活利器
视图是数据库中的虚拟表,由一个或多个表的数据经筛选、聚合等操作生成。它不实际存储数据,而是动态从基础表中获取。视图可简化数据访问、增强安全性、提供数据独立性、实现可重用性并提高性能,是管理数据库数据的有效工具。
|
4月前
|
存储 关系型数据库 MySQL
|
5月前
|
SQL 安全 关系型数据库
MySQL创建视图(CREATE VIEW)13
【7月更文挑战第13天】创建视图是指在已经存在的 MySQL 数据库表上建立视图。视图可以建立在一张表中,也可以建立在多张表中。
81 1
|
4月前
|
SQL 存储 关系型数据库
运维笔记.MySQL.基于mysqldump数据备份与恢复
运维笔记.MySQL.基于mysqldump数据备份与恢复
53 0
|
4月前
|
SQL 关系型数据库 MySQL
【go笔记】使用sqlx操作MySQL
【go笔记】使用sqlx操作MySQL
|
6月前
|
缓存 DataWorks 关系型数据库
DataWorks产品使用合集之如何抽取MySQL视图数据
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
100 4
|
5月前
|
存储 数据可视化 关系型数据库
深入理解 MySQL 视图
深入理解 MySQL 视图
42 2
下一篇
无影云桌面