<address id="xpjh9"><listing id="xpjh9"><meter id="xpjh9"></meter></listing></address>

<address id="xpjh9"><address id="xpjh9"><listing id="xpjh9"></listing></address></address>
<noframes id="xpjh9">
<noframes id="xpjh9">

<address id="xpjh9"><address id="xpjh9"><listing id="xpjh9"></listing></address></address>
    <form id="xpjh9"></form><address id="xpjh9"><listing id="xpjh9"><menuitem id="xpjh9"></menuitem></listing></address>

      <noframes id="xpjh9">
      VB.net 2010 視頻教程 VB.net 2010 視頻教程 VB.net 2010 視頻教程
      SQL Server 2008 視頻教程 c#入門經典教程 Visual Basic從門到精通視頻教程
      當前位置:
      首頁 > 數據庫 > T-SQL >
      • sql語句大全之使用TRUNCATE TABLE語句

      • 2015-01-25 00:48 來源:未知

      使用TRUNCATE TABLE語句

      TRUNCATE TABLE語句提供了一種刪除表中所有記錄的快速方法。因為TRUNCATE TABLE語句不記錄日志,只記錄整個數據頁的釋放操作,而DELETE語句對每一行修改都記錄日志,所以使用TRUNCATE TABLE語句進行刪除操作總是比沒有指定條件的DELETE語句效率高。TRUNCATE TABLE立即釋放了表中數據及索引所占用的全部空間,同時也釋放了分配給所有索引的空間。其語法格式如下:
      TRUNCATE TABLE [ [database.] owner.] table_name
      與DELETE語句相比,TRUNCATE TABLE具有以下優點:
      l   所用的事務日志空間較少  DELETE語句每次刪除一行,并在事務日志中為所刪除的每行記錄一個項。TRUNCATE TABLE通過釋放用于存儲表數據的數據頁來刪除數據,并且在事務日志中只記錄頁釋放。
      l   使用的鎖通常較少  當使用行鎖執行DELETE語句時,將會鎖定表中各行以便刪除。TRUNCATE TABLE始終鎖定表和頁,而不是鎖定各行。
      l   表中將毫無例外地不留下任何頁  執行DELETE語句后,表仍會包含空頁。例如,必須至少使用一個排他(LCK_M_X)表鎖,才能釋放堆中的空表。如果執行刪除操作時沒有使用表鎖,表(堆)中將包含許多空頁。對于索引,刪除操作會留下一些空頁,盡管如此,不過這些頁會通過后臺清除進程迅速釋放。
      那么可不可以用TRUNCATE TABLE代替不帶WHERE子句的DELETE語句呢?在以下幾種情況是不行的:
      l   在需要保留標識的情況下不能用TRUNCATE TABLE,因為TRUNCATE TABLE會重置標識。
      l   在需要使用觸發器的情況下不能使用TRUNCATE TABLE,因為它不會激發觸發器。
      l   對于由FOREIGN KEY約束引用的表(即主鍵所在的表,不是外鍵所在的表)不能使用TRUNCATE TABLE.
      l   對于參與了索引視圖的表不能使用TRUNCATE TABLE,注意指的是索引視圖,并非普通視圖。
      那么用戶需要具有什么權限才可以使用TRUNCATE TABLE呢?若要使用TRUNCATE TABLE語句,必須是表的所有者,具有DBA權限或表的ALTER權限。對于基表,TRUNCATE TABLE語句需要有表的排他訪問權限,因為操作是原子操作(要么刪除所有行,要么不刪除任何行)。這意味著所有以前打開的游標和引用要截斷的表的游標都必須關閉,并且必須發出COMMIT或ROLLBACK命令釋放對表的引用。對于臨時表,每個用戶都有自己的數據副本,不需要排他訪問。
      下面結合一個簡單的實例來說明如何使用TRUNCATE TABLE語句。比如需要刪除商品信息表中的所有數據,可以使用如下語句:
      TRUNCATE TABLE 商品信息
      由于TRUNCATE TABLE操作是不進行日志記錄的,所以建議在TRUNCATE TABLE語句之前使用BACKUP DATABASE語句來對數據庫做備份。

      相關教程
      江苏快3 怀化 | 咸宁 | 葫芦岛 | 甘孜 | 鄂尔多斯 | 湖北武汉 | 恩施 | 苍南 | 襄阳 | 明港 | 曹县 | 徐州 | 霍邱 | 陇南 | 醴陵 | 衢州 | 安庆 | 琼海 | 新乡 | 哈密 | 潍坊 | 宁波 | 寿光 | 海门 | 温岭 | 惠州 | 阿勒泰 | 湖南长沙 | 石嘴山 | 铁岭 | 乳山 | 珠海 | 山南 | 东方 | 吴忠 | 吴忠 | 濮阳 | 黄冈 | 焦作 | 东海 | 辽阳 | 兴化 | 鹤岗 | 吐鲁番 | 达州 | 芜湖 | 铜川 | 防城港 | 湖州 | 天水 | 龙口 | 灌南 | 六盘水 | 三亚 | 盘锦 | 辽宁沈阳 | 阿克苏 | 定安 | 厦门 | 莒县 | 吴忠 | 三明 | 屯昌 | 朔州 | 阿克苏 | 诸城 | 鹤岗 | 黑龙江哈尔滨 | 喀什 | 宁德 | 驻马店 | 项城 | 泉州 | 清徐 | 偃师 | 泸州 | 灌云 | 枣庄 | 湖北武汉 | 昭通 | 自贡 | 乌兰察布 | 芜湖 | 临海 | 伊犁 | 丹阳 | 改则 | 临汾 | 海西 | 桐城 | 娄底 | 图木舒克 | 平潭 | 双鸭山 | 北海 | 平顶山 | 新泰 | 滨州 | 宜春 | 本溪 | 临沧 | 宁夏银川 | 黔东南 | 毕节 | 沭阳 | 南充 | 广西南宁 | 广元 | 宿迁 | 喀什 | 广饶 | 荣成 | 莒县 |