DROPUSER或GROUP語句有哪些
刪除一個或更多當前 用戶或 組,或從一個當前組中清除一個或更多 用戶。
語法 刪除一個或更多用戶或從一個組中清除一個或更多用戶。 DROP USER 用戶[, 用戶, 匽 [FROM組] 刪除一個或更多 組: DROP GROUP 組[, 組, 匽 DROP USER 或 GROUP 語句 有下列部分: 部分說明 用戶從 工作組 信息文件中清除的用戶的名稱。
組從 工作組 信息文件中清除的組的名稱。 說明 如果 FROM關鍵詞被用于DROP USER 語句,語句中列出的每一個 用戶會被從 FROM關鍵詞下面標明的組中清除。
但用戶本身不被刪除。 The DROP GROUP 語句 會刪除標明的 組。
作為 組的成員的用戶不會受影響,但也不再是已刪除的組的成員了。
為什么使用drop語句刪除不了數據
drop是用于刪除表,truncate和delete用于刪除內容。解釋如下:
1)drop table tb --tb表示數據表的名字,
A)內容:刪除內容和定義,釋放空間。簡單來說就是把整個表去掉.以后要新增數據是不可能的,除非新增一個表.
B)例如:一個班就是一個表,學生就是表中的數據,學生的職務就是定義.
drop table class,就是把整個班移除.學生和職務都消失.
2)truncate table tb
A):刪除內容、釋放空間但不刪除定義。與drop不同的是,他只是清空表數據而已,他比較溫柔.
B)例如: 同樣也是一個班,他只去除所有的學生.班還在,職務還在,如果有新增的學生可以進去,也可以分配上職務,刪除內容很容易理解,不刪除定義也很容易理解,就是保留表的數據結構。
3)delete table tb
A)刪除整個表的數據,但是過程是痛苦的(系統一行一行地刪,效率較truncate低)
B) delete table tb where 條件
解釋:刪除內容不刪除定義,不釋放空間。
SQL 語句里delete 和drop有什么區別
sql之truncate 、delete與drop區別 相同點:truncate 和不帶 where 子句的 delete,以及 drop 都會刪除表內的數據 不同點: 1. truncate 和 delete 只刪除數據不刪除表的結構(定義) drop 語句將刪除表的結構被依賴的約束(constrain)、觸發器(trigger)、索引(index);依賴于該表的存儲過程/函數將保留,但是變為 invalid 狀態。
2. delete 語句是數據庫操作語言(dml),這個操作會放到 rollback segement 中,事務提交之后才生效;如果有相應的 trigger,執行的時候將被觸發。truncate、drop 是數據庫定義語言(ddl),操作立即生效,原數據不放到 rollback segment 中,不能回滾,操作不觸發 trigger。
* 語句不影響表所占用的 extent,高水線(high watermark)保持原位置不動 顯然 drop 語句將表所占用的空間全部釋放。truncate 語句缺省情況下見空間釋放到 minextents個 extent,除非使用reuse storage;truncate 會將高水線復位(回到最開始)。
4.速度,一般來說: drop> truncate > delete 5.安全性:小心使用 drop 和 truncate,尤其沒有備份的時候.否則哭都來不及 使用上,想刪除部分數據行用 delete,注意帶上where子句. 回滾段要足夠大.想刪除表,當然用 drop 想保留表而將所有數據刪除,如果和事務無關,用truncate即可。如果和事務有關,或者想觸發trigger,還是用delete。
如果是整理表內部的碎片,可以用truncate跟上reuse stroage,再重新導入/插入數據。TRUNCATE TABLE 在功能上與不帶 WHERE 子句的 DELETE 語句相同:二者均刪除表中的全部行。
但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系統和事務日志資源少。 DELETE 語句每次刪除一行,并在事務日志中為所刪除的每行記錄一項。
TRUNCATE TABLE 通過釋放存儲表數據所用的數據頁來刪除數據,并且只在事務日志中記錄頁的釋放。 TRUNCATE TABLE 刪除表中的所有行,但表結構及其列、約束、索引等保持不變。
新行標識所用的計數值重置為該列的種子。如果想保留標識計數值,請改用 DELETE。
如果要刪除表定義及其數據,請使用 DROP TABLE 語句。 對于由 FOREIGN KEY 約束引用的表,不能使用 TRUNCATE TABLE,而應使用不帶 WHERE 子句的 DELETE 語句。
由于 TRUNCATE TABLE 不記錄在日志中,所以它不能激活觸發器。 TRUNCATE TABLE 不能用于參與了索引視圖的表。
相同之處: *te和不帶where子句的delete、以及drop都會刪除表內的數據。 *、truncate都是DDL語句(數據定義語言),執行后會自動提交。
不同之處: *和delete只是刪除表的數據(定義),drop語句將刪除表的結構、被依賴的約束(constrain)、觸發器 (trigger)、索引(index);依賴于該表的存儲過程/函數將保留,但是變為invalid狀態。 *語句是DML語言,這個操作會放在rollback segement中,事物提交后才生效;如果有相應的觸發器(trigger),執行的時候將被觸發。
truncate、drop是DDL語言,操作后即 生效,原數據不會放到rollback中,不能回滾,操作不會觸發trigger。 *語句不影響表所占用的extent、高水線(high watermark)保持原位置不動。
drop語句將表所占用的空間全部釋放。truncate語句缺省情況下將空間釋放到minextents的 extent,除非使用reuse storage。
truncate會將高水線復位(回到最初)。 4.效率方面:drop > truncate > delete 5.安全性:小心使用drop與truncate,尤其是在 沒有備份的時候,想刪除部分數據可使用delete需要帶上where子句,回滾段要足夠大,想刪除表可以用drop,想保留表只是想刪除表的所有數據、 如果跟事物無關可以使用truncate,如果和事物有關、又或者想觸發 trigger,還是用delete,如果是整理表內部的碎片,可以用truncate跟上reuse stroage,再重新導入、插入數據。
*是DML語句,不會自動提交。drop/truncate都是DDL語句,執行后會自動提交。
drop一般用于刪除整體性數據 如表,模式,索引,視圖,完整性限制等 delete用于刪除局部性數據 如表中的某一元組 DROP把表結構都刪了 DELETE只是把數據清掉 當你不再需要該表時, 用 drop; 當你仍要保留該表,但要刪除所有記錄時, 用 truncate; 當你要刪除部分記錄時(always with a WHERE clause), 用 delete.。
oracle的存儲過程不能使用drop語句嗎
存儲過程里面, 一般只寫 DML 的語句。
也就是基本的 SELECT . INSERT, DELETE , UPDATE 這一類的語句。
如果你要在存儲過程里面, 執行 DDL 語句。
也就是 CREATE, ALTER, DROP 這一類的語句。
那么需要使用動態 SQL 來處理。
也就是
EXECUTE IMMEDIATE ( 'CREATE TABLE test( id int ) ' );
EXECUTE IMMEDIATE ( 'DROP TABLE test ' );
這樣的方式來處理。
對于 DDL 語句, 這類語句, 如果成功了, 就生效了, 不能回滾的。
也就是
當你 Drop Table 某個表的時候, 執行成功了, 表就被刪除了。
不需要你 Commit 的。
你也無法 Rollback , 然這個表不刪除了。