這是線上平台課程的筆記內容,就是讓自己方便複習用。
老師講課的進度掌握得很好,教得也很淺寫易懂。
線上平台課程內有提供 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裡面新增一筆資料。
讓資料內的數量是20個Queso Cabrales商品,且售價是14元。
1首先要查詢order_details的所有欄位。
可以發現商品都會有對應的orderid,
這邊的orderid就是我們之前練習的資料。
2 Productid部分,我們要先去查詢Queso Cabrales的productid是多少。
SELECT productid,productname FROM products WHERE productname = 'Queso Cabrales';
或者僅知道關鍵字,也可以輸入WHERE productname LIKE 'Queso%' 來查詢。
查詢到productid是11。
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 INTO、SELECT 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語句
如果筆記造成任何法律或者侵權的問題,作者會立即將筆記下架。
留言列表