很多時候,我們都需要從關(guān)系數(shù)據(jù)庫中刪除掉陳舊過時的信息。所幸的是,結(jié)構(gòu)化查詢語言提供了一個DELETE命令,用于靈活地刪除儲存在一個表內(nèi)的部分或全部信息。
讓我們來看看該命令的語法:
DELETE FROM {table name | view name} [WHERE search_conditions] |
命令本身十分簡單:其中只有兩個變量,一個是需要刪除信息的表或視圖,另一個是搜索條件。
我們先來談?wù)剟h除的對象。依照ANSI SQL標(biāo)準(zhǔn),我們既可以選擇一個表格中刪除數(shù)據(jù)也可以選擇從一個視圖中刪除數(shù)據(jù)。不管怎樣,強烈建議讀者盡量避免對一個視圖使用DELETE命令(出于同樣的原因,也盡可能避免對視圖使用任何數(shù)據(jù)處理的命令)。某些版本的SQL可能不支持這個語法,因此,對視圖的修改可能會導(dǎo)致一些難以預(yù)料的錯誤。
search_conditions參數(shù)對于SQL的初學(xué)者來說也并不新奇――它和SELECT語句中用到的search_conditions參數(shù)格式相同。其中可以使用任何比較操作符來限制從表格中刪除的數(shù)據(jù)。注意,search_conditions事實上是一個可選項(因此用方括號括起),省略該項將會刪除整個表格的內(nèi)容。
現(xiàn)在讓我們來看一些實例。首先,我們要創(chuàng)建一個表格,并添加一些數(shù)據(jù)——為一所高中創(chuàng)建一個學(xué)生名錄。根據(jù)您的數(shù)據(jù)庫管理系統(tǒng),執(zhí)行以下的SQL代碼:
CREATE TABLE students ( first_name varchar(50), last_name varchar(50), id integer PRIMARY KEY ) INSERT INTO students VALUES ('小明', '張', 273) INSERT INTO students VALUES ('小馬', '任', 321) INSERT INTO students VALUES ('小軍', '史', 243) INSERT INTO students VALUES ('小安', '彭', 131) INSERT INTO students VALUES ('小超', '白', 190) INSERT INTO students VALUES ('小斌', '林', 421) |
林小斌同學(xué)由于學(xué)習(xí)成績非常優(yōu)秀被批準(zhǔn)提前畢業(yè)。因此,我們需要把他從數(shù)據(jù)庫中刪除。作為一個使用SQL的老手,我們知道當(dāng)我們想要選擇一個單獨的記錄時,一定要謹慎的運用搜索條件中的主關(guān)鍵詞(primary key),以防不小心刪除了相似的記錄。以下是我們使用的語法:
DELETE FROM students
WHERE id = 421
修改后表格的內(nèi)容如下:
first_namelast_nameid
小馬任321
小安彭131
小超白190
小軍史243
小明張273
現(xiàn)在讓我們來嘗試一些稍微復(fù)雜一點的操作――刪除學(xué)號介于240至290間的所有學(xué)生。以下是該操作的SQL腳本:
DELETE FROM students
WHERE id BETWEEN 240 AND 290
修改后的新表格如下:
first_name last_name id
小安彭131
小超白190
小馬任321
最后,我們很遺憾告訴大家,由于入學(xué)人數(shù)過少,學(xué)校不得不倒閉了。為了尊重學(xué)生的隱私,我們需要刪除表格中的所有數(shù)據(jù)。相關(guān)的SQL命令腳本如下:
DELETE FROM students
以上是對DELETE語句的一個簡單介紹,經(jīng)常上IT專家網(wǎng)查看關(guān)于數(shù)據(jù)庫方面的新文章,可以學(xué)習(xí)到更多關(guān)于SQL語句的知識。