在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,這里只做演示用。