SQL应用与开发:(三)数据操作 #183; 改 AND 删
繼續上一篇博客的序幕,接下來,寫一些關于數據操作的“改”和“刪”的相關課題。在本次的學習總結中,一致圍繞著數據的操作問題,這也是數據庫基本、最簡單的應用之一。
1.修改和刪除表
在創建好表之后,如果想對表中的數據進行修改,可以使用SQL提供的ALTER TABLE語句;如果在使用過程中發現某個表已不再需要,可以通過SQL提供的DROP TABLE語句將該表刪除。
1.1修改SQL表
可以使用ALTER TABLE語句修改存儲在數據庫中的基表定義。ALTER TABLE語句的基本語法:
ALTER TABLE <table_name>
ADD [COLUMN] <column definition>
|ALTER [COLUMN] <column_name>
{SET DEFAULT <default value> | DROP DEFAULT}
| DROP [COLUMN] <column_name> {CASCADE | RESTRICT}
上述語句可以完成三中不同的功能:添加列、更改列和刪除列。其中,ADD [COLUMN] 子句的占位符<column definition>與CRERATE TABLE語句中的列定義類似。在這個占位符中可以提供列名和數據類型,還可以添加默認子句、列約束或整序。
例如,在“客戶信息”表中添加一個名為“備注”的列。執行語句如下:
ALTER TABLE 客戶信息
ADD COLUMN 備注 DATE
與ADD [COLUMN]子句不同,ALTER [COLUMN]子句只能實現設置默認或刪除默認值兩種功能。例如,如果沒有上述在表”客戶信息“添加列”備注“中定義默認值,則通過下述語句為其添加默認值:
ALTER TABLE 客戶信息
ALTER COLUMN 備注 SET DEFAULT 'Unknown'
如果想刪除某一列的默認值,可以通過一下語句來實現:
ALTER TABLE 客戶信息
ALTER COLUMN 備注 DROP ?DEFAULT
其中,子句DROP [COLUMN]提供了兩個關鍵字CASCADE和RESTRICT,通過這兩個關鍵字可以從表中刪除列及其數據。如果指定CASCADE關鍵字則無論其他對象書否引用這一列,列和列中的數據都將會被刪除,并且所有引用該列的視圖、約束、列程或觸發器也將會被刪除。如果指定RESTRICT關鍵字,則只有在沒有視圖、約束、列程或觸發器引用該列時,該列才會被刪除。例如,從”客戶信息“表中,刪除列”備注“,但并不考慮是否有依賴該列的視圖、約束、列程或觸發器,執行語句:ALTER TABLE 客戶信息
DROP COLUMN 備注 CASCADE
1.2刪除SQL表
刪除SQL表及其存儲數據的過程比較簡單,其語法格式:
DROP TABLE <table_name> {CASCADE | RESTRICT}
從上述語句可以看出,當刪除一個表時,要對關鍵字關鍵字CASCADE和RESTRICT,通過這兩個關鍵字可以從表中刪除列及其數據。如果指定CASCADE關鍵字則無論其他對象書否引用這一列,列和列中的數據都將會被刪除,并且所有引用該列的視圖、約束、列程或觸發器也將會被刪除。如果指定RESTRICT關鍵字,則只有在沒有視圖、約束、列程或觸發器引用該列時,該列才會被刪除。例如,從”客戶信息“表中,刪除列”備注“,但并不考慮是否有依賴該列的視圖、約束、列程或觸發器,執行語句:
ALTER TABLE 客戶信息
DROP COLUMN 備注 CASCADE
通過DROP TABLE語句刪除表,不僅將表中的數據刪除,還將刪除表定義本身。如果只想刪除表中的數據,而保留表的定義,則使用DELETE語句。DELETE語句刪除表中的所有行,或者根據語句中的定義只刪除特定的行。關于DELETE 語句的用法將在接下來的課題中介紹。
2.更新SQL數據
當數據被添加到數據表后,會經常需要修改,如客戶的地址發生了變化,貨品庫存量的增減等。在SQL中,對數據的是修改是通過使用UPDATE語句實現的。UPDATE語句可以修改述語句表中的一列或多列的值。其基本語法結構:
UPDATE <Table_Name>
SET <Set clause sxpression>[{,<Set clause expression>}...]
[WHERE <Search_condition>]
可以看出,UPDATE子句和SET子句是必選的,而WHERE子句是可選的。UPDATE子句中,必須指定將要更新的數據表的名稱。WHERE子句可以指定要搜索的條件,以限制只對滿足條件的行進行更新。
2.1使用UPDATE修改數據
在對UPDATE語句的各個部分進行分析后,現在把他們放在一些示例中,這些示例都死基于數據庫”銷售管理系統“的。
在數據庫”銷售管理系統中“,更新編號為1002和1003的商品信息。即把這兩家的商品單價提高10%。
UPDATE 商品信息
SET 單價=單價*1.1
WHERE 供應商編號=1002 or 供應商編號=1003
Set子句可以同時更新多個列,這時,各列之間要用逗號”,“隔開。示例如下:
UPDATE 商品信息
SET 單價=單價*1.1,產地='南京市'
WHERE 商品名稱='Maxtor 40G 硬盤'
但是UPDATE無法對同一列的多個行賦不同的值。比如,可以更新上述代碼中的Maxtor 40G硬盤行的單價和產地信息,但不能在一條UPDATE語句中更新CORSAIR VS512MB內存和Maxtor 40G硬盤的單價。遇到這種情況后,應使用多個UPDATE語句。其代碼:
UPDATE 商品信息
SET 單價=500
WHERE 商品名稱='Maxtor 40G硬盤'
UPDATE 商品信息
SET 單價=260
WHERE ?商品名稱='CORSAIR VS512MB內存'
2.2使用SELECT語句更新
前面介紹過在INSERT語句中使用SELECT語句代替VALUES語句,同樣在UPDATE語句中,SET子句也可以使用SELECT語句。SELECT語句出現在SET子句中等號的右邊。也就是說,SET子句所需要的值由SELECT子句所需的值由SELECT語句提供。
下面的這些示例都是基于數據庫”銷售管理系統“。第一個示例更新”商品信息“數據表中的供應商編號,即把所有產地為北京市的商品編號修改為“中達恒業”的編號。其代碼如下:
UPDATE 商品信息
SET 供應商編號=
(SELECT 供應商編號 FROM 供應商信息
WHERE 供應商名稱='中達恒業')
WHERE 產地='北京市'
根據“供應商信息”中的相關信息,查的中達恒業的編號為1005,這樣SE子句就可以理解為:SET 供應商編號=1005。因此,在“商品信息”表中,所有產地為北京市的行,其供應商編號都被修改為1005。
通過進一步的修改SET子句,可增加UPDATE語句的復雜性。比如,假定在SELECT提取的值賦給供應商編號前,需要將此值加4,那么可對表達式修改:
UPDATE 商品信息
SET 供應商編號=
(SELECT 供應商編號 FROM 供應商信息
WHERE 供應商名稱='中達恒業')+4
WHERE 產地='北京市'
因此,新的SET子句就可以表示為:SET 供應商編號=(1005)+4,執行后,相關行的編號將被修改為1009。
3.刪除SQL數據
當數據庫的添加工作完成以后,隨著不斷使用和對數據的修改,表中可能存在一些無用的數據,這些無用的數據不僅會占用空間,還會影響修改和查詢的速度,所以應及時將它們刪除。在SQL支持的所有數據修改語句中,DELETE語句可能是最簡單的語句。它只包含兩個子句。DELETE語句的基本結構:
DELETE FROM <table_name>?
[WHERE <search_condition>]
DELETE子句是必選項,WHERE子句是可選項。WHERE子句,在這里用于限定要刪除的行,即刪除滿足搜索條件的行。如果在DELETE語句中沒有使用WHERE子句,那么將刪除整個表。
注意在DELETE語句中沒有指定列名,這是由于DELETE語句不能從表中刪除單個列的值。它只能刪除行。如果要刪除特定的列值,可使用UPDATE語句把該列值設為NULL,當然,該列值必須支持NULL值。
現在舉幾個簡單的示例,這些示例都是基于數據庫”銷售管理系統“的:
從“業務員信息”表中刪除姓名為“王俊峰”的數據:
DELETE FROM 業務員信息
WHERE 業務員姓名='王俊峰'
從“業務員信息”表中刪除所有姓“黃”的業務員:
DELETE 業務員信息
WHERE 業務員姓名 LIKE '黃%'
由此可以看出,從表中刪除的行數取決于WHERE子句中定義的搜索條件。注意,使用DELETE語句刪除數據時,與INSERT和UPDATE語句一樣,必須滿足表定義中的約束限制。
4.階段小結
對于數據操作的學習,已經進行了一段的學習,關于今天的學習感覺來說,真的很充實,自己先前對于SQL的數據的操作學習算是很馬虎的,而經過今天的總結學習來說,感覺這部分知識并不難,知識繁瑣,知識都是相聯系的,從不會單獨存在,理解了一個簡單的公式之后,下面的練習,就是小菜一碟。也希望能夠給大家帶來一定的知識沖擊!
依然在后面的時間來總結自己在SQL的學習,期待著自己的努力!
總結
以上是生活随笔為你收集整理的SQL应用与开发:(三)数据操作 #183; 改 AND 删的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: cocos2d-x之逐帧动画
- 下一篇: 【Android开发】用户界面设计-开发