更新view是可以update到表的
视图不是表,视图里面的数据是通过sql语句去表中查询得到的。当表中的数据发送更改之后,视图里的数据也会发生相应的更改。所以我么一般有两种方式更新视图里面的数据:一是更新表中的数据,从而间接地更新视图中的数据;二是直接写sql已经更新视图。第一种是方式是一定可以的,第二中方法,能否可行取决于视图的具体结构。以下对第二种方法进行分析。
一、视图只包含一张表的字段
1、包含全部字段
视图定义如下:
DROP VIEW IF EXISTS t_student; CREATE VIEW t_student AS SELECT * FROM student WITH CHECK OPTION;
该视图是查询student表中的所有记录,进行更新的语句如下。
1 INSERT INTO `t_student` VALUES ('10004', '赵六', 22, 'wang123'); -- 插入时如果其他未设置的字段有默认值,可以插入,如果没有就报错 2 UPDATE t_student SET name='赵六2' where id='10004'; -- 更新可以 3 DELETE FROM t_student WHERE id = '10004'; -- 删除也可以
UPDATE,INSERT,DELETE,都是可以的。INSERT的时候,如果之增加部分字段的值,如果未增加的字段没有默认值,且不能为空,则报错。
2、带有id的部分字段
视图定义如下:
CREATE OR REPLACE VIEW t_student2 AS SELECT id, name, age FROM student;
该视图查询student表中的id,name,age字段的记录,进行更新的语句如下:
INSERT INTO t_student2 VALUES ( 4,'wangwu', 30); -- 插入时如果其他字段有默认值,可以插入,如果没有就报错 UPDATE t_student2 SET name='王五2' where id='4'; -- 更新可以 DELETE FROM t_student2 WHERE id = 4; -- 删除也可以
由于student表中password字段默认值为null,所以INSERT的时候password没有赋值,也是可以增加的,UPDATE和DELETE也是成功的。
3、不带有id的部分字段
视图定义如下:
CREATE OR REPLACE VIEW t_student3 AS SELECT name, age FROM student;
该视图查询student表中的name,age字段的记录,进行更新的语句如下:
1 INSERT INTO t_student3 VALUES ('wangwu', 30); -- id 没有默认值,不能插入 2 UPDATE t_student3 SET age=40 where name='wangwu'; -- 更新可以 3 DELETE FROM t_student3 WHERE name = 'wangwu'; -- 删除可以
INSERT的时候id没有默认值,所以失败。UPDATE和DELETE都成功。
转载于:https://www.cnblogs.com/kakaisgood/p/11338795.html
更新view是可以update到表的相关推荐
- 3.5 《数据库系统概论》之基本表更新(INSERT、UPDATE、ALTER、DELETE)与视图VIEW(定义、查询、更新)
文章目录 0.前言 1.思维导图 2.基本表更新---TABLE (1)插入数据---INSERT INTO ① 插入元组 ② 插入子查询结果 (2)修改数据---UPDATE SET ① 修改某一个 ...
- 笔记:3.5 《数据库系统概论》之基本表更新(INSERT、UPDATE、ALTER、DELETE)与视图VIEW(定义、查询、更新)
转载:3.5 <数据库系统概论>之基本表更新(INSERT.UPDATE.ALTER.DELETE)与视图VIEW(定义.查询.更新)_BitHachi-CSDN博客 0.前言 数据库是S ...
- mysql update 联合更新_Mysql update多表联合更新的方法小结
下面我建两个表,并执行一系列sql语句,仔细观察sql执行后表中数据的变化,很容易就能理解多表联合更新的用法 student表 class表 1. 执行 UPDATE student s , clas ...
- Oracle 共享锁和排它锁、 DML和DDL锁、 for update 锁表的问题
共享锁和排它锁 oracle有两种模式的锁:排他锁(exclusive lock,即X锁)和共享锁(share lock,即S锁). 共享锁:如果事务T对数据A加上共享锁后,则其他事务只能对A再加共享 ...
- efcore根据多个条件更新_EFCore.Sharding(EFCore开源分表框架)
简介 本框架旨在为EF Core提供Sharding(即读写分离分库分表)支持,不仅提供了一套强大的普通数据操作接口,并且降低了分表难度,支持按时间自动分表扩容,提供的操作接口简洁统一. 源码地址:E ...
- 更新SQL Server实例所有数据库表统计信息
引出问题 自从上次菜鸟为老鸟解决了<RDS SQL SERVER 解决中文乱码问题>问题,老鸟意犹未尽,决定再想个招来刁难刁难菜鸟:"我最近做T-SQL性能调优的时候,经常发现执 ...
- PHP5: mysqli 插入, 查询, 更新和删除 Insert Update Delete Using mysqli (CRUD)
原文: PHP5: mysqli 插入, 查询, 更新和删除 Insert Update Delete Using mysqli (CRUD) PHP 5 及以上版本建议使用以下方式连接 MySQL ...
- SQL update 多表连接方法
SQL Update多表联合更新的方法 (1) sqlite 多表更新方法 //---------------------------------- update t1 set col1=t2.col ...
- oralc UPDATE关联表的思路总结
我做了一下UPDATE关联表的思路总结,希望对不知道的同学有帮助! 我最近一直想研究一下UPDATE语句,尤其是多表关联 UPDATE的时候,很容易出问题,于是我就在PUB上问,在资料上查,现在我终于 ...
最新文章
- sir跟seir模型有啥区别_H3C B5mini拆机,看一下跟B5有啥区别
- HTTP1.0、HTTP1.1 、SPDY、HTTP2.0之演变过程和优化
- java泛型程序设计——通配符类型+通配符的超类型限定
- pca数学推导_PCA背后的统计和数学概念
- 《大数据》专题征文:医学大数据(截稿时间:2020年5月31日)
- 关于判断后该数据类型是否发生了转变
- Oracle 学习笔记二 Create table
- java设置关闭计算机,java实现电脑定时关机的方法
- 免费下载思维导图模板的方法
- PE格式文件修复过程
- 模拟题 czy的后宫
- 【统计学笔记】各种假设检验的假设的建立和各统计量公式总结
- 如何做一个讨厌的女人
- 给刚入市朋友的几点建议
- ping一个地址回显无法访问目的主机,然后显示请求超时time out问题分析
- 一本专门学习PyQt5 GUI 的编程书
- CSS 重要属性与定位
- C. Chocolate Bunny(思维+规律)
- 360与腾讯的连横合纵
- 有一种程序员的浪漫叫做,有程序为你宕过机
热门文章
- 树莓派3 64linux,树莓派3 model b安装64位debian+qt5.9
- php文件下载教学,php下载文件的代码示例
- html流程图可新增删除,CSS / HTML流程图
- java中strictfp关键字,java strictfp关键字用法大全详解
- 【机器学习入门到精通系列】插值与拟合
- python【蓝桥杯vip练习题库】ALGO-118连续正整数的和(枚举优化)
- Java的基础方法Java的对象_java基础之 创建对象的几种方式
- h5 数字变化_前端/h5 D3.js实现根据数据动态更新图形/类似进度实时变化效果
- python程序设计课程设计二级减速器_机械工程专业的本科生应该自学哪些知识?...
- python project_GitHub - DeqianBai/Python-Project: A series of python projects