在SQL中,经常用到关联查询,比如select a.* from A a inner join B b on a.PId=b.FId where 条件,SQL中也支持类似的关联更新和关联删除。

关联更新语法:

update a set a.字段=” from A a inner join B b on a.PId=b.FId where 条件

关联删除语法:

delete from a from A a inner join B b on a.PId=b.FId where 条件

注解:A,B为表名,a.PId为A表的主键,B.FId为B表的外键,关联A表

通过上面的语法,可以发现from 后面是一样的。

下面是我写的一个小例子。

建立两个表:用户表 User和博客表 Blog,如下图所示:

执行以下脚本插入测试数据:

insert into [User](UserName,[Password],Memo) values (‘张三’,’123456′,”)
insert into [User](UserName,[Password],Memo) values (‘李四’,’123456′,”)
insert into [User](UserName,[Password],Memo) values (‘王五’,’123456′,”)

insert into Blog(Title,UserId) values (‘标题1′,1)
insert into Blog(Title,UserId) values (‘标题2′,2)
insert into Blog(Title,UserId) values (‘标题3′,3)
insert into Blog(Title,UserId) values (‘标题4′,3)
insert into Blog(Title,UserId) values (‘标题5′,3)

执行更新操作:

将发表了博客标题为“标题1”的用户的备注设置为”发表了一篇名为(标题1)博客的用户”,SQL如下:

update u set u.Memo=’发表了一篇名为(标题1)博客的用户’ from [User] u
inner join Blog b on u.UserId=b.UserId where b.Title=’标题1′

执行删除操作:

删除UserId为3的用户发表的所有博客,SQL如下:

delete from b from Blog b inner join [User] u on u.UserId=b.UserId where u.UserId=3

上面的关联删除可以直接写成delete from Blog where UserId=3,这里只做演示用。

SQL中的关联更新和关联删除的更多相关文章

  1. 使用SQL中的update更新多个字段值

    使用SQL中的update更新多个字段值,set后面的条件要用逗号不能用and set后面的多个条件之间没有关联也不可以有关联,所以就不能用and了:where 条件后面 可以为and 如: upda ...

  2. SQL中使用UPDATE更新数据时一定要记得WHERE子句

    我们在使用 SQL 中的 UPDATE 更新数据时,一般都不会更新表中的左右数据,所以我们更新的数据的 SQL 语句中会带有 WHERE 子句,如果没有WHERE子句,就回更新表中所有的数据,在 my ...

  3. SQL Cookbook—插入、更新与删除

    涉及到的问题–1.从一个表向另外的表中复制行–2.复制表定义(包含表记录)–3.一次向多个表中插入记录–4.–5.当相应行存在时更新–6.用其他表中的值更新–7.删除违反参照完整性的记录 –1.从一个 ...

  4. winform代码:关联窗体数据更新,删除dataGridview中选中的一行或多行

    一.关联窗体数据更新 关联窗体数据修改时,如果一个为总体数据显示窗体A,另一个为详细修改窗体B,从A进入B,在B中对数据进行修改,然后返回A,这时A窗体的数据需要更新. 我采用最简单的方法,首先保证每 ...

  5. MySQL 多表关联更新及删除

    目录: <MySQL中的两种临时表> <MySQL 多表关联更新及删除> <mysql查询优化之三:查询优化器提示(hint)> 一.      多表关联更新 问题 ...

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

    原文:Oracle\MS SQL Server Update多表关联更新 一条Update更新语句是不能更新多张表的,除非使用触发器隐含更新.而表的更新操作中,在很多情况下需要在表达式中引用要更新的表 ...

  7. SQL使用之关联更新、批量插入

    使用场景 某个字段数据异常,利用另外一张表同步修改该表异常字段的数据; 关联更新 UPDATE tableName1 AS t1 LEFT JOIN tableName12 AS t2 ON t1.x ...

  8. Oracle SQL性能优化 - 根据大表关联更新小表

    需求: 小表数据量20w条左右,大表数据量在4kw条左右,需要根据大表筛选出150w条左右的数据并关联更新小表中5k左右的数据. 性能问题: 对筛选条件中涉及的字段加index后,如下常规的updat ...

  9. 数据库MySQL中关于“多表关联更新”的那些事

    在常见的sql中,我们经常在查询中进行多表关联查询,用的比较熟练.今天在开发中遇到一个实际业务场景是多表关联更新,一时不知所措.本着多学习的态度,没有直接写java代码去实现,终于把多表关联更新的sq ...

随机推荐

  1. winform 科学计数法转为小数

    先强制转换为decimal. 例如: double xyTolerance = 0.000000008983001; txtXYTolerance.Text = ((decimal)xyToleran ...

  2. 图->定义

     文字描述 顶点 指图中的数据元素 弧尾 若<v,w>属于两个顶点之间的关系的集合,表示从v到w的一条弧,则v为弧尾或初始点 弧头 若<v,w>属于两个顶点之间的关系的集合,表 ...

  3. 50 行代码教你爬取猫眼电影 TOP100 榜所有信息

    对于Python初学者来说,爬虫技能是应该是最好入门,也是最能够有让自己有成就感的,今天,恋习Python的手把手系列,手把手教你入门Python爬虫,爬取猫眼电影TOP100榜信息,将涉及到基础爬虫 ...

  4. Asp.net Mvc post表单提交多个实体模型

    上一遍说道用Tuple实现Asp.net Mvc action返回多个模型实体给view,此篇发过来,实现view表单提交多个实体模型到action. 1.view代码: @{ Layout = nu ...

  5. Java Web----------response&&request

    1.response 代表响应, 可以理解为一个空的箱子,我们在里面填入要发送到浏览器的内容. 服务器会把这些内容组装成http响应. 1.1 响应首行 协议/版本号 状态码 状态码描述 添加状态码 ...

  6. centos删除用户出错userdel: user xxx is currently used by process 23750

    今天ytkah管理centos用户准备删除某个用户时出错了,提示userdel: user xxx is currently used by process 23750,这是因为xxx用户还在登陆中, ...

  7. NYOJ 最大和

    #include<iostream> #include<algorithm> #include<string> using namespace std; ][]; ...

  8. pro*c的使用

    一.什么是Pro*c程序 在oracle数据库管理系统中,有三种访问数据库的方法:       1.用 SQL*Plus,直接输入sql命令以命令行交换的方式访问数据库       2.用一些应用开发 ...

  9. np.newaxis学习【转载】

    转自:https://blog.csdn.net/lanchunhui/article/details/49725065 1.相当于None >> type(np.newaxis) Non ...

  10. TVTK安装

    首先感觉到的一点就是在https://www.lfd.uci.edu/~gohlke/pythonlibs/#chaco这个比较受欢迎的下载Python库的网站上下载大于20mb的whl文件时就很可能 ...