SQL語法之Insert-Update-Delete三部曲

如果你常下SQL語法,久了就會了解,不外呼兩大部份,一是Select,一是異動,含Insert-Update-Delete,雖然標題是三部曲,但今天主要是介紹Insert及Update這兩個使用上的一點小技巧。

Insert語法


標準語法:
Insert into orders values ('2009/10/29', 1010, NULL)

Insert into orders(order_num, cust_num, order_date) values (200, 1010, '2009/10/29')

以上兩種是標準Insert的用法,而且我們在寫網頁時,常常要「組合」這種語法,欄位一多,跟看3D立體圖差不多,常常為了對應欄位與值,少一個「'」符號,在那裡Debug。

但在Insert語法中還可以使用execute statement,通常我們使用Select可以從資料表中取回資料,但資料可能是一筆,可能是十筆、百筆、萬筆等大量資料,也可能什麼都沒有,但我們可以搭配Insert語法,將Select取回的資料全部Insert進指定的資料表中,來簡省大量輸入及除錯的時間,想想用手輸入1000筆和執行兩三行指令,你要選那一個。

進階語法

Insert into [kk].[dbo].[orders] (order_num, order_date, customerid)
Select order_num, order_date, cust_num from orders

將原本Insert後面values的語法修改為Select語法,而且這個語法的好處可以把原本在Insert語法的重心,重新拉回來Select的身上,只要將規則或條件(Where…)設好,就可能取回你想要的資料,又不用怕輸入錯誤,真的是一舉二得。

Update語法

標準語法:
Update products set phone='035678901' where cust_num=1010

Update product set unit_price=unit_price * 1.05

以上兩種也是常見的Update使用方法,但Update還有一種用法是修改的來源是從某張資料表內的資料,像是Insert可以從別的資料表取得資料一般。

進階語法

update items set unit_price=products.unit_price
from products
where items.prod_num=products.prod_num and items.supp_code=products.supp_code and order_num>888

第一行,我們將products中的價格指定給items;
第二行,指定來源資料表;
第三行,Where條件,確認products中PK;

以上紹介的這兩種進階語法,都是一般入門書中比較不易看到的,提供出來給大家參考。

沒有留言:

張貼留言

感謝您的留言,如果我的文章你喜歡或對你有幫助,按個「讚」或「分享」它,我會很高興的。