
- SQL 教程
- SQL - 首頁
- SQL - 概述
- SQL - RDBMS 概念
- SQL - 資料庫
- SQL - 語法
- SQL - 資料型別
- SQL - 運算子
- SQL - 表示式
- SQL 資料庫
- SQL - 建立資料庫
- SQL - 刪除資料庫
- SQL - 選擇資料庫
- SQL - 重新命名資料庫
- SQL - 顯示資料庫
- SQL - 備份資料庫
- SQL 表格
- SQL - 建立表格
- SQL - 顯示錶格
- SQL - 重命名錶格
- SQL - 清空表格
- SQL - 克隆表格
- SQL - 臨時表格
- SQL - 修改表格
- SQL - 刪除表格
- SQL - 刪除表格
- SQL - 約束
- SQL 查詢
- SQL - 插入查詢
- SQL - 選擇查詢
- SQL - 選擇到
- SQL - 插入到選擇
- SQL - 更新查詢
- SQL - 刪除查詢
- SQL - 排序結果
- SQL 檢視
- SQL - 建立檢視
- SQL - 更新檢視
- SQL - 刪除檢視
- SQL - 重新命名檢視
- SQL 運算子和子句
- SQL - WHERE 子句
- SQL - TOP 子句
- SQL - DISTINCT 子句
- SQL - ORDER BY 子句
- SQL - GROUP BY 子句
- SQL - HAVING 子句
- SQL - AND & OR
- SQL - 布林 (BIT) 運算子
- SQL - LIKE 運算子
- SQL - IN 運算子
- SQL - ANY, ALL 運算子
- SQL - EXISTS 運算子
- SQL - CASE
- SQL - NOT 運算子
- SQL - 不等於
- SQL - IS NULL
- SQL - IS NOT NULL
- SQL - NOT NULL
- SQL - BETWEEN 運算子
- SQL - UNION 運算子
- SQL - UNION 與 UNION ALL
- SQL - INTERSECT 運算子
- SQL - EXCEPT 運算子
- SQL - 別名
- SQL 連線
- SQL - 使用連線
- SQL - 內連線
- SQL - 左連線
- SQL - 右連線
- SQL - 交叉連線
- SQL - 全連線
- SQL - 自連線
- SQL - 刪除連線
- SQL - 更新連線
- SQL - 左連線與右連線
- SQL - UNION 與 JOIN
- SQL 鍵
- SQL - 唯一鍵
- SQL - 主鍵
- SQL - 外部索引鍵
- SQL - 複合鍵
- SQL - 備用鍵
- SQL 索引
- SQL - 索引
- SQL - 建立索引
- SQL - 刪除索引
- SQL - 顯示索引
- SQL - 唯一索引
- SQL - 叢集索引
- SQL - 非叢集索引
- 高階 SQL
- SQL - 萬用字元
- SQL - 註釋
- SQL - 注入
- SQL - 託管
- SQL - MIN & MAX
- SQL - NULL 函式
- SQL - 檢查約束
- SQL - 預設約束
- SQL - 儲存過程
- SQL - NULL 值
- SQL - 事務
- SQL - 子查詢
- SQL - 處理重複項
- SQL - 使用序列
- SQL - 自動遞增
- SQL - 日期和時間
- SQL - 遊標
- SQL - 公共表表達式
- SQL - GROUP BY 與 ORDER BY
- SQL - IN 與 EXISTS
- SQL - 資料庫調優
- SQL 函式參考
- SQL - 日期函式
- SQL - 字串函式
- SQL - 聚合函式
- SQL - 數值函式
- SQL - 文字和影像函式
- SQL - 統計函式
- SQL - 邏輯函式
- SQL - 遊標函式
- SQL - JSON 函式
- SQL - 轉換函式
- SQL - 資料型別函式
- SQL 有用資源
- SQL - 問答
- SQL - 快速指南
- SQL - 有用函式
- SQL - 有用資源
- SQL - 討論
SQL - 插入資料到…選擇語句
插入資料到…選擇語句
SQL 的INSERT INTO... SELECT語句用於從現有表中新增/插入一行或多行到另一個表。此語句是兩個不同語句的組合:INSERT INTO 和 SELECT。
INSERT INTO 語句是資料庫管理中最基本和最常用的語句之一,只需要表名和要插入的值。但是,務必確保插入的資料滿足表列(如果有)的約束條件,並且其型別與表列的資料型別匹配。
SELECT 語句用於從現有的資料庫表中檢索資料。
當這兩個語句一起使用時,SELECT 語句首先從現有表中檢索資料,然後 INSERT INTO 語句將檢索到的資料插入到另一個表中(如果它們具有相同的表結構)。
語法
以下是 SQL INSERT INTO... SELECT 語句的語法:
INSERT INTO table_new SELECT (column1, column2, ...columnN) FROM table_old;
在使用此查詢之前,我們必須確保:
在我們即將插入資料的資料庫中,源表和目標表已經存在。
源表和目標表的結構相同。
示例
假設我們建立了一個名為CUSTOMERS的表,其中包含客戶的個人詳細資訊,包括他們的姓名、年齡、地址和工資等,如下所示:
CREATE TABLE CUSTOMERS ( ID INT NOT NULL, NAME VARCHAR (20) NOT NULL, AGE INT NOT NULL, ADDRESS CHAR (25), SALARY DECIMAL (18, 2), PRIMARY KEY (ID) );
現在,使用 INSERT 語句將值插入此表,如下所示:
INSERT INTO CUSTOMERS VALUES (1, 'Ramesh', 32, 'Ahmedabad', 2000.00), (2, 'Khilan', 25, 'Delhi', 1500.00), (3, 'Kaushik', 23, 'Kota', 2000.00), (4, 'Chaitali', 25, 'Mumbai', 6500.00), (5, 'Hardik', 27, 'Bhopal', 8500.00), (6, 'Komal', 22, 'Hyderabad', 4500.00), (7, 'Muffy', 24, 'Indore', 10000.00);
表將建立為:
ID | 姓名 | 年齡 | 地址 | 工資 |
---|---|---|---|---|
1 | Ramesh | 32 | Ahmedabad | 2000.00 |
2 | Khilan | 25 | Delhi | 1500.00 |
3 | Kaushik | 23 | Kota | 2000.00 |
4 | Chaitali | 25 | Mumbai | 6500.00 |
5 | Hardik | 27 | Bhopal | 8500.00 |
6 | Komal | 22 | Hyderabad | 4500.00 |
7 | Muffy | 24 | Indore | 10000.00 |
建立另一個名為BUYERS的表,其結構與 CUSTOMERS 表相同。
CREATE TABLE BUYERS ( ID INT NOT NULL, NAME VARCHAR (20) NOT NULL, AGE INT NOT NULL, ADDRESS CHAR (25), SALARY DECIMAL (18, 2), PRIMARY KEY (ID) );
以下查詢將CUSTOMERS表中的所有記錄複製到BUYERS:
INSERT INTO BUYERS SELECT * FROM CUSTOMERS;
驗證
如果您使用 SELECT 語句驗證 BUYERS 表的內容,如下所示:
SELECT * FROM BUYERS;
表將建立為:
ID | 姓名 | 年齡 | 地址 | 工資 |
---|---|---|---|---|
1 | Ramesh | 32 | Ahmedabad | 2000.00 |
2 | Khilan | 25 | Delhi | 1500.00 |
3 | Kaushik | 23 | Kota | 2000.00 |
4 | Chaitali | 25 | Mumbai | 6500.00 |
5 | Hardik | 27 | Bhopal | 8500.00 |
6 | Komal | 22 | Hyderabad | 4500.00 |
7 | Muffy | 24 | Indore | 10000.00 |
SQL - 插入特定記錄
有時我們只需要將少量記錄新增到另一個表中。這可以透過使用 WHERE 子句以及 SQL INSERT INTO... SELECT 語句來實現。
示例
讓我們使用 CREATE 語句建立一個名為NAMESTARTSWITH_K的表,其結構與 CUSTOMER 表相同,如下所示:
CREATE TABLE NAMESTARTSWITH_K ( ID INT NOT NULL, NAME VARCHAR (20) NOT NULL, AGE INT NOT NULL, ADDRESS CHAR (25), SALARY DECIMAL (18, 2), PRIMARY KEY (ID) );
以下查詢將姓名以字母k開頭的客戶的記錄從 CUSTOMERS 表插入到 BUYERS 表:
INSERT INTO NAMESTARTSWITH_K SELECT * FROM CUSTOMERS WHERE NAME LIKE 'k%';
驗證
以下是用於驗證上面建立的表內容的 SELECT 語句:
SELECT * FROM NAMESTARTSWITH_K;
表將建立為:
ID | 姓名 | 年齡 | 地址 | 工資 |
---|---|---|---|---|
2 | Khilan | 25 | Delhi | 1500.00 |
3 | Kaushik | 23 | Kota | 2000.00 |
6 | Komal | 22 | Hyderabad | 4500.00 |
SQL - 插入前 N 行
LIMIT 子句過濾查詢中的行數。您可以使用它來過濾應新增到目標表的前 N 條記錄。
示例
但是,在繼續之前,讓我們使用以下語句清空 BUYERS 表中的所有行:
TRUNCATE TABLE BUYERS;
以下查詢將 CUSTOMERS 表中的前 3 條記錄插入到 BUYERS 表:
INSERT INTO BUYERS SELECT * FROM CUSTOMERS ORDER BY ID ASC LIMIT 3;
驗證
讓我們驗證 BUYERS 表的內容:
SELECT * FROM BUYERS;
結果表將如下所示:
ID | 姓名 | 年齡 | 地址 | 工資 |
---|---|---|---|---|
1 | Ramesh | 32 | Ahmedabad | 2000.00 |
2 | Khilan | 25 | Delhi | 1500.00 |
3 | Kaushik | 23 | Kota | 2000.00 |