刪除數據 DELETE語句( )
刪除不需要的信息與壹開始時錄入這些信息同等重要 在LIBRARY數據庫的例子中 可能丟失或出售了壹本圖書 那麽這本圖書的信息也就無須再保存在數據庫中 SQL提供了DELETE語句用於處理刪除記錄的情形 要刪除壹個表中的所有記錄 可以使用下面的語句
DELETE FROM myLibrary;
在壹些RDBMS中 無須使用FROM關鍵字 只需要給出表名即可 但某些RDBMS則堅持要求使用FROM關鍵字 執行上面的DELETE語句之後 表中的記錄將被全部刪除 在數據庫中只剩下壹個空表 讀者可以從 wrox 或者 agilitator 下載相同的INSERT腳本 重新填充表中的記錄
刪除的記錄還可以恢復嗎?這要視情況而定 為了取消對RDBMS中數據執行的操作 必須在壹個事務上下文中執行所有操作 最後 要麽提交所有的更改(使之永久化) 要麽回滾這些操作(將數據恢復為初始狀態) 第 章將討論關於事務支持的問題
如果將DELETE語句與之前介紹過的WHERE子句結合 就可以使刪除操作具有更多的選擇性 要刪除特定的記錄集合 只需要在WHERE子句中定義刪除記錄的標準 下面的查詢將不加區分地刪除滿足WHERE子句中刪除條件的所有記錄
DELETE FROM myLibrary
WHERE publisher = Wiley ;
執行上面的DELETE語句之後 將刪除表中所有由Wiley出版社出版的圖書 但這也許並不是我們需要的操作 如何才能從表中成百上千的記錄中刪除壹條特定的記錄呢?這就需要指定壹組匹配條件 使得滿足所有條件的記錄在表中是唯壹的 例如下面的例子
DELETE FROM myLibrary
WHERE publisher = Wiley AND pages = ;
這樣的篩選條件壹定是唯壹的嗎?實際上 盡管可能性不大 但對於壹個較大的數據庫來說 存在壹條以上的記錄同時滿足以上兩個條件也並非不可能 更好的辦法是使用ISBN號 因為它是唯壹的
DELETE FROM myLibrary
WHERE i *** n= ;
如果記錄中不存在壹個可作為唯壹標識的標誌 又該如何處理呢?有其他幾種辦法可以確保壹條記錄在表中的唯壹性(請參見第 章和第 章) 但這裏先介紹壹個特殊列的概念 與其他列相比 特殊列的作用是唯壹地標識表中的壹條記錄 也稱為主鍵 假如在將記錄輸入到表中時已經對這些記錄進行了編號 那麽這些編號就是引用特定記錄的壹個簡便的辦法 假如特殊列不允許出現重復的編號 那麽在刪除單條記錄時就不存在歧義 遺憾的是 定義這樣的列需要修改表的結構
試壹試刪除表中的記錄
下面將刪除Microsoft SQL Server 創建的表中的某些記錄 請先重復本章第壹個 試壹試 練習中步驟( )到步驟( )的操作 以便為輸入並執行SQL命令做好準備工作
( ) 下面的查詢將刪除MYLIBRARY表中的所有記錄
USE library;
DELETE myLibrary
( row(s) affected)
( ) 單擊位於上方工具欄中的Execute按鈕 如之前的圖 所示
( ) 重新插入下面的記錄
USE library;
INSERT INTO myLibrary (title author book_language publisher pages author
publish_date i *** n)VALUES ( SQL Bible Alex Kriegel English Wiley
Boris M Trukhnov April )
INSERT INTO myLibrary(title author book_language publisher pages publish_date
i *** n) VALUES ( Microsoft SQL Server Weekend Crash Course Alex Kriegel
English Wiley October )
INSERT INTO myLibrary(title author book_language publisher pages publish_date
i *** n) VALUES ( Mindswap Robert Sheckley English Orb Books May
)
INSERT INTO myLibrary(title author book_language publisher pages publish_date
i *** n) VALUES ( Jonathan Livingston Seagull Richard Bach English MacMillan
)
INSERT INTO myLibrary(title author book_language publisher pages publish_date
i *** n) VALUES ( A Short History of Nearly Everything Bill Bryson
English Broadway October )
? 返回目錄 SQL實戰新手入門
? 編輯推薦
? Oracle索引技術
? 高性能MySQL
lishixinzhi/Article/program/SQL/201311/16480