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

更新於 發佈於 閱讀時間約 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 將忽略重複的行並插入有效的行,而不會引發錯誤。

留言
avatar-img
留言分享你的想法!
avatar-img
奧莉薇走在成為後端工程師之路上
20會員
145內容數
全端網頁開發專業知識分享
2025/04/26
※ 場景: 即時聊天應用: 設計一個支持多房間功能的即時聊天平台,像 WhatsApp、LINE或Facebook Messenger,提供文字、語音、視訊聊天功能,方便管理群組聊天。 功能亮點:加入特別功能,例如可加入多房間功能、使用者名單、表情符號支持、文件分享或訊息已讀未讀狀態。 展示
2025/04/26
※ 場景: 即時聊天應用: 設計一個支持多房間功能的即時聊天平台,像 WhatsApp、LINE或Facebook Messenger,提供文字、語音、視訊聊天功能,方便管理群組聊天。 功能亮點:加入特別功能,例如可加入多房間功能、使用者名單、表情符號支持、文件分享或訊息已讀未讀狀態。 展示
2025/04/26
※ 先建立基本的express後端服務: 1.建立新資料夾:Socket mkdir socket 2.進入資料夾:Socket cd ​bsocket 3. 安裝 Experss 到專案中 npm init -y //初始化專案,建立 package.json 檔 npm insta
Thumbnail
2025/04/26
※ 先建立基本的express後端服務: 1.建立新資料夾:Socket mkdir socket 2.進入資料夾:Socket cd ​bsocket 3. 安裝 Experss 到專案中 npm init -y //初始化專案,建立 package.json 檔 npm insta
Thumbnail
2025/04/10
※ 什麼是 Socket.io:一個基於傳統 WebSocket API 之上的框架。 ※ Socket.io常用功能: Custom Events:在 Socket.io 中,開發者可以創建自己的事件來處理特定的功能或需求。 Rooms:分組的功能。每個連接的用戶(或稱為 socket)可
Thumbnail
2025/04/10
※ 什麼是 Socket.io:一個基於傳統 WebSocket API 之上的框架。 ※ Socket.io常用功能: Custom Events:在 Socket.io 中,開發者可以創建自己的事件來處理特定的功能或需求。 Rooms:分組的功能。每個連接的用戶(或稱為 socket)可
Thumbnail
看更多
你可能也想看
Thumbnail
孩子寫功課時瞇眼?小心近視!這款喜光全光譜TIONE⁺光健康智慧檯燈,獲眼科院長推薦,網路好評不斷!全光譜LED、180cm大照明範圍、5段亮度及色溫調整、350度萬向旋轉,讓孩子學習更舒適、保護眼睛!
Thumbnail
孩子寫功課時瞇眼?小心近視!這款喜光全光譜TIONE⁺光健康智慧檯燈,獲眼科院長推薦,網路好評不斷!全光譜LED、180cm大照明範圍、5段亮度及色溫調整、350度萬向旋轉,讓孩子學習更舒適、保護眼睛!
Thumbnail
創作者營運專員/經理(Operations Specialist/Manager)將負責對平台成長及收入至關重要的 Partnership 夥伴創作者開發及營運。你將發揮對知識與內容變現、影響力變現的精準判斷力,找到你心中的潛力新星或有聲量的中大型創作者加入 vocus。
Thumbnail
創作者營運專員/經理(Operations Specialist/Manager)將負責對平台成長及收入至關重要的 Partnership 夥伴創作者開發及營運。你將發揮對知識與內容變現、影響力變現的精準判斷力,找到你心中的潛力新星或有聲量的中大型創作者加入 vocus。
Thumbnail
已經存在在table裡面的那些record做更新。 ※ 語法 UPDATE [LOW_PRIORITY] [IGNORE] table_name SET column_name1 = expr1, column_name2 = expr2, … [WHERE
Thumbnail
已經存在在table裡面的那些record做更新。 ※ 語法 UPDATE [LOW_PRIORITY] [IGNORE] table_name SET column_name1 = expr1, column_name2 = expr2, … [WHERE
Thumbnail
※ 把record加到table有兩種方式: VALUES • SELECT ※ 語法 INSERT INTO VALUES 語法: Record 代表一組值的集合,每個值對應到表格中的一個欄位(column)。 INSERT INTO 語法用來指定要插入資料的表格。 需要提供一個
Thumbnail
※ 把record加到table有兩種方式: VALUES • SELECT ※ 語法 INSERT INTO VALUES 語法: Record 代表一組值的集合,每個值對應到表格中的一個欄位(column)。 INSERT INTO 語法用來指定要插入資料的表格。 需要提供一個
Thumbnail
※ 何時該使用 JOIN? JOIN 使用的時機是:當你需要同時查詢一張以上的資料表的時候。 ※ SQL有哪些TABLE JOIN的方式? INNER JOIN LEFT JOIN RIGHT JOIN SELF JOIN ※ 使用 JOIN 的時候,我們需要考慮到: 我要使用哪一種
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
※ 別名: 目的在於提高SQL查詢的可讀性和簡潔性。 ※ 別名有兩種: Column Alias(列別名):在查詢結果中的某一列,取一個臨時的新名字。 Table Alias(表別名):給查詢中的表取一個短暫的新名字。 ※ Column Alias ※ 為什麼需要 Column A
Thumbnail
※ GROUP BY 用於將數據表中的數據按照一個或多個列進行分組。例如在處理一個表格的資料時,可以指定欄位,一個或是多個,然後把將其視為ID進行分組處理。 ※ 語法 SELECT column1, column2, ..., aggregate_function(column) FROM
Thumbnail
※ GROUP BY 用於將數據表中的數據按照一個或多個列進行分組。例如在處理一個表格的資料時,可以指定欄位,一個或是多個,然後把將其視為ID進行分組處理。 ※ 語法 SELECT column1, column2, ..., aggregate_function(column) FROM
Thumbnail
※ 什麼是WHERE? 使用 WHERE來設定條件,可以幫助我們縮小查詢結果的範圍,取得想要的結果。 ※ 語法: ※ 解析順序: From:先看是哪一張table→table裡面符合Where指定條件的record→再看Select指定的是那些欄位→再根據那個欄位進行排序。 ※ 使⽤⽅
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
※ 語法 SELECT select_list FROM table_name​ ※ 解析順序 From:從哪裡拿? SELECT:要 "拿什麼" 資料? ※ 使用場景: Single column(單一欄位): Multiple column(多個欄位): All colu
Thumbnail
在進行SQL查詢邏輯更改時,需要適當地使用SubQuery和join來達到新的排序需求。本文將介紹原本的撈取邏輯、需求以及如何使用SubQuery來解決新的排序需求。
Thumbnail
在進行SQL查詢邏輯更改時,需要適當地使用SubQuery和join來達到新的排序需求。本文將介紹原本的撈取邏輯、需求以及如何使用SubQuery來解決新的排序需求。
Thumbnail
這集介紹到儲存格格式設定的應用,當在輸入性別的時候,可以輸入簡單的數字就能夠顯示相對應的內容。 輸入1:男 輸入2:女 輸入3:第三性 <🖼️圖文教學> 選取要設定的範圍 右鍵 儲存格格式 自訂 輸入:[=1]男;[=2]女;第三性 這樣只要在儲存格內 輸入
Thumbnail
這集介紹到儲存格格式設定的應用,當在輸入性別的時候,可以輸入簡單的數字就能夠顯示相對應的內容。 輸入1:男 輸入2:女 輸入3:第三性 <🖼️圖文教學> 選取要設定的範圍 右鍵 儲存格格式 自訂 輸入:[=1]男;[=2]女;第三性 這樣只要在儲存格內 輸入
Thumbnail
有個簡單的方法,把儲存格的文字串連起來!一起來看看怎麼做,很好操作唷!
Thumbnail
有個簡單的方法,把儲存格的文字串連起來!一起來看看怎麼做,很好操作唷!
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News