视图就是一条select查询语句,是一张虚拟表。

table a  , table b  以表a基表(a LEFT  JOIN b)

1.1 当update view时 更新view中表b字段并且表b中有这条记录,可执行,并且b表随之改变。

当update view时 更新view中表a字段表a中有这条记录,可执行,并且a表随之改变。

当update view时 更新view中表a和表b,不可执行。

总结:更新view时 只能更新单一表字段并且表中有这条记录,对应表随之改变。

1.2 当update 表a时 更新表a中view对应的字段时,可执行,并且view随之改变。

当update 表b时 更新表b中view对应的字段时,可执行,并且view随之改变。

总结:更新相关联的表时,view中对应的字段随之改变。

2.1 当delete view时,不可执行。

总结:删除view中某个字段时,会改变两个表的字段,所以不可执行。

2.2 当delete 表a时,可执行,view中的记录不会删掉,只是与表a相对应的字段为空值。

  当delete 表b时,可执行,view中的记录不会删掉,只是与表b相对应的字段为空值。

总结:删除相关联表时,view中相对应的字段为空值。

3.1当insert view时,插入view中表a相对应的字段,可执行,并且a表随之插入。

 当insert view时,插入view中表b相对应的字段,可执行,并且b表随之插入。

当insert view时,插入view中表a和表b相对应的字段,不可执行。

总结:插入view时,只能插入单一表相对应的字段,对应表也随之插入

3.2 当insert 表a时,可执行,如果满足视图on条件时,view随之插入相应的新纪录,否则,view不会随之插入相应的新纪录。

  当insert 表b时,可执行,如果满足视图on条件时,view随之插入相应的新纪录,否则,view不会随之插入相应的新纪录。

总结:插入相关联表时,只要满足创建view时的on条件,view随之插入新纪录。

根据以上实验结果,表的update,insert,delete都可以执行,只要满足创建view时的on条件,view也会随之update,insert,delete。

关联一个表的view,view的update,insert,delete都可以执行,表也会随之update,insert,delete。

关联多表的view,view的update,insert, 只有update,insert其中一个表的字段时可执行,这个表也随之update,insert;view的delete,不可执行。

SQL 关联两个表的视图总结的更多相关文章

  1. mysql关联两张表时的编码问题

    Mysql关联两张表时,产生错误提示Illegal mix of collations 1.先用工具把数据库.两张表的编码方式改变 2.这步很重要,需要改变字段的编码方式. ALTER TABLE ` ...

  2. 【大数据】0001---使用SparkSQL关联两个表求和取前几行

    场景: 有两个表,表可以是文本或Json数据,结构化后分别是Table1(A,B,C)和Table2(C.D.E),两个表通过C关联,要求求出D+E之和,并以(A.B.D+E)三列返回 解答: 思路: ...

  3. MS SQL Server中数据表、视图、函数/方法、存储过程是否存在判断及创建

    前言 在操作数据库的时候经常会用到判断数据表.视图.函数/方法.存储过程是否存在,若存在,则需要删除后再重新创建.以下是MS SQL Server中的示例代码. 数据表(Table) 创建数据表的时候 ...

  4. sql这两个表和查询的组合yii通过使用数据库查询

    sql两个表的组合查询  使用 join on 比如:两个表查询: select u.username, t.title from user u join task t on u.id = t.id; ...

  5. 读写SQL脚本进行创建表、视图和存储过程

    一.按照先创建表.视图.存储过程的顺序创建: 二.导出脚本的时候注意:保存为ANSI文本,选项中:if not exists为true,防止覆盖:包含说明性标头为false;use database为 ...

  6. SQL 统计两个表的数据,按同一日期分组

    思路:把两个表的数据按日期整合到临时表在按日期分组,求和. 例子: SELECT t.dateTime AS '日期',SUM(t.money) AS '表1利息',SUM(t.interest) A ...

  7. SQL SERVER2008 存储过程、表、视图、函数的权限

    EXEC sp_addrolemember N'db_owner', N'db'----将db 设置为 db_owner 角色中的一员 EXEC sp_droprolemember N'db_owne ...

  8. sql sever 两数据表差异比较EXCEPT、INTERSECT

    1.概念: EXCEPT主要是用来获取两个结果集的差:两个结果用EXCEPT链接,返回第一个结果集不在第二个结果集中的数据. INTERSECT主要是用来获取两个结果集的交集:两个结果用INTERSE ...

  9. sql server 删除所有表、视图、存储过程

    如果由于外键约束删除table失败,则先删除所有约束:   --/第1步**********删除所有表的外键约束*************************/   DECLARE c1 curs ...

随机推荐

  1. MySql数据库与JDBC编程二

    DML语法语句:主要操作数据表中的数据,完成插入新数据,修改已有数据,删除不要的数据的任务 1,insert into 语句 用于向指定表插入数据,一次只能插入一条记录:insert into tab ...

  2. MySQL 5.7 解压版 安装教程(图文详细)[Windows]

    最近在学习中用到了MySQL数据库,在安装过程中遇到了不少问题,在翻了大半天百度后,问题基本都解决了,所以写一篇MySQL 5.7 解压版的图文详细安装教程. 至于为什么我会选择解压版而不是安装版,一 ...

  3. [模拟回调] demo1模拟用字符串调用js函数 demo2模拟springmvc controller回调页面js函数

    demo1. 模拟用字符串调用js 函数 function dataQuery() { var strFun = "testCallBack"; var strParam = &q ...

  4. 中南oj 1216: 异或最大值 数据结构

    1216: 异或最大值 Time Limit: 2 Sec  Memory Limit: 128 MB Submit: 98  Solved: 29 [Submit][Status][Web Boar ...

  5. hdu 3466 Proud Merchants 01背包变形

    Proud Merchants Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Others) ...

  6. TCP基础知识(一)简介与数据包

    TCP详解(1):简介与数据包 TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的.可靠的.基于字节流的传输层通信协议 应用层向TCP层发送用于网间传输 ...

  7. 如何正确实现 IDisposable 接口

    MSDN建议按照下面的模式实现IDisposable接口: public class Foo: IDisposable { public void Dispose() { Dispose(true); ...

  8. nodejs繁琐地自建路由

    一.繁琐的自建路由 app.js var server = require('./server'); server.startServer(); server.js var http = requir ...

  9. Python-常用模块2

    今天我们继续来看模块的那些事儿 一.os模块 所有和操作系统相关内容都在os模块 os.makedirs('dirname1/dirname2') 可生成多层递归目录 os.removedirs('d ...

  10. arcgis-Pro-1.3

    sdk在线地址 http://pro.arcgis.com/en/pro-app/sdk/api-reference/#topic14079.html 看了下,整体开发架构全变了. 觉得不如以前com ...