存儲過程批量刪除數據
❶ 怎麼使用sql語句批量刪除多個表的相同欄位
不知道您用的是什麼資料庫了。
不過做法肯定是一樣,用兩個游標,第一個游標從數據字典中檢索出所有的表,第二個游標從每個表中檢索所有的欄位,然後遇到有要和你刪除名稱相同的欄位的時候,執行alter
table
tablename
drop
column
columnname的操作。
不過這個執行不能直接這么執行,而是設置一個字元串的變數,例如SQLSERVER,需要@delsql
=
'alter
table
'
+
@tablename
+
'
drop
column
'
+
@columnname
exec(@delsql)
而oracle也一樣delsql
=
'alter
table
'
+
tablename
+
'
drop
column
'
+
columnname;
execute
immediate
delsql;
要使用這樣的寫法。
不可能使用一個SQL直接刪除所有的。
❷ sql能否批量刪除多個行
1、首先我們打開SQL Server 2012資源管理器,在已創建好的資料庫表t_call_info,查詢和比較表記錄。
❸ 用SQL語句怎麼刪除表中的所有數據
從一個表中刪除數據,使用DELETE語句仔配。從表中刪除所有行
DELETE FROMtable_name;
或DELETE * FROMtable_name;
或DELETE FROM Customers
WHERE cust_id = '10000006';
DELETE不需要列名和通配符,它是刪除整行而不是刪除列,要刪除指定的列,請使用update語句;並且DELETE語句從表中刪除行,甚至是刪除表中所有行,而不是刪除表本身。
如果想刪除表中的所有行,可以使用TRUNCATE TABLE語句,完成相同的工作,而速度更快。
(3)存儲過程批量刪除數據擴展閱讀
drop直接刪掉表。
truncate刪除的是表中的數據,再插入數據時自增長的數據id又重新從1開始。
delete刪除表中數據,可以在後面添加where字句
(1)DELETE語句執行刪除操作的過程是每次從表中刪除一行,並且同時將該行的刪除操岩基作作為事務記錄在日誌中保存以便進行進行回滾操作。TRUNCATE TABLE 則一次性地從表中刪除所有的數據並不把單獨的刪除操作記錄記入日誌保存,刪除行是不能恢復的。並且在刪除的過程中不會激活與表有關的刪除觸發器。執行速度快。
(2) 表和索引所佔空間。當表被TRUNCATE 後,這個表和索引所佔用的空間會恢復到初始大小,而DELETE操作不會減少表或索引所佔念棗指用的空間。drop語句將表所佔用的空間全釋放掉。
(3) 一般而言,drop > truncate > delete
(4) 應用范圍。TRUNCATE 只能對TABLE;DELETE可以是table和view
(5) TRUNCATE 和DELETE只刪除數據,而DROP則刪除整個表(結構和數據)。
(6) truncate與不帶where的delete :只刪除數據,而不刪除表的結構(定義)drop語句將刪除表的結構被依賴的約束(constrain),觸發器(trigger)索引(index);依賴於該表的存儲過程/函數將被保留,但其狀態會變為:invalid。
❹ 批量刪除(修改標記) update ERPInfo set IfDel=0 where ID in ("+ID+") 在sql2005中存儲過程怎麼寫。
兩種辦法處理.
1. 使用動態SQL
也就是把你要執行的 SQL 語句, 存儲到一個 varchar 變數裡面。
然後你存儲過程裡面,執行的時候, 動態的拼接一個 SQL 語句,然後執行。
SQL Server 動態SQL 的例子:
http://hi..com/wangqing999/blog/item/6f6da5fee476db869f51465d.html
2.使用 CHARINDEX 替代 IN 的功能
例子:
http://hi..com/wangqing999/blog/item/1b8698fe14d68d8258ee9014.html