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 ('[email protected]'),
('[email protected]');

在這種情況下,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
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
這篇文章主要是介紹了SQL查詢效能調校的方法,針對索引最佳化做了整理和分享,並提供了一些注意事項和建議。
Thumbnail
在進行SQL查詢邏輯更改時,需要適當地使用SubQuery和join來達到新的排序需求。本文將介紹原本的撈取邏輯、需求以及如何使用SubQuery來解決新的排序需求。
如何在SQL實踐中EXCEL 常用功能 篩選 和 擷取文字串?需要熟練地使用分組(GROUP BY) 與 排序 (ORDER BY) 以及SUBSTRING_INDEX函數!
Thumbnail
這集介紹到儲存格格式設定的應用,當在輸入性別的時候,可以輸入簡單的數字就能夠顯示相對應的內容。 輸入1:男 輸入2:女 輸入3:第三性 <🖼️圖文教學> 選取要設定的範圍 右鍵 儲存格格式 自訂 輸入:[=1]男;[=2]女;第三性 這樣只要在儲存格內 輸入
Thumbnail
在工作情境中手動執行SQL語法更新中文字時,有時會遇到中文字顯示問號(?)的情況。這篇文章將介紹如何解決手動執行SQL語法時造成中文顯示問號(?)的方法。
Thumbnail
題目敘述 題目會給我們一組定義好的界面和需求,要求我們設計一個資料結構,可以滿足平均O(1)的插入元素、刪除元素、隨機取得元素的操作。 RandomizedSet() 類別建構子 bool insert(int val) 插入元素的function界面 bool remove(int val
Thumbnail
有個簡單的方法,把儲存格的文字串連起來!一起來看看怎麼做,很好操作唷!
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
這篇文章主要是介紹了SQL查詢效能調校的方法,針對索引最佳化做了整理和分享,並提供了一些注意事項和建議。
Thumbnail
在進行SQL查詢邏輯更改時,需要適當地使用SubQuery和join來達到新的排序需求。本文將介紹原本的撈取邏輯、需求以及如何使用SubQuery來解決新的排序需求。
如何在SQL實踐中EXCEL 常用功能 篩選 和 擷取文字串?需要熟練地使用分組(GROUP BY) 與 排序 (ORDER BY) 以及SUBSTRING_INDEX函數!
Thumbnail
這集介紹到儲存格格式設定的應用,當在輸入性別的時候,可以輸入簡單的數字就能夠顯示相對應的內容。 輸入1:男 輸入2:女 輸入3:第三性 <🖼️圖文教學> 選取要設定的範圍 右鍵 儲存格格式 自訂 輸入:[=1]男;[=2]女;第三性 這樣只要在儲存格內 輸入
Thumbnail
在工作情境中手動執行SQL語法更新中文字時,有時會遇到中文字顯示問號(?)的情況。這篇文章將介紹如何解決手動執行SQL語法時造成中文顯示問號(?)的方法。
Thumbnail
題目敘述 題目會給我們一組定義好的界面和需求,要求我們設計一個資料結構,可以滿足平均O(1)的插入元素、刪除元素、隨機取得元素的操作。 RandomizedSet() 類別建構子 bool insert(int val) 插入元素的function界面 bool remove(int val
Thumbnail
有個簡單的方法,把儲存格的文字串連起來!一起來看看怎麼做,很好操作唷!