SQL 关联两个表的视图总结

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

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

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

当update view时 更新view中表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,不可执行。

时间: 2024-12-14 18:45:47

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

SQL中两种表复制语句

Insert是T-sql中常用语句,Insert INTO table(field1,field2,...) values(value1,value2,...)这种形式的在应用程序开发中必不可少.但我们在开发.测试过程中,经常会遇到需要表复制的情况,如将 一个table1的数据的部分字段复制到table2中,或者将整个table1复制到table2中,这时候我们就要使用SELECT INTO 和 INSERT INTO SELECT 表复制语句了. 1.INSERT INTO SELECT语句

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

Mysql关联两张表时,产生错误提示Illegal mix of collations 1.先用工具把数据库.两张表的编码方式改变 2.这步很重要,需要改变字段的编码方式. ALTER TABLE `表名` CHANGE `dev_chancode` `字段` VARCHAR(32) CHARACTER SET gbk NOT NULL; 总结:在建表时一定注意统一的编码方式,后续搞来搞去超级麻烦. 原文地址:https://www.cnblogs.com/Anders888/p/1144183

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

EXEC sp_addrolemember N'db_owner', N'db'----将db 设置为 db_owner 角色中的一员 EXEC sp_droprolemember N'db_owner', N'db'----将db 从 db_owner 角色 去除 ALTER AUTHORIZATION ON SCHEMA::[db_datareader] TO dbs  ----给db 赋予 拥有 db_datareader 架构 ALTER AUTHORIZATION ON SCHEMA:

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

本文来自:http://www.cnblogs.com/yjss/articles/2065664.html 1.删除表 use 数据库名 declare mycur cursor local for select [name] from dbo.sysobjects where xtype='U' declare @name varchar(100) OPEN mycur FETCH NEXT from mycur into @name WHILE @@FETCH_STATUS = 0 BEG

[Error Code: 942, SQL State: 42000] ORA-00942: 表或视图不存在

排除SQL错误的问题之后 在表的前面加上用户名即可 用户名:SHJD SQL:select t.Work_Date from PVOAS_OCR_FILE_RESULT t select t.Work_Date from SHJD.PVOAS_OCR_FILE_RESULT t 原文地址:https://www.cnblogs.com/fengnan/p/10445133.html

laravel关联两个表内容取出的办法

use Illuminate\Support\Facades\DB; $articles = DB::table('articles')->join('category','articles.cateid','=','category.id')->select('articles.*','category.name')->get(); 重点,一定记得select语句写上

3.07 检测两个表中是否有相同的数据

问题:要知道两个表或视图中是否有相同的数据(基数和值).考虑这个视图: create view Vas     select * from emp where deptno !=10        union all    select * from emp where ename = 'WARD' 现要检测这个视图与表emp中的数据是否完全相同.员工"WARD"行重复,说明解决方案不仅要显示不同行,还要显示重复行. 解决方案:1.首先,查找出表emp中存在而试图v中没有的行2.然后合

3.7 检测两个表中是否有相同的数据

问题:要知道两个表或视图中是否有相同的数据(基数和值).考虑这个视图: create view Vas     select * from emp where deptno !=10        union all    select * from emp where ename = 'WARD' 现要检测这个视图与表emp中的数据是否完全相同.员工"WARD"行重复,说明解决方案不仅要显示不同行,还要显示重复行. 解决方案:1.首先,查找出表emp中存在而试图v中没有的行2.然后合

Oracle\MS SQL Server Update多表关联更新

原文:Oracle\MS SQL Server Update多表关联更新 一条Update更新语句是不能更新多张表的,除非使用触发器隐含更新.而表的更新操作中,在很多情况下需要在表达式中引用要更新的表以外的数据.我们先来讨论根据其他表数据更新你要更新的表   一.MS    SQL    Server   多表关联更新      sql server提供了update的from 子句,可以将要更新的表与其它的数据源连接起来.虽然只能对一个表进行更新,但是通过将要更新的表与其它的数据源连接起来,就