SQL 关联两个表的视图总结
视图就是一条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 关联两个表的视图总结的更多相关文章
- mysql关联两张表时的编码问题
Mysql关联两张表时,产生错误提示Illegal mix of collations 1.先用工具把数据库.两张表的编码方式改变 2.这步很重要,需要改变字段的编码方式. ALTER TABLE ` ...
- 【大数据】0001---使用SparkSQL关联两个表求和取前几行
场景: 有两个表,表可以是文本或Json数据,结构化后分别是Table1(A,B,C)和Table2(C.D.E),两个表通过C关联,要求求出D+E之和,并以(A.B.D+E)三列返回 解答: 思路: ...
- MS SQL Server中数据表、视图、函数/方法、存储过程是否存在判断及创建
前言 在操作数据库的时候经常会用到判断数据表.视图.函数/方法.存储过程是否存在,若存在,则需要删除后再重新创建.以下是MS SQL Server中的示例代码. 数据表(Table) 创建数据表的时候 ...
- sql这两个表和查询的组合yii通过使用数据库查询
sql两个表的组合查询 使用 join on 比如:两个表查询: select u.username, t.title from user u join task t on u.id = t.id; ...
- 读写SQL脚本进行创建表、视图和存储过程
一.按照先创建表.视图.存储过程的顺序创建: 二.导出脚本的时候注意:保存为ANSI文本,选项中:if not exists为true,防止覆盖:包含说明性标头为false;use database为 ...
- SQL 统计两个表的数据,按同一日期分组
思路:把两个表的数据按日期整合到临时表在按日期分组,求和. 例子: SELECT t.dateTime AS '日期',SUM(t.money) AS '表1利息',SUM(t.interest) A ...
- SQL SERVER2008 存储过程、表、视图、函数的权限
EXEC sp_addrolemember N'db_owner', N'db'----将db 设置为 db_owner 角色中的一员 EXEC sp_droprolemember N'db_owne ...
- sql sever 两数据表差异比较EXCEPT、INTERSECT
1.概念: EXCEPT主要是用来获取两个结果集的差:两个结果用EXCEPT链接,返回第一个结果集不在第二个结果集中的数据. INTERSECT主要是用来获取两个结果集的交集:两个结果用INTERSE ...
- sql server 删除所有表、视图、存储过程
如果由于外键约束删除table失败,则先删除所有约束: --/第1步**********删除所有表的外键约束*************************/ DECLARE c1 curs ...
随机推荐
- [转] 多种方法查看Oracle SQL执行计划
本文转自:http://falchion.iteye.com/blog/616234 一.在线查看执行计划表 如果PLAN_TABLE表不存在,执行$ORACLE_HOME/rdbms/admin/u ...
- Layer UI 模块化的用法(转)
此文章适合入门的同学查看,之前因为项目的原因,在网上找了一套Layer UI做的后台管理系统模板,完全不懂LayUI里面的JS用法,看了官方文档和其它资料后才明白怎么去实现模块化这个例子,但是还是感觉 ...
- golang学习之select用法
早期的select函数是用来监控一系列的文件句柄,一旦其中一个文件句柄发生IO操作,该select调用就会被返回.golang在语言级别直接支持select,用于处理异步IO问题. select用法同 ...
- 【转】Encrypt ConnectionString in Web.Config 【加密ASP.NET web.config数据库链接字串】
原文链接:https://www.codeproject.com/Tips/795135/Encrypt-ConnectionString-in-Web-Config web.config中一般会存放 ...
- mysql字符集的修改
修改数据库字符集: 代码如下: ALTER DATABASE db_name DEFAULT CHARACTER SET character_name [COLLATE ...]; 把表默认的字符 ...
- 从Java虚拟机角度分析类的实例化顺序
1.首先展示一下实例代码(Son.java & Father.java) public class Father { public static int a=10;//父类的静态变量 stat ...
- 学习笔记2_Day09_servlet的细节
Servlet细节 l 不要在Servlet中创建成员!创建局部变量即可! l 可以创建无状态成员! l 可以创建有状态的成员,但状态必须为只读的! 1 Servlet与线程安全 因为一个类型的 ...
- javascript获取元素样式值
使用css控制页面有4种方式,分别为行内样式(内联样式).内嵌式.链接式.导入式. 行内样式(内联样式)即写在html标签中的style属性中,如<div style="width:1 ...
- WPF中使用定时器 DispatcherTimer 做TCP连接中的心跳 HeartBeat
开发过程中经常遇到定时触发的需求,如:TCP/IP连接中,使用心跳包保持连接或检测连接是否已经中断. WPF中有多种定时器: 1.using System.Windows.Threading; 代码如 ...
- Python爬虫教程-24-数据提取-BeautifulSoup4(二)
Python爬虫教程-24-数据提取-BeautifulSoup4(二) 本篇介绍 bs 如何遍历一个文档对象 遍历文档对象 contents:tag 的子节点以列表的方式输出 children:子节 ...