zoukankan      html  css  js  c++  java
  • 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,不可执行。

  • 相关阅读:
    C# 枚举常用工具方法
    AppBox_v3.0
    DDD:四色原型中Role的 “六” 种实现方式和PHP的Swoole扩展
    MySql主从配置实践及其优势浅谈
    ActionInvoker
    【Oracle】-【体系结构】-【DBWR】-DBWR进程相关理解
    Linux MySQL单实例源码编译安装5.6
    窗口嵌入到另一个窗口(VC和QT都有)
    Window下 Qt 编译MySQL驱动(居然用到了动态库格式转换工具,需要将C:/MySQL/lib目录下的libmySQL.dll文件复制到我们Qt Creator安装目录下的qt/bin目录中)good
    在Linux下使用iconv转换字符串编码
  • 原文地址:https://www.cnblogs.com/reaptomorrow-flydream/p/6156235.html
Copyright © 2011-2022 走看看