国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

刪除數據

2024-07-21 02:12:59
字體:
來源:轉載
供稿:網友
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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 香格里拉县| 自贡市| 财经| 三河市| 正宁县| 固始县| 嘉峪关市| 尚志市| 江陵县| 远安县| 陆良县| 博客| 宜阳县| 贵港市| 沛县| 泰兴市| 乐清市| 新密市| 安新县| 华阴市| 石泉县| 宣汉县| 楚雄市| 临夏市| 芜湖市| 武川县| 桃源县| 肇州县| 乌拉特后旗| 兖州市| 鄢陵县| 台中县| 徐州市| 六枝特区| 兰考县| 星子县| 喜德县| 民丰县| 大冶市| 莒南县| 黄平县|