当前位置: 首页 > news >正文

MySQL 视图View的SQL语法和更新(视图篇 二)

视图语法基本操作

创建

-- [ ]表示可选
create [or replace] view 视图名称[(列名列表)] as
select语句
[ with [cascaded | local ] check option ];

添加(虽然视图是虚拟表,但是向视图操作的数据实际上会影响到实际关联的表数据)

-- 视图添加一条数据,实际的表也会多一条数据

insert into 视图名称
values(数据列表);

修改

-- 方式一:和创建视图一样,create or replace :如果视图存在则替换
create or replace view 视图名称[(列名列表)] as
select语句
[ with [ cascaded | local ] check option ];

-- 方式二

alter view 视图名称[(列名列表)] as
select语句

[ with [ cascaded | local ] check option ]

删除

drop view [if exsts] 视图名称;

查询

-- 查询视图数据

select * from 视图名称;

-- 查看创建视图语句

show create view 视图名称;

视图检查选项介绍:with [ cascaded | local ]  check option

当创建视图时使用 "with check option" 可以限制插入或更新视图数据的条件

-- 创建视图(查询语句条件: where order_total >= 1000),添加检查选项

create view highvalue as

select order_id, customer_id, order_total from orders where order_total >= 1000

with check option;

-- 操作数据

insert into highvalue (order_id, customer_id, order_total)

values (1, 123, 800);

由于插入的订单总额不符合视图的条件(order_total >= 1000),操作将被拒绝,并抛出错误。

关于选项cascaded(默认值) 和 local介绍

假设有两个视图:viewA和viewB,viewA依赖viewB(并且查询语句都有条件)

--  create viewA  as select * from viewB where 条件;

viewA使用with  cascaded  check option

viewB使用with local  check option

1、当向viewA插入数据时,MySQL不仅会检查ViewA的视图条件,还是检查viewB的条件,二者都满足才能成功插入数据

2、当向viewB插入数据时,MySQL只会检查viewB的视图条件(不管viewA条件),如果满足就能成功插入数据

视图的更新问题

一般的视图都会随着关联表数据变化而更新

有一些情况下,视图是不会更新的,如果视图包含以下任何一项,则该视图不可更新:
1. 视图使用了聚合函数或窗口函数(sum()、 min()、 max()、 count()等)
2. distinct
3. group by
4. having
5. union 或者 union all
6.视图包含子查询
7.联接(join)
8.存储过程和触发器

上一篇:MySQL了解视图View (视图篇 一)

http://www.lryc.cn/news/180880.html

相关文章:

  • 38 翻转二叉树
  • 数据结构-快速排序-C语言实现
  • 玩客云Armbian_23.08.0-trunk_Onecloud_bookworm_edge_6.4.14.burn配置
  • Nginx查找耗时的接口
  • C++ Primer 一 变量和基本类型
  • 实体行业数字化转型怎么做?线上线下相结合的新零售体系怎么做?
  • JAVA面经整理(5)
  • 【牛客网-面试必刷TOP101】二分查找题目
  • 【QT】自定义组件ui类添加到主ui界面方法
  • FFmpeg 多图片合成视频带字幕和音乐+特效(淡入淡出,圆圈黑色淡出)
  • 上网Tips: Linux截取动态效果图工具_byzanz
  • 下载盗版网站视频并将.ts视频文件合并
  • ElasticSearch - 基于 拼音分词器 和 IK分词器 模拟实现“百度”搜索框自动补全功能
  • 【kubernetes】kubernetes中的调度
  • java读取csv文件或者java读取字符串,找出引号内容,采用正则表达式书写
  • 【寻找关键钥匙】python实现-附ChatGPT解析
  • 基于 QT 实现一个 Ikun 专属桌面宠物
  • 新闻报道的未来:自动化新闻生成与爬虫技术
  • C++ 并发编程实战 第八章 设计并发代码 二
  • list(链表)
  • 使用代理IP进行安全高效的竞争情报收集,为企业赢得竞争优势
  • 【数学知识】一些数学知识,以供学习
  • JKChangeCapture swift 版本的捕捉属性变化的工具
  • RISC-V 指令
  • [NOIP2011 提高组] 选择客栈
  • 桂院校园导航 静态项目 二次开发教程 1.2
  • private static final long serialVersionUID = 1L的作用是什么?
  • leetCode 122.买卖股票的最佳时机 II 贪心算法
  • 阿里云ACP知识点(三)
  • nmap 扫描内网IP, 系统, 端口