SQL語法修改資料庫 - INSERT(插入)

更新於 2024/08/08閱讀時間約 5 分鐘

※ 把record加到table有兩種方式:

  • VALUES

• SELECT

※ 語法

  • INSERT INTO VALUES 語法:
raw-image
  1. Record 代表一組值的集合,每個值對應到表格中的一個欄位(column)。
  2. INSERT INTO 語法用來指定要插入資料的表格。
  3. 需要提供一個欄位列表(column list)和一個值列表(value list)。
  4. 語法執行完畢後,會將一個新的記錄插入到指定的表格中。
  5. 可以一次插入多個記錄,只需用逗號(,)分隔不同的值列表。
  • INSERT INTO SELECT 語法:

INSERT INTO SELECT 語法在實務中經常用來創建總結表格(summary table),特別是當需要結合不同的表格時。使用 JOIN 語法可以將多個表格中的數據結合起來,然後使用 INSERT INTO SELECT 將這些數據插入到新的表格中。

INSERT INTO SELECT 語法允許我們將一個查詢結果插入到另一個表格中。這個語法的作用類似於INSERT INTO VALUES,但它使用SELECT查詢來獲取要插入的數據。

raw-image
INSERT INTO table_name(colum_list)
SELECT
select_list
FROM
another_table
WHERE
condition

說明

  1. INSERT INTO table_name (column_list): 指定要插入數據的目標表格和欄位列表。
  2. SELECT select_list FROM another_table WHERE condition: 執行SELECT查詢,從另一個表格中選擇數據,並根據條件過濾數據。

※ 實例

SUMMARY(計算每個歌單的歌數⽬)

// WITH AS(…)是一個 CTE,用來計算每個歌單中的歌曲數量。
WITH list_id_to_song_cnt AS (
SELECT list_id, COUNT(song_name) AS COUNT // 從 song 表中選擇 list_id 和歌曲數量。
FROM song // 資料來源是 song 表。
GROUP BY list_id // 根據 list_id 分組,計算每個歌單中的歌曲數量。
)

// 將計算結果插入到 list_with_song_cnt 表中。
INSERT INTO list_with_song_cnt(list_id, list_name, user_id, description, count)

// 從 list 表中選擇歌單ID、歌單名稱和歌曲數量。
SELECT t1.list_id, t1.list_name, IFNULL(t2.count, 0) // 如果 t2.count 為空,則返回0。
FROM list AS t1 // 資料來源是 list 表,並將其命名為 t1。
// 使用左連接將 list 表和CTE list_id_to_song_cnt 連接起來,根據 list_id 進行匹配。
LEFT JOIN list_id_to_song_cnt AS t2 ON t1.list_id = t2.list_id

總結

  1. 計算每個歌單中的歌曲數量。
  2. 將每個歌單的ID、名稱、使用者ID、描述和歌曲數量插入到 list_with_song_cnt 表中。如果某個歌單中沒有歌曲,則顯示0。
raw-image


※ INSERT IGNORE(插入忽略

INSERT IGNORE 語法在插入數據時,如果遇到重複鍵(如唯一鍵或主鍵)或其他約束違反的情況,會忽略該行的插入操作,而不是終止整個插入過程,也不會報錯。這對於避免重複插入相同數據非常有用。

※ 語法

raw-image

說明

  1. INSERT IGNORE INTO table (column_list):
    • INSERT IGNORE INTO: 指定要插入數據的目標表格,並使用 IGNORE 關鍵字來忽略可能引發錯誤的行。
    • table: 目標表格的名稱。
    • column_list: 要插入數據的欄位列表。
  2. VALUES (value_list1), (value_list2):
    • VALUES: 指定要插入的數據值。
    • (value_list1), (value_list2): 每個 value_list 代表一行數據,包含與 column_list 對應的值。

※ 實例

假設我們有一個 users 表,包含 id 和 email 欄位,並且 email 欄位具有唯一約束:

CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
email VARCHAR(130) NOT NULL UNIQUE
);

我們嘗試插入兩行數據,其中一行數據的 email 欄位值重複:

INSERT IGNORE INTO users (email)
VALUES ('john.doe@gmail.com'),
('john.doe@gmail.com');

在這種情況下,INSERT IGNORE 將忽略重複的行並插入有效的行,而不會引發錯誤。

    全端網頁開發專業知識分享
    留言0
    查看全部
    avatar-img
    發表第一個留言支持創作者!
    ※ CTE是什麼? 在 SQL 中,我們經常需要從多個表中提取數據,因此會使用子查詢 (subquery)。為了讓子查詢更易讀並實現遞迴查詢,我們可以使用 Common Table Expression (CTE)。 CTE 是一個「暫存」且「具名」的結果集合,透過 AS 關鍵字將查詢結果暫時儲
    ※ 為什麼需要 Subquery? 當⼀個任務需要多個 Query 完成任務,可以使⽤ Subquery 把多個 Query 合併成⼀個 Query。 當我們在進行SQL查詢時,每次查詢都需要在Web Server和資料庫之間來回傳遞資料。這個過程會產生網路延遲,特別是當兩者之間的物理距離較遠時
    ※ 何時該使用 JOIN? JOIN 使用的時機是:當你需要同時查詢一張以上的資料表的時候。 ※ SQL有哪些TABLE JOIN的方式? INNER JOIN LEFT JOIN RIGHT JOIN SELF JOIN ※ 使用 JOIN 的時候,我們需要考慮到: 我要使用哪一種
    ※ 別名: 目的在於提高SQL查詢的可讀性和簡潔性。 ※ 別名有兩種: Column Alias(列別名):在查詢結果中的某一列,取一個臨時的新名字。 Table Alias(表別名):給查詢中的表取一個短暫的新名字。 ※ Column Alias ※ 為什麼需要 Column A
    ※ GROUP BY 用於將數據表中的數據按照一個或多個列進行分組。例如在處理一個表格的資料時,可以指定欄位,一個或是多個,然後把將其視為ID進行分組處理。 ※ 語法 SELECT column1, column2, ..., aggregate_function(column) FROM
    ※ 什麼是WHERE? 使用 WHERE來設定條件,可以幫助我們縮小查詢結果的範圍,取得想要的結果。 ※ 語法: ※ 解析順序: From:先看是哪一張table→table裡面符合Where指定條件的record→再看Select指定的是那些欄位→再根據那個欄位進行排序。 ※ 使⽤⽅
    ※ CTE是什麼? 在 SQL 中,我們經常需要從多個表中提取數據,因此會使用子查詢 (subquery)。為了讓子查詢更易讀並實現遞迴查詢,我們可以使用 Common Table Expression (CTE)。 CTE 是一個「暫存」且「具名」的結果集合,透過 AS 關鍵字將查詢結果暫時儲
    ※ 為什麼需要 Subquery? 當⼀個任務需要多個 Query 完成任務,可以使⽤ Subquery 把多個 Query 合併成⼀個 Query。 當我們在進行SQL查詢時,每次查詢都需要在Web Server和資料庫之間來回傳遞資料。這個過程會產生網路延遲,特別是當兩者之間的物理距離較遠時
    ※ 何時該使用 JOIN? JOIN 使用的時機是:當你需要同時查詢一張以上的資料表的時候。 ※ SQL有哪些TABLE JOIN的方式? INNER JOIN LEFT JOIN RIGHT JOIN SELF JOIN ※ 使用 JOIN 的時候,我們需要考慮到: 我要使用哪一種
    ※ 別名: 目的在於提高SQL查詢的可讀性和簡潔性。 ※ 別名有兩種: Column Alias(列別名):在查詢結果中的某一列,取一個臨時的新名字。 Table Alias(表別名):給查詢中的表取一個短暫的新名字。 ※ Column Alias ※ 為什麼需要 Column A
    ※ GROUP BY 用於將數據表中的數據按照一個或多個列進行分組。例如在處理一個表格的資料時,可以指定欄位,一個或是多個,然後把將其視為ID進行分組處理。 ※ 語法 SELECT column1, column2, ..., aggregate_function(column) FROM
    ※ 什麼是WHERE? 使用 WHERE來設定條件,可以幫助我們縮小查詢結果的範圍,取得想要的結果。 ※ 語法: ※ 解析順序: From:先看是哪一張table→table裡面符合Where指定條件的record→再看Select指定的是那些欄位→再根據那個欄位進行排序。 ※ 使⽤⽅
    你可能也想看
    Google News 追蹤
    Thumbnail
    *合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
    Thumbnail
    ※ 何時該使用 JOIN? JOIN 使用的時機是:當你需要同時查詢一張以上的資料表的時候。 ※ SQL有哪些TABLE JOIN的方式? INNER JOIN LEFT JOIN RIGHT JOIN SELF JOIN ※ 使用 JOIN 的時候,我們需要考慮到: 我要使用哪一種
    Thumbnail
    ※ 別名: 目的在於提高SQL查詢的可讀性和簡潔性。 ※ 別名有兩種: Column Alias(列別名):在查詢結果中的某一列,取一個臨時的新名字。 Table Alias(表別名):給查詢中的表取一個短暫的新名字。 ※ Column Alias ※ 為什麼需要 Column A
    Thumbnail
    ※ GROUP BY 用於將數據表中的數據按照一個或多個列進行分組。例如在處理一個表格的資料時,可以指定欄位,一個或是多個,然後把將其視為ID進行分組處理。 ※ 語法 SELECT column1, column2, ..., aggregate_function(column) FROM
    Thumbnail
    ※ 什麼是WHERE? 使用 WHERE來設定條件,可以幫助我們縮小查詢結果的範圍,取得想要的結果。 ※ 語法: ※ 解析順序: From:先看是哪一張table→table裡面符合Where指定條件的record→再看Select指定的是那些欄位→再根據那個欄位進行排序。 ※ 使⽤⽅
    Thumbnail
    ※ 語法 SELECT select_list FROM table_name​ ※ 解析順序 From:從哪裡拿? SELECT:要 "拿什麼" 資料? ※ 使用場景: Single column(單一欄位): Multiple column(多個欄位): All colu
    Thumbnail
    這篇文章主要是介紹了SQL查詢效能調校的方法,針對索引最佳化做了整理和分享,並提供了一些注意事項和建議。
    Thumbnail
    在進行SQL查詢邏輯更改時,需要適當地使用SubQuery和join來達到新的排序需求。本文將介紹原本的撈取邏輯、需求以及如何使用SubQuery來解決新的排序需求。
    Thumbnail
    在工作情境中手動執行SQL語法更新中文字時,有時會遇到中文字顯示問號(?)的情況。這篇文章將介紹如何解決手動執行SQL語法時造成中文顯示問號(?)的方法。
    Thumbnail
    ※ 基本操作:SQL 語法,SELECT, WHERE, CREATE, UPDATE, DELETE。 SELECT:從資料庫中或資料表中指定要選擇的欄位中取得資料,稱之為查詢 (query)。 ※ 語法:要由兩部分構成,第一部分是要 "拿什麼" 資料 (若有多項用逗號隔開);第二部分則為
    Thumbnail
    *合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
    Thumbnail
    ※ 何時該使用 JOIN? JOIN 使用的時機是:當你需要同時查詢一張以上的資料表的時候。 ※ SQL有哪些TABLE JOIN的方式? INNER JOIN LEFT JOIN RIGHT JOIN SELF JOIN ※ 使用 JOIN 的時候,我們需要考慮到: 我要使用哪一種
    Thumbnail
    ※ 別名: 目的在於提高SQL查詢的可讀性和簡潔性。 ※ 別名有兩種: Column Alias(列別名):在查詢結果中的某一列,取一個臨時的新名字。 Table Alias(表別名):給查詢中的表取一個短暫的新名字。 ※ Column Alias ※ 為什麼需要 Column A
    Thumbnail
    ※ GROUP BY 用於將數據表中的數據按照一個或多個列進行分組。例如在處理一個表格的資料時,可以指定欄位,一個或是多個,然後把將其視為ID進行分組處理。 ※ 語法 SELECT column1, column2, ..., aggregate_function(column) FROM
    Thumbnail
    ※ 什麼是WHERE? 使用 WHERE來設定條件,可以幫助我們縮小查詢結果的範圍,取得想要的結果。 ※ 語法: ※ 解析順序: From:先看是哪一張table→table裡面符合Where指定條件的record→再看Select指定的是那些欄位→再根據那個欄位進行排序。 ※ 使⽤⽅
    Thumbnail
    ※ 語法 SELECT select_list FROM table_name​ ※ 解析順序 From:從哪裡拿? SELECT:要 "拿什麼" 資料? ※ 使用場景: Single column(單一欄位): Multiple column(多個欄位): All colu
    Thumbnail
    這篇文章主要是介紹了SQL查詢效能調校的方法,針對索引最佳化做了整理和分享,並提供了一些注意事項和建議。
    Thumbnail
    在進行SQL查詢邏輯更改時,需要適當地使用SubQuery和join來達到新的排序需求。本文將介紹原本的撈取邏輯、需求以及如何使用SubQuery來解決新的排序需求。
    Thumbnail
    在工作情境中手動執行SQL語法更新中文字時,有時會遇到中文字顯示問號(?)的情況。這篇文章將介紹如何解決手動執行SQL語法時造成中文顯示問號(?)的方法。
    Thumbnail
    ※ 基本操作:SQL 語法,SELECT, WHERE, CREATE, UPDATE, DELETE。 SELECT:從資料庫中或資料表中指定要選擇的欄位中取得資料,稱之為查詢 (query)。 ※ 語法:要由兩部分構成,第一部分是要 "拿什麼" 資料 (若有多項用逗號隔開);第二部分則為