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
為了保證數據完整性,最好將上面的操作包含在一個事務中,如果兩個語句影響的行數都大於零,則提交,否則回滾。