更新數據UPDATE語句()
電子數據存儲的一個主要優勢就是它的靈活性沒有任何數據刻在石頭上寫在羊皮卷甚至紙上根據需要可以創建刪除或修改電子化存儲的數據到目前為止已經學習了如何插入數據或者選取數據以及如何刪除數據UPDATE語句可以修改列中已有的值從而對數據進行修改如果突然發現某本圖書錄入的頁數是錯誤的可以運行下面的語句進行更正
UPDATE myLibrary SET pages = ;
由於該列的數據類型是數值類型(INTEGER)因此無須將數值用單引號括起來(該規則適用於所有RDBMS中的全部數值類型)
上面這個UPDATE語句的問題在於數值將會更新表中每一條記錄的PAGES列顯然這並不是我們想要的結果與DELETE語句一樣在修改數據時還可以對要修改的數據進行篩選只更新那些需要更新的記錄而保持其他記錄不變篩選記錄是WHERE子句的功能要篩選記錄同樣需要某個可以唯一標識一條記錄的標志
UPDATE myLibrary SET pages =
WHERE isbn=;
如果要更新記錄中的多個列只需要在UPDATE語句中添加這些要更新的列並以逗號進行分隔
UPDATE myLibrary SET
pages =
title = SQL Bible nd Edition
WHERE isbn=;
UPDATE操作以這樣一種方式來實現允許使用已有的數據作為篩選標准例如在同一個查詢中可以通過圖書的名稱來查找該圖書並修改圖書的名稱
UPDATE myLibrary SET title = SQL Bible nd Edition
WHERE title = SQL Bible;
當然在修改了數據之後如果使用相同的WHERE子句和篩選條件上面這個查詢將無法再次查找到相同的記錄當使用已有數據作為新值的一部分並用新值更新記錄時相同的原則也適用例如要在SQL Bible之後添加限定符nd Edition時無須提供整個字符串只需要使用原來的列值並提供nd Edition字符串作為第二部分然後使用一個連接操作符將其連接起來
UPDATE myLibrary SET titletitle = title + nd Edition
WHERE title = SQL Bible;
上面的語法使用加號(+)作為字符串的連接操作符但這僅在Microsoft SQL Server中有效Oracle和PostgreSQL使用||操作符Microsoft Access使用&操作符IBM DBMySQL和HSQLDB則使用SQL函數CONCAT來連接字符串關於SQL操作符和SQL函數的更多內容請參考第章的內容
到目前為止的例子都隱含了一層含義即列都是使用與列具有相同數據類型的值進行更新用字符串更新字符串用數值更新數值當混合了數據類型並試圖用其插入或更新表時會發生什麼樣的情況呢?答案還是視情況而定某些RDBMS無法接受不兼容的數據並拋出一個錯誤消息另外一些RDBMS則在兼容性的范圍內盡最大的努力將數據轉換為與列的數據類型相兼容的數據後面這種方式被稱為隱式數據類型轉換第章將討論其利弊
試一試使用ALTER語句修改表結構使用UPDATE語句更新數據
為了練習一下上面介紹的情形請在MYLIBRARY表中添加一個數值列並向該列中添加數據下面的練習使用Microsoft SQL Server 數據庫
首先確保准備工作已經到達可以輸入和執行SQL命令的階段重復本章第一個試一試練習中步驟()到步驟()的操作像練習和練習一樣重新創建並填充MYLIBRARY表然後執行下面這些指令
() 要在MYLIBRARY表中添加一個新列可輸入下面的SQL命令
USE library;
ALTER TABLE myLibrary
ADD book_id INTEGER;
() 單擊上方工具欄中的Execute按鈕如圖所示
() 注意觀察下方窗格的Messages選項卡中的消息Command(s) completed successfully
() 查詢MYLIBRARY表中的數據確保新添加的BOOK_ID列出現在數據集的最後一列該列的值為空(NULL值)如圖所示
圖
返回目錄SQL實戰新手入門
編輯推薦
Oracle索引技術
高性能MySQL
數據倉庫與數據挖掘培訓視頻教程
From:http://tw.wingwit.com/Article/program/SQL/201311/16478.html