SQL中的关联更新和关联删除
2017-01-30 10:28
369 查看
在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,这里只做演示用。
关联更新语法:
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,这里只做演示用。
相关文章推荐
- SQLite事务与自增深度分析
- SQL Server事务、隔离级别详解(二十九)
- SpringBoot缓存注解学习笔记之Redis
- Salesforce使用truncate清空数据库
- mysql 协议的processInfo命令包及解析
- 编译安装mysql5.6并初始化数据库和创建系统服务
- nodejsmysqlconnectiontutorial
- SQL 共享之 ROLL_INVALID_MISMATCH 含义
- Oracle Index Merge 与 and_equal 的变迁
- centos6.5 安装redis3.0.7
- nginx+Redis+tomcat实现session共享的过程
- SpringBoot缓存注解学习笔记之Redis
- ehcache memcache redis 三大缓存对比
- 谈一谈redis集群(二)
- mysql更改数据存储地址
- 习课的redis配置记录
- 后台(03)——MySQL(3)
- sqlmap --tamper 绕过WAF脚本分类整理
- mysql-ERROR 2002 (HY000)
- MySQL学习笔记-用户管理例子