视图就是一条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. SqlServer function 函数

    SqlServer的数据库Tsql还是很强大,以此来纪念下表值函数的语法吧. -- ============================================= -- Author: & ...

  2. vuex 实现vue中多个组件之间数据同步以及数据共享。

    http://pan.baidu.com/s/1hrJfpli  demo下载地址 前言 在一些项目中有很多数据状态之间要实现数据共享状态共享,例如购物车的数据.用户的登录状态等等.vue父元素是可以 ...

  3. CentOS7部署.Net Core2.0站点(中)

    继续上篇的内容,本篇来学习下nginx的配置和守护进程supervisor的使用. 一.Nginx安装及配置 (1)安装nginx sudo yum install epel-release #添加源 ...

  4. mybatis学习之入门实例

    测试版本 mybatis:3.2.8 数据库:mysql 项目结构 jar包准备 mybatis-3.2.8.jar mysql-connector-java-5.1.39-bin.jar junit ...

  5. request对象域和转发

    1.request是一个域对象,具备以下方法 setAttribute(string name,Object O) getAttribute(String name) removeAttribute( ...

  6. jmeter简单使用示例

    1.下载后解压,运行bin目录下的jmeter.bat 2.add ThreadGroup 3.add request 4.add listener

  7. IDEA创建Maven项目和子模块

    一.新建Project a. 新建项目,点击Create New Project b. 选择使用maven来新建项目 选择新建Maven模块(对IDEA来说是项目) 如果Project SDK那里没有 ...

  8. LVS(Linux Virtual Server)

        LVS的英文全称是Linux Virtual Server,即Linux虚拟服务器.它是我国的章文嵩博士的一个开源项目.在linux内存2.6中,它已经成为内核的一部分,在此之前的内核版本则需 ...

  9. IIS6服务器的请求流程(图文&源码)

    1.IIS 7开发与管理完全参考手册  http://book.51cto.com/art/200908/146040.htm 2.Web服务IIS 6   https://technet.micro ...

  10. mysql启动服务出错--发生系统错误 1067。

    记以此安装mysql出错的问题,MySQL 服务无法启动.系统出错  发生系统错误 1067.进程意外终止. 今天在安装本地mysql是,使用net start mysql命令启动服务时,总是报106 ...