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
为了保证数据完整性,最好将上面的操作包含在一个事务中,如果两个语句影响的行数都大于零,则提交,否则回滚。