程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> 刪除或更新現有記錄

刪除或更新現有記錄

編輯:關於MYSQL數據庫
 1.4.9 刪除或更新現有記錄

  有時,希望除去某些記錄或更改它們的內容。DELETE 和UPDATE語句令我們能做到這一點。

  DELETE 語句有如下格式:

  DELETE FROM tbl_nameWHERE 要刪除的記錄

  WHERE 子句指定哪些記錄應該刪除。它是可選的,但是如果不選的話,將會刪除所有的記錄。這意味著最簡單的DELETE 語句也是最危險的。

  DELETE FROM tb1_name

  這個查詢將清除表中的所有內容。一定要當心!為了刪除特定的記錄,可用WHERE 子句來選擇所要刪除的記錄。這類似於SELECT 語

  句中的WHERE 子句。例如,為了刪除president 表中所有出生在Ohio 的總統記錄,可用下列查詢:

  

  DELETE 語句中的WHERE 子句的一個限制是只能夠引用要刪除記錄的表中的列。在發布DELETE 語句以前,最好用SELECT 語句測試一下相應的WHERE 子句以確保實際刪除的記錄就是確實想要刪除的記錄(而且只刪除這些記錄)。假如想要刪除Te d d yRoosevelt 的記錄。下面的查詢能完成這項工作嗎?

  

  是的,感覺上它能刪除您頭腦中打算刪除的記錄。但是,錯了,實際上它也能刪除Franklin Roosevelt 的記錄。如果首先用WHERE 子句檢查一下就安全了,如下所示:

  

  現在我們明白了能選擇出所需記錄的WHERE 子句了,因此DELETE 查詢可正確地構造如下:

  

  似乎刪除一個記錄需要做許多工作,不是嗎?但是安全第一!(如果想使鍵盤輸入工作盡量少,可利用拷貝和粘貼技術或采用輸入行編輯技術。更詳細的信息,請參閱“與MySQL交互的技巧”一節。)為了修改現有記錄,可利用UPDATE語句,它具有下列格式:

  UPDATEt b l_name SET 要更改的列WHERE 要更新的記錄這裡的WHERE 子句正如DELETE 語句一樣,是可選的,因此如果不指定的話,表中的每個記錄都被更新。下面的查詢將每個學生的名字都更改為“ G e o rg e”:

  

  顯然,對於這樣的查詢必須極為小心。一般對正在更新的記錄要更為小心。假定近來增加了一個新記錄到歷史同盟,但是只填寫了此實體的少數幾個列:

  

  然後意識到忘了設置其會員終止日期。那麼可如下進行設置:

  

  可同時更新多個列。下面的語句將更新Jerome 的電子郵件和通信地址:

  

  還可以通過設置某列的值為NULL(假設此列允許NULL 值)“不設置”此列。如果在未來的某個時候Jerome 決定支付成為終生會員的會員資格更新費,那麼可以設置其記錄的終止日期為NULL(“永久”)以標記他為終生會員。具體設置如下:

  

  正如DELETE 語句一樣,對於UPDATE,用SELECT 語句測試WHERE 子句以確保選擇正確的更新記錄是一個好辦法。如果選擇條件范圍太窄或太寬,就會使更新的記錄太少或太多。如果您試驗過本節中的查詢,那麼必定已經刪除和修改了samp_db 表中的記錄。在繼續學習下一節的內容以前,應該撤消這些更改。按1. 4 . 7節“增加新記錄”最後的說明重新裝載表的內容來完成這項工作。

  1.4.10 改變表的結構

  回顧我們創建歷史同盟member 表時缺了一個會員號列,因此我們可以進行一次ALTE RTABLE 語句的練習。需要用ALTER TABLE,可以對表重新命名,增加或刪除列,更改列的類型等等。這裡給出的例子是關於怎樣增加新列的。有關ALTER TABLE 功能的詳細內容,請參閱第3章。增加會員號列到member 表的主要考慮是,其值應該是唯一的,以免各會員條目混淆。AUTO_INCREMENT 列在此是很有用的,因為我們可以在增加新的號碼時令MySQL自動地生成唯一的號碼。在CREATE TABLE 語句中,這樣一個列的說明如下:

  

  對於ALTER TABLE,相應的句法也是類似的。可執行下列查詢增加該列:

  

  我們已經有一個存放會員號的列,現在怎樣分配會員號給member 表中的現有記錄呢?很容易!MySQL已經做了這項工作。在增加一列到某個表時, MySQL將會用缺省值初始化該列值。對於AUTO_INCREMENT 列,每個行將會產生一個新的順序號。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved