视图不是表,视图里面的数据是通过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都成功。

最新文章

  1. gnuplot: 一种更为简洁的曲线,柱状图绘图软件
  2. HashMap合并相同key的value
  3. Nginx下Magento伪静态规则,适用于LNMP一键包
  4. apue第四章学习总结
  5. 【转】java正则表达式
  6. ZOJ 3633 Alice's present 倍增 区间查询最大值
  7. epub格式电子书剖析之三:NCX文件构成
  8. WebService开发应用
  9. css 改变scroll样式
  10. 关于HTML5中audio标签在手机中的autoplay
  11. JAVA类型修饰符(public,protected,private,friendly)
  12. Java数据结构和算法(六)——前缀、中缀、后缀表达式
  13. jq dom操作
  14. 255.Spring Boot+Spring Security:使用md5加密
  15. CC2640蓝牙芯片开发备记
  16. Django_tips
  17. Openwrt中用iftop查看网络流量情况
  18. CentOS下配置redis允许远程连接
  19. java jni调用
  20. windows下MySQL的安装(非安装包)

热门文章

  1. SQL数据库— <3>高级查询、常用函数 --摘录网络
  2. ionic3配合使用docker build代码时的显示仓库配置问题
  3. Ubuntu18.04安装Tensorflow1.14GPU
  4. PCA revisit
  5. nodejs npm 常用配置
  6. Vim默认开启语法标识功能
  7. MariaDB 删除表
  8. LOJ 2552 「CTSC2018」假面——DP
  9. SQL中循环的实现方式
  10. [NOIP模拟测试38]题解