当前位置:首页 » 编程语言 » sql两个表关联删除
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql两个表关联删除

发布时间: 2022-02-07 02:48:35

A. 如何用一句sql删除两个表中相关联的数据(没有外键)

为什么一定要一句话呢?一个SQL语句不能同时删除两张表,除非通过外键级联删除或者触发器,最正常的做法当然是写成2个SQL语句,然后用一个Trans来保证数据一致性,如果非要用一个SQL语句,可以有一个变通方法,写一侧存储过程,删除两张表,然后写的一句SQL是执行这个存储过程

B. SQL中怎么删除2张表中有关联的数据信息

可以使用两种方式
1:删除子表数据,再删除主表数据
2:如果主细表中建立了级联删除操作,直接删除主表数据即可

C. SQL 多个表关联查询!和删除!

两个表之间就没有什么关系么? 比如 表一的某字段 = (或者</>=/<=/<>) 表二的某字段

D. sql多表关联删除

删除多表关联数据的三种方法

1、级联删除

createtablea
(
idvarchar(20)primarykey,
passwordvarchar(20)notnull
)
createtableb
(
idintidentity(1,1)primarykey,
namevarchar(50)notnull,
userIdvarchar(20),
foreignkey(userId)referencesa(id)ondeletecascade
)



表B创建了外码userId 对应A的主码ID,声明了级联删除

测试数据:

insertavalues('11','aaa')
insertavalues('23','aaa')
insertbvalues('da','11')
insertbvalues('das','11')
insertbvalues('ww','23')


删除A表内id为‘11’的数据,发现B表内userId 为“11”也被数据库自动删除了

deleteawhereid='11'


2、采用存储过程

A表:AID Aname 主健:AID

B表:BID BelongAID Bname 主健:BID,外健:BelongAID

C表:CID BelongBID Cname 主健:CID,外健:BelongBID

D表:DID BelongCID Dname 主健:DID,外健:BelongCID

其中:

A表和B表通过A.AID和B.BelongAID 创建了外健关系

B表和C表通过B.BID和C.BelongBID 创建了外健关系

C表和D表通过C.CID和D.BelongCID 创建了外健关系


3、采用触发器

删除Class表中的一条记录的同时删除该记录Class_No字段值在Student表中对应的记录。

CreateTriggerClass_delete
onClass
fordelete
as
begin
deletefromStudent
whereClass_No=(selectClass_Nofromdeleted)
end

E. sql 中 两张关联表,如何做到只删除一张表,另一张表不受影响 例 表a(name,number)表b(name,age)

有外键没 如果有外键先把外键解除了再删 这样就另一张表就不会受影响

F. sql 两个表关联删除数据

删除主-从表的记录可以建立简单存储过程来实现:
CREATE PROCEDURE [存储过程]
(
@Id VARCHAR(50)
)
AS
DELETE [子表] WHERE [关联Id] = @Id
DELETE [主表] WHERE [Id] = @Id
GO

执行方法:EXECUTE [存储过程] @Id

G. 在SQL语句中,两个关联表A、B,怎样删除其中一个表B的某个条件(这个条件在A表)的内容

找出两个表的关联字段,再有where条件语句指出条件

H. sql 同时删两个表中的数据

一个SQL是不能完成多表删除的操作的,初非你在一个表定个触发器在删除的时候触发删除另外一个表,表面看起来只用一句话就可以删除两个表。

I. sql多表连接 查询 与删除

1:
SELECT
客户姓名
订单号
时间
FROM
订单表
JOIN 客户表
ON ( 订单表.UID = 客户表.UID)
JOIN
订单时间表
ON ( 订单表.DID = 订单时间表.DID)
WHERE
( SELECT COUNT(*) FROM 订单表 d WHERE d.UID = 客户表.UID ) > 3

2:
-- 先删除 订单时间表
DELETE
订单时间表
WHERE
DID IN (
SELECT DID FROM
订单表
JOIN 客户表
ON ( 订单表.UID = 客户表.UID)
WHERE
客户姓名 = '张三'
);

-- 后删除 订单表.
DELETE
订单表
WHERE
UID IN ( SELECT UID FROM 客户表 WHERE 客户姓名 = '张三');

-- 最后删除 客户表
DELETE
客户表
WHERE
客户姓名 = '张三';

J. sql server 删除多张表关联数据 怎么删除

具体方法:
作为外键暂且叫它主表,Delete from Main Where id=@id
则要先删除子表当中 Delete from Detail where MainId = @id
为了保证数据完整性,最好将上面的操作包含在一个事务中,如果两个语句影响的行数都大于零,则提交,否则回滚。