iT邦幫忙

2023 iThome 鐵人賽

DAY 7
1
自我挑戰組

Hello SQL 初次見面你好系列 第 7

Day 7 更新 & 刪除資料

  • 分享至 

  • xImage
  •  

昨天我們將交叉查詢 (JOINS) & 彙總查詢 (Aggregation) 大致上做了介紹,有關查詢的語法暫時告一段落,所以回顧一下我們這幾天大致學會了如何寫入資料 (INSERT INTO),以及查詢資料 (SELECT),今天我們就來介紹如何修改以及刪除資料,將簡單的 CRUD 補完

CRUD 是 Create(創建)、Read(讀取)、Update(更新)和 Delete(刪除)的縮寫

代表了資料庫中最常見的四種操作

在開啟學習如何更新以及刪除資料之前,我們先將今天要使用到資料表 (table) 建立好

CREATE TABLE animals (
    id SERIAL PRIMARY KEY,
    name character varying NOT NULL,
    species character varying,
    gender character(1) CHECK (gender IN ('F', 'M')),
    weight real,
    age int
);
INSERT INTO animals (name, species, gender, weight, age)

values ('饅頭', '貓', 'M', 5.5, 7), 
       ('弟弟', '貓', 'M', 6.2, 5),
       ('妹妹', '貓', 'F', 4.7, 5), 
       ('小黑', '狗', 'F', 7.4, 10);
  • 所以我們的 animals 資料表會長的像下面這樣
id name species gender weight age
1 饅頭 M 5.5 7
2 弟弟 M 6.2 5
3 妹妹 F 4.7 5
4 小黑 F 7.4 10

更新資料 UPDATE

更新資料其實沒有想像中的難,這邊就讓我們來設定一個情境

  • 情境: 又過了一年了,各位動物們都長大一歲了
UPDATE animals
SET age = age + 1 RETURNING *;

結果:

 id | name | species | gender | weight | age
----+------+---------+--------+--------+-----
  1 | 饅頭 | 貓      | M      |    5.5 |   8
  2 | 弟弟 | 貓      | M      |    6.2 |   6
  3 | 妹妹 | 貓      | F      |    4.7 |   6
  4 | 小黑 | 狗      | F      |    7.4 |  11
  
(4 rows)

UPDATE 4

剛剛的情況是表格內的全部資料都要做改變,所以沒有使用 WHERE 子句,但是絕大部分在更新資料時一定會做條件限制的,這邊我們就來舉例一個情境

  • 情境: 今天發現了 弟弟妹妹 都變胖了 0.3 公斤了
UPDATE animals
SET weight = weight + 0.3
WHERE name IN ('弟弟', '妹妹') RETURNING *;

結果:

 id | name | species | gender | weight | age
----+------+---------+--------+--------+-----
  2 | 弟弟 | 貓      | M      |    6.5 |   6
  3 | 妹妹 | 貓      | F      |      5 |   6
(2 rows)

UPDATE 2

刪除資料 DELETE

  • 情境:小黑被好心人所領養了,所以要將資料刪除
DELETE FROM animals
WHERE name = '小黑' RETURNING *;

結果:

 id | name | species | gender | weight | age
----+------+---------+--------+--------+-----
  4 | 小黑 | 狗      | F      |    7.4 |  11
(1 row)

DELETE 1

回顧 SQL 之 CRUD

Create(建立資料)

  • 在資料庫中建立新資料

語法:

INSERT INTO table_name (column_1, column_2, column_3 ...)
VALUES (value1, value2, value3, ...);

Read (讀取資料)

  • 讀取資料庫中的資料
SELECT column_1, column_2 ....
FROM table_name
WHERE some_conditions;

Update (更新資料)

  • 更新已經存在於資料庫中的資料
Update table_name
SET column_1 = new_value_1, column_2 = new_value_2, ... 
WHERE some_conditions;

Delete (刪除資料)

  • 刪除資料庫中的資料
DELETE FROM table_name 
WHERE some_conditions;

結語

今天將 SQL 中如何做到 CRUD 補完了
明天會和大家介紹 什麼是 DDL、DML、TCL、DCL ?


上一篇
Day 6 交叉查詢 JOINS & 彙總查詢 Aggregation
下一篇
DAY 8 什麼是 DDL、DML、TCL、DCL
系列文
Hello SQL 初次見面你好30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
Robert Chang
iT邦新手 3 級 ‧ 2023-09-22 11:18:00

丸子

zhan0217 iT邦新手 4 級 ‧ 2023-09-22 11:18:40 檢舉

肉包

我要留言

立即登入留言