日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MS SQL入门基础:删除数据

發布時間:2025/7/25 数据库 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MS SQL入门基础:删除数据 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  11.2.1 DELETE 語法

  DELETE 語句用來從表中刪除數據,其語法為:

  

  

  

  

  各參數說明如下:

FROM

  此參數為可選選項,用于連接DELETE 關鍵字和要刪除數據的對象名稱。 table_name

  指定要刪除數據的表。 WITH ( [...n])

  指定一個或多個目標表允許的表提示。 view_name

  指定用于刪除數據的視圖。 rowset_function_limited

  行集合函數限制,即使用OPENQUERY() 或OPENROWSET() 函數。 FROM

  指定一個額外的FROM 子句。這是DELETE 命令在Transact-SQL 語言中的擴展,它允許同時刪除多個表中的數據。其所含的參數包括join_table、 join_type 等,與第10 章“數據查詢”中FROM 子句中所講的一致。 WHERE

  指定限制數據刪除的條件。如果不指定WHERE 子句,就會刪除表中的所有數據。在 WHERE 子句中指定兩種形式的刪除操作。一種是搜索刪,除即使用搜索條件來限定要刪除的數據行:另一種是定位刪除,即使用CURRENT OF 子句來指定一個游標,刪除操作會在游標的當前位置產生。定位刪除比搜索刪除更精確。 GLOBAL

  說明要使用的游標是全局游標。如果不使用此選項,而又存在一個全局游標和一個局部游標同名的情況時,系統認為所選擇的游標是局部游標。 cursor_name

  指定打開的游標名稱。此游標必須是允許更新的。 cursor_variable_name

  指定游標變量的名稱。此游標變量必須是允許更新的。 OPTION ( [,...n] )

  請參見第10 章“數據查詢”中OPTION 子句中所講述的參數。 table_hint

  表提示用于指定一個表的掃描計劃,即將要用于查詢優化器的一個或多個索引,或一個用于檢索數據的鎖定方法。此選項一般來說不必使用,查詢優化器會自動選擇一個最優的執行方案。各表提示之間應使用逗號隔開。 INDEX(index_val [,...n])

  指定索引提示,即當執行命令時由SQL Server 使用的索引的名稱或ID 號。每個表只能指定一個索引提示。在表提示中最多可以指定250 非簇索引。 FASTFIRSTROW

  等價于OPTION (FAST 1) ,即對第一行返回數據采用查詢優化。 HOLDLOCK

  一般情況下,當執行SELECT 命令時,SQL Server 會在選取數據的過程中對該數據所屬的數據頁設定一個共享鎖(Shared Lock, 關于鎖的介紹請參見本章后部分)。當SQL Server 讀到下一個數據頁的數據時,上一個數據頁的共享鎖就會被解除。但如果使用了 HOLDLOCK 選項,則在整個SELECT 命令執行的過程中設定的共享鎖會一直存在。此選項不能在帶FOR BROWSE 子句的SELECT 語句中使用。此選項等價于SERIALIZABLE 選項。 NOLOCK

  一般情況下,當執行SELECT 命令時,SQL Server 會在選取數據的過程中對該數據所屬的數據頁設定一個共享鎖(Shared Lock, 關于鎖的介紹請參見本章后部分)。但如果使用了NOLOCK 選項,則SQL Server 不會指定共享鎖,而且不管其它用戶是否正在更改所讀取的數據,SELECT 命令仍然可以讀取數據。因此,使用此選項可能會讀取到其它用戶尚未提交的數據。此選項等價于READUNCOMMITTED 選項。 PAGLOCK

  指定在SELECT 命令執行時使用對數據頁做共享鎖。這是SQL Server 的內定方式。 READCOMMITTED

  指定數據掃描執行時使用與運行在READ COMMITTED 孤立級上的事務相同的鎖語義。即SELECT 命令不會返回尚未提交的數據。 READPAST

  跳過目前被鎖定的行。此選項只用于在事務運行在READ COMMITTED 孤立級上的情況下。 READUNCOMMITTED

  此選項等價于NOLOCK 選項。 REPEATABLEREAD

  指定數據掃描執行時使用與運行在REPEATABLE READ 孤立級上的事務相同的鎖語義。即用SELECT 命令讀取的數據在整個命令執行過程中不會被更改。此選項會影響系統的效能,非必要情況最好不用此選項。 ROWLOCK

  指定使用共享的行數據鎖,即使用行級別鎖定。 SERIALIZABLE

  此選項等價于HOLDLOCK 選項。 TABLOCK

  指定用SELECT 命令讀取數據時對所選取的表的全部數據做鎖定,直到整個命令執行完畢。如果指定了HOLDLOCK 選項,則共享的表鎖定會維持到事務結束。 TABLOCKX

  指定用SELECT 命令讀取數據時對所選取的表的全部數據做鎖定,直到整個命令或事務執行完畢。 UPDLOCK

  指定在SELECT 命令執行時使用更新鎖(Update Lock),而不使用共享鎖,并且此更新鎖將維持到命令執行結束為止。如果省略WHERE子句,則表示刪除表中的全部數據,但表的定義仍在數據庫中,也就是說,DELETE子句刪除的是表中的數據,而不是關于表的定義。 NOLOCK、READUNCOMMITIED或READPAST表提示不能用于作為插入、刪除或更新操作對象的表。

  11.2.2 用DELETE 刪除數據

  (1) 刪除一條記錄

  例11-5 刪除編號為‘10031011 ’的員工記錄

  use pangu

  delete from employee

  where emp_id = ’10031011’

  (2) 刪除多條記錄

  例11-6 刪除所有的部門信息記錄

  use pangu

  delete from department_info /* 或使用 delete department_info */

  這個例子刪除了department_info 表中的所有數據使它成為空表

  (3) 帶子查詢的刪除語句

  子查詢同樣可以嵌套在DELETE 語句中,用以構造執行刪除操作的條件。

  例11-7: 刪除后勤部所有員工的記錄。

  use pangu

  delete from employee

  where dept_id =

  (select dept_id

  from department

  where d_name = ’后勤部’)

  例11-8 刪除訂貨表前100 項記錄中所有產品編號為1003002 的產品

  use pangu

  delete orders

  from (select top 100 * from orders) as orders_ top100

  where orders.p_id = orders_ top100.p_id

  (4) 刪除當前游標行數據

  例11-9: 刪除游標dinfo_cursor 所指定的數據行。

  delete from department_info

  where current of dinfo_cursor

11.2.3 TRUNCATE TABLE 命 令

  如果要刪除表中的所有數據,那么使用TRUNCATE TABLE 命令比用DELETE 命令快得多。因為DELETE 命令除了刪除數據外,還會對所刪除的數據在事務處理日志中作記錄,以防止刪除失敗時可以使用事務處理日志來恢復數據;而TRUNCATE TABLE 則只做刪除與表有關的所有數據頁的操作。TRUNCATE TABLE 命令功能上相當于使用不帶WHERE 子句的DELETE 命令。但是TRUNCATE TABLE 命令不能用于被別的表的外關鍵字依賴的表。

  TRUNCATE TABLE 命令語法如下:

  TRUNCATE TABLE table_name

  注意:由于TRUNCATE TABLE命令不會對事務處理日志進行數據刪除記錄操作,因此不能激活觸發器。

  例11-10: 刪除所有的部門信息記錄。

  use pangu

  truncate table department_info

轉載于:https://www.cnblogs.com/Athrun/archive/2007/07/27/833189.html

總結

以上是生活随笔為你收集整理的MS SQL入门基础:删除数据的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。