12.2.1 DELETE語句基本語法使用DELETE語句從數(shù)據(jù)庫刪除數(shù)據(jù),基本語法如下。 DELETE FROM table_name WHERE search_condition 說明:該語句將從表中刪除符合條件的數(shù)據(jù)行,如果沒有WHERE語句,則刪除所有數(shù)據(jù)行。通過使用DELETE語句的WHERE子句,SQL可以刪除單行數(shù)據(jù)、多行數(shù)據(jù)以及所有行數(shù)據(jù)。使用DELETE語句時,應(yīng)注意以下幾點。
12.2.2 DELETE語句刪除單行數(shù)據(jù)DELETE語句可以刪除數(shù)據(jù)庫表中的單行數(shù)據(jù)、多行數(shù)據(jù)以及所有行數(shù)據(jù)。同時在WHERE子句中,也可以通過子查詢刪除數(shù)據(jù)。本節(jié)主要通過一個實例說明如何從表中刪除單行數(shù)據(jù)。 實例9 DELETE語句刪除單行數(shù)據(jù) 從New_Teacher2表中,刪除教工號為8的教師記錄。實例代碼: DELETE FROM New_Teacher2 WHERE TNO=8 查看表New_Teacher2的數(shù)據(jù)。 SELECT * FROM New_Teacher2 運行結(jié)果如圖12.10所示。
圖12.10 刪除New_Teacher2表中教工號為8的教師記錄 可見,教工號為8的教師記錄已經(jīng)被整行刪除。 12.2.3 DELETE語句刪除多行數(shù)據(jù)與前面介紹的數(shù)據(jù)更新操作一樣,可以在WHERE子句中設(shè)置各種搜索條件,也可以通過子查詢或者多表連接的方式選擇要刪除的行。 實例10 DELETE語句刪除多行數(shù)據(jù) 從New_Teacher2表中,刪除工資低于所有教師平均工資的男教師的記錄。 實例代碼: DELETE FROM New_Teacher2 WHERE TSEX=’男’ AND SAL < (SELECT avg(SAL) FROM New_Teacher2) 查看表New_Teacher2的數(shù)據(jù)。 SELECT * FROM New_Teacher2 運行結(jié)果如圖12.11所示。 可見,教工號為1和3的兩位男教師記錄已經(jīng)被刪除。
圖12.11 刪除New_Teacher2表中工資低于所有教師平均工資的男教師的記錄 12.2.4 DELETE語句刪除所有行如果DELETE語句中,不包含WHERE子句,則該表的所有行都將被刪除。 實例11 DELETE語句刪除所有行 刪除New_Teacher2表中的所有記錄,代碼如下: DELETE FROM New_Teacher2 查看表New_Teacher2的數(shù)據(jù)。 SELECT * FROM New_Teacher2 運行結(jié)果如圖12.12所示。
圖12.12 刪除New_Teacher2表中的所有記錄 可以發(fā)現(xiàn),New_Teacher2表中的所有記錄都被刪除了,但是New_Teacher2表本身(各個字段)還存在,并沒有被刪除。 12.2.5 TRUNCATE TABLE語句從12.2.4節(jié)可以看到,使用沒有WHERE子句的DELETE語句可以從表中刪除所有的行。在SQL Server中,還提供了TRUNCATE TABLE語句,供用戶刪除表中的所有數(shù)據(jù),同時又不刪除表結(jié)構(gòu)。TRUNCATE TABLE語句語法如下。 TRUNCATE TABLE table_name 雖然使用DELETE語句和TRUNCATE TABLE語句都能夠刪除表中的所有數(shù)據(jù),但是使用TRUNCATE TABLE語句比用DELETE語句快得多,表現(xiàn)為以下兩點。
實例12 TRUNCATE TABLE語句刪除表中的數(shù)據(jù) 刪除New_Teacher表中的所有數(shù)據(jù),代碼如下。 TRUNCATE TABLE New_Teacher 查看刪除數(shù)據(jù)后表New_Teacher中的數(shù)據(jù)。 SELECT * FROM New_Teacher 運行結(jié)果如圖12.13所示。
圖12.13 刪除New_Teacher表中的所有數(shù)據(jù) 可見,表New_Teacher中的數(shù)據(jù)均被刪除,但表結(jié)構(gòu)并沒有被刪除,這與DROP TABLE語句是不同的。 |
|
|