當前位置:編程學習大全網 - 網絡軟體 - SQL實戰新手入門:刪除數據-DELETE語句(1)

SQL實戰新手入門:刪除數據-DELETE語句(1)

  刪除數據 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

  • 上一篇:烈血大將軍
  • 下一篇:哪個網站可以看中國好聲音第四季
  • copyright 2024編程學習大全網