close

這是線上平台課程的筆記內容,就是讓自己方便複習用。

老師講課的進度掌握得很好,教得也很淺寫易懂。

線上平台課程內有提供 SQL套件,如果有興趣的朋友一定要去支持老師的課程。

這樣才能取得老師提供的套件包做練習使用。

如果有想要知道老師的課程,再詢問我。


CH9

修改表中的數據: 插入INSERT、修改UPDATE、刪除DELETE

INSERT INTO table

欄位1, 欄位2, 欄位3

VALUES  1, 2, 3

 

為了客戶VINET新增一筆訂單

1 要先查詢訂單的狀況

SELECT * FROM orders WHERE customerid = ‘VINET’

這邊可以看到要輸入的欄位有哪些。

 

SELECT * FROM orders WHERE customerid = 'VINET';

2.塞入資料,orders.orderid通常是設計會自己增長,這個先不要設定試試看。

 

INSERT INTO orders

(customerid, employeeid, orderdate, requireddate,

 shipvia, freight, shipname, shipaddress, shipcity, shippostalcode,shipcountry)

VALUES

(VV', 4, '2018-11-19', '2018-11-30', 3,

 42.5, 'Vi.......', 'ms', '511', 'Fra'); 

 

結果得到錯誤,orderid不能夠為空。

表示這邊的orderid不適自動增長的。

 

這個狀況下,我們就得自己去找一下目前最大的orderid是多少了。

SELECT MAX(orderid) FROM orders ;

 

這樣知道我們的orderid最大是11077

那我們將id + 1 再置入。

 

INSERT INTO orders

(orderid,customerid,employeeid,orderdate,requireddate,shippeddate,shipvia,

freight,shipname,shipaddress,shipcity,shippostalcode,shipcountry)

VALUES

(11078,'VV',4,'2018-07-04','2018-07-11','1996-07-16',4,42.5,

'Vins et alcools Chevalier','59 rue de l''Abbaye','Reims',

'51100','France');

接著我們再次查詢。

這邊shippeddate沒有設定好。之後再來修改。

 

LAB  order_details裡面新增一筆資料。

讓資料內的數量是20Queso Cabrales商品,且售價是14元。

 

1首先要查詢order_details的所有欄位。

可以發現商品都會有對應的orderid

這邊的orderid就是我們之前練習的資料。

 

2 Productid部分,我們要先去查詢Queso Cabralesproductid是多少。

SELECT productid,productname FROM products WHERE productname = 'Queso Cabrales';

或者僅知道關鍵字,也可以輸入WHERE productname LIKE 'Queso%' 來查詢。

查詢到productid11

 

3 結合資料來輸入資訊。

ordered=11078,productid=11,數量20,單價14,沒有說折扣,輸入0

 

INSERT INTO order_details

(orderid,productid,unitprice,quantity,discount)

VALUES

(11078,11,14,20,0);

 

接著來查詢一下資料。

SELECT * FROM order_details WHERE ordered=11078;

 


更新資料 UPDATE

允許我們變更現在有的紀錄。

UPDATE table

SET 欄位1=1,欄位2=2…

WHERE條件;

注意,千萬不能購忘記WHERE,不然他會變成更新裡面的每條紀錄!!!!

很嚴重。

 

要設定UPDATE,請先把WHERE打出來。

來更新我們剛剛建立的訂單,requireddate提早2天到。

花費的shipcost費用要增加10元。

順編修正剛剛輸入錯誤的shippeddate 2018-07-16

 

UPDATE orders

SET requireddate='2018-07-02',shippeddate='2018-07-16',freight=10

WHERE orderid=11078;

查詢一下。

時間概念上很奇怪,但這邊主要是練習而已。

 

LAB order_details的數量修正(ordered=11078)

數量從20更正為40,折扣給予.05

 

記得 先打出下面的樣子。

UPDATE

SET

WHERE orderid=11078;

 

再來進行UPDATE,不然會發生憾事。

UPDATE order_details

SET quantity=40,discount=0.05

WHERE orderid=11078;

 

查詢看看

 

如果orderid內有多項商品的話。我們這邊就要在指定商品。

UPDATE order_details

SET quantity=40,discount=0.05

WHERE orderid=11078  AND productid=11;


刪除紀錄

 

也是記住,不要忘記WHERE,不然也會死得很難看。

DELETE

FROM table

WHERE 條件。

 

練習:今天突然收到取消訂單的消息。

我們要先刪除order_details裡的,orderid=11078

 

1.先把條件打好。

DELETE

FROM

WHERE orderid=11078;

 

 

2刪除

DELETE  

FROM order_details

WHERE orderid=11078;

 

 

3.確認一下。

 

LAB 刪除orders當中orderid=11078的消息吧。

做甚麼之前都先做好查詢的習慣。

 

確認狀況後,再把SELECT 修改為DELETE

最後再次確認。

 


選擇 INTO

之前學的是INSERT INTO

這邊要學SELECT 欄位 INTO

 

SELECT 欄位1,欄位2

INTO  new_table

FROM old_table

WHERE條件;

 

基本語法是要在一個新表中選擇一些列。

這邊是做表的備份動作。

 

來備份suppliers在美國地區的名單資料,新名suppliers_NUSA

SELECT *

INTO suppliers_NUSA

FROM suppliers

WHERE country IN ('USA ', 'Canada ');

 

來確認一下。

Refresh資料庫可以看到,多了一張表。

來確認一下表裡面有甚麼。

 

SELECT COUNT(*)

FROM suppliers_nusa;

查詢行數符合6行資料。

 

 

來看一下資料。的確是我們要的條件。

 

LAB 備份1997年的orders,變成orders_1997

 

1 下條件

SELECT

INTO

FROM orders

WHERE orderdate BETWEEN '1997-01-01' AND '1997-12-31';

 

2 新名稱

SELECT

INTO orders_1997

FROM orders

WHERE orderdate BETWEEN '1997-01-01' AND '1997-12-31';

 

3完成

SELECT *

INTO orders_1997

FROM orders

WHERE orderdate BETWEEN '1997-01-01' AND '1997-12-31';

 

408筆資料被備份出去。

 

最終來確認一下。

時間點沒有錯,也確實是408筆資料。

 


插入選擇

INSERT INTO SELECT

之前學的是 INSET INTOSELECT INTO

這邊要學的INSERT INSTO SELECT

 

INSERT INTO table2 (欄位1,欄位2)

SELECT 欄位1,欄位2

FROM table1

WHERE 條件;

 

如果要全部

INSERT INTO table2

SELECT *

FROM table1

WHERE條件;

 

練習:現在要新增Brazil & Argentina的資料到suppliers_nusa

INSERT INTO suppliers_nusa

SELECT *

FROM suppliers

WHERE country IN ('Brazil','Argentina');

 

確認下。

 

LAB 新增2016-12月份的資料到orders_1997

INSERT INTO

SELECT

FROM

WHERE orderdate BETWEEN '1996-12-01' AND '1996-12-31';

 

INSERT INTO orders_1997

SELECT *

FROM orders

WHERE orderdate BETWEEN '1996-12-01' AND '1996-12-31';

 

<本篇完>


第一篇:  IT讀書室-SQL語法學習- postgre安裝與匯入

第二篇:  IT讀書室-SQL語法學習- SELECT查詢

第三篇:  IT讀書室-SQL語法學習- WHERE條件

第四篇:  IT讀書室-SQL語法學習- 中間的SELECT語句

 


如果筆記造成任何法律或者侵權的問題,作者會立即將筆記下架。

 

 

 

 

arrow
arrow
    全站熱搜

    IT001 發表在 痞客邦 留言(0) 人氣()