- MySQL 基礎
- MySQL - 首頁
- MySQL - 簡介
- MySQL - 特性
- MySQL - 版本
- MySQL - 變數
- MySQL - 安裝
- MySQL - 管理
- MySQL - PHP 語法
- MySQL - Node.js 語法
- MySQL - Java 語法
- MySQL - Python 語法
- MySQL - 連線
- MySQL - Workbench
- MySQL 資料庫
- MySQL - 建立資料庫
- MySQL - 刪除資料庫
- MySQL - 選擇資料庫
- MySQL - 顯示資料庫
- MySQL - 複製資料庫
- MySQL - 資料庫匯出
- MySQL - 資料庫匯入
- MySQL - 資料庫資訊
- MySQL 使用者
- MySQL - 建立使用者
- MySQL - 刪除使用者
- MySQL - 顯示使用者
- MySQL - 修改密碼
- MySQL - 授權
- MySQL - 顯示許可權
- MySQL - 收回許可權
- MySQL - 鎖定使用者帳戶
- MySQL - 解鎖使用者帳戶
- MySQL 表
- MySQL - 建立表
- MySQL - 顯示錶
- MySQL - 修改表
- MySQL - 重命名錶
- MySQL - 克隆表
- MySQL - 截斷表
- MySQL - 臨時表
- MySQL - 修復表
- MySQL - 描述表
- MySQL - 新增/刪除列
- MySQL - 顯示列
- MySQL - 重新命名列
- MySQL - 表鎖定
- MySQL - 刪除表
- MySQL - 派生表
- MySQL 查詢
- MySQL - 查詢
- MySQL - 約束
- MySQL - INSERT 查詢
- MySQL - SELECT 查詢
- MySQL - UPDATE 查詢
- MySQL - DELETE 查詢
- MySQL - REPLACE 查詢
- MySQL - INSERT IGNORE
- MySQL - INSERT ON DUPLICATE KEY UPDATE
- MySQL - INSERT INTO SELECT
- MySQL 運算子和子句
- MySQL - WHERE 子句
- MySQL - LIMIT 子句
- MySQL - DISTINCT 子句
- MySQL - ORDER BY 子句
- MySQL - GROUP BY 子句
- MySQL - HAVING 子句
- MySQL - AND 運算子
- MySQL - OR 運算子
- MySQL - LIKE 運算子
- MySQL - IN 運算子
- MySQL - ANY 運算子
- MySQL - EXISTS 運算子
- MySQL - NOT 運算子
- MySQL - 不等於運算子 (!= 或 <>)
- MySQL - IS NULL 運算子
- MySQL - IS NOT NULL 運算子
- MySQL - BETWEEN 運算子
- MySQL - UNION 運算子
- MySQL - UNION 與 UNION ALL
- MySQL - MINUS 運算子
- MySQL - INTERSECT 運算子
- MySQL - INTERVAL 運算子
- MySQL 連線
- MySQL - 使用連線
- MySQL - INNER JOIN
- MySQL - LEFT JOIN
- MySQL - RIGHT JOIN
- MySQL - CROSS JOIN
- MySQL - FULL JOIN
- MySQL - 自連線
- MySQL - DELETE JOIN
- MySQL - UPDATE JOIN
- MySQL - UNION 與 JOIN
- MySQL 觸發器
- MySQL - 觸發器
- MySQL - 建立觸發器
- MySQL - 顯示觸發器
- MySQL - 刪除觸發器
- MySQL - BEFORE INSERT 觸發器
- MySQL - AFTER INSERT 觸發器
- MySQL - BEFORE UPDATE 觸發器
- MySQL - AFTER UPDATE 觸發器
- MySQL - BEFORE DELETE 觸發器
- MySQL - AFTER DELETE 觸發器
- MySQL 資料型別
- MySQL - 資料型別
- MySQL - VARCHAR
- MySQL - BOOLEAN
- MySQL - ENUM
- MySQL - DECIMAL
- MySQL - INT
- MySQL - FLOAT
- MySQL - BIT
- MySQL - TINYINT
- MySQL - BLOB
- MySQL - SET
- MySQL 正則表示式
- MySQL - 正則表示式
- MySQL - RLIKE 運算子
- MySQL - NOT LIKE 運算子
- MySQL - NOT REGEXP 運算子
- MySQL - regexp_instr() 函式
- MySQL - regexp_like() 函式
- MySQL - regexp_replace() 函式
- MySQL - regexp_substr() 函式
- MySQL 函式與運算子
- MySQL - 日期和時間函式
- MySQL - 算術運算子
- MySQL - 數值函式
- MySQL - 字串函式
- MySQL - 聚合函式
- MySQL 其他概念
- MySQL - NULL 值
- MySQL - 事務
- MySQL - 使用序列
- MySQL - 處理重複資料
- MySQL - SQL 注入
- MySQL - 子查詢
- MySQL - 註釋
- MySQL - 檢查約束
- MySQL - 儲存引擎
- MySQL - 將表匯出到 CSV 檔案
- MySQL - 將 CSV 檔案匯入資料庫
- MySQL - UUID
- MySQL - 通用表表達式 (CTE)
- MySQL - ON DELETE CASCADE
- MySQL - Upsert (插入或更新)
- MySQL - 水平分割槽
- MySQL - 垂直分割槽
- MySQL - 遊標
- MySQL - 儲存函式
- MySQL - SIGNAL
- MySQL - RESIGNAL
- MySQL - 字元集
- MySQL - 排序規則
- MySQL - 萬用字元
- MySQL - 別名
- MySQL - ROLLUP
- MySQL - 獲取當前日期
- MySQL - 字面量
- MySQL - 儲存過程
- MySQL - EXPLAIN
- MySQL - JSON
- MySQL - 標準差
- MySQL - 查詢重複記錄
- MySQL - 刪除重複記錄
- MySQL - 選擇隨機記錄
- MySQL - SHOW PROCESSLIST
- MySQL - 修改列型別
- MySQL - 重置自動遞增
- MySQL - COALESCE() 函式
- MySQL 有用資源
- MySQL - 有用函式
- MySQL - 語句參考
- MySQL - 快速指南
- MySQL - 有用資源
- MySQL - 討論
MySQL - INSERT 語句
MySQL INSERT 語句
您可以使用 INSERT 語句向 MySQL 中的現有表新增新行。在此過程中,您需要指定表名、列名和值(列名的順序相同)。
語法
以下是 MySQL INSERT 語句的語法。
INSERT INTO table_name (column1, column2, column3,...columnN) VALUES (value1, value2, value3,...valueN);
其中,table_name 是您需要插入資料的表名,(column1, column2, column3,...columnN) 是列名,(value1, value2, value3,...valueN) 是記錄中的值。
示例
假設我們使用 CREATE TABLE 語句在 MySQL 資料庫中建立了一個名為 **Sales** 的表,如下所示
CREATE TABLE sales( ID INT, ProductName VARCHAR(255), CustomerName VARCHAR(255), DispatchDate date, DeliveryTime time, Price INT, Location VARCHAR(255) );
以下查詢在上面建立的表中插入一行:
Insert into sales values
(1, 'Key-Board', 'Raja', DATE('2019-09-01'), TIME('11:00:00'), 7000,
'Hyderabad');
如果您按照表中的順序將值傳遞給 INSERT 語句,則可以省略列名:
Insert into sales values(2, 'Earphones', 'Roja', DATE('2019-05-01'),
TIME('11:00:00'), 2000, 'Vishakhapatnam');
現在,讓我們在 **Sales** 表中再插入 3 條記錄。
Insert into sales values
(3, 'Mouse', 'Puja', DATE('2019-03-01'), TIME('10:59:59'),
3000, 'Vijayawada'),
(4, 'Mobile', 'Vanaja', DATE('2019-03-01'), TIME('10:10:52'),
9000, 'Chennai'),
(5, 'Headset', 'Jalaja', DATE('2019-04-06'), TIME('11:08:59'),
6000, 'Goa');
驗證
如果您使用 SELECT 語句驗證 Sales 表的內容,您可以觀察到已插入的記錄,如下所示:
SELECT * FROM SALES;
輸出
以上查詢將產生以下輸出:
| ID | 產品名稱 | 客戶名稱 | 發貨日期 | 送達時間 | 價格 | 地點 |
|---|---|---|---|---|---|---|
| 1 | 鍵盤 | Raja | 2019-09-01 | 11:00:00 | 7000 | 海德拉巴 |
| 2 | 耳機 | Roja | 2019-05-01 | 11:00:00 | 2000 | 維沙卡帕特南 |
| 3 | 滑鼠 | Puja | 2019-03-01 | 10:59:59 | 3000 | 維傑亞瓦達 |
| 4 | 手機 | Vanaja | 2019-03-01 | 10:10:52 | 9000 | 金奈 |
| 5 | 耳機 | Jalaja | 2019-04-06 | 11:08:59 | 6000 | 果阿 |
INSERT ... SET
您可以使用 INSERT...SET 語句將值設定為選定的列來插入記錄。以下是此語句的語法:
INSERT INTO table_name SET column_name1 = value1, column_name2=value2s...;
其中,table_name 是您需要向其中插入記錄的表名,column_name1 = value1, column_name2 = value2 ...... 是選定的列名及其相應的值。
如果您使用此語句插入記錄,則其他列的值將為 null。
示例
以下查詢使用 INSERT...SET 語句將記錄插入 SALES 表。在這裡,我們只向 ProductName、CustomerName 和 Price 列傳遞值(其餘值為 NULL):
INSERT INTO SALES SET ID = 6, ProductName = 'Speaker', CustomerName = 'Rahman', Price = 5500;
驗證
如果您使用 SELECT 語句檢索 SALES 表的內容,您可以觀察到已插入的行,如下所示
SELECT * FROM SALES;
輸出
以下是上述程式的輸出:
| ID | 產品名稱 | 客戶名稱 | 發貨日期 | 送達時間 | 價格 | 地點 |
|---|---|---|---|---|---|---|
| 1 | 鍵盤 | Raja | 2019-09-01 | 11:00:00 | 7000 | 海德拉巴 |
| 2 | 耳機 | Roja | 2019-05-01 | 11:00:00 | 2000 | 維沙卡帕特南 |
| 3 | 滑鼠 | Vanaja | 2019-03-01 | 10:59:59 | 3000 | 維傑亞瓦達 |
| 4 | 手機 | Vanaja | 2019-03-01 | 10:10:52 | 9000 | 金奈 |
| 5 | 耳機 | Jalaja | 2019-04-06 | 11:08:59 | 6000 | 果阿 |
| 6 | 揚聲器 | Rahman | NULL | NULL | 5500 | NULL |
INSERT .... SELECT
您可以從一個表中選擇所需的列值,並將它們作為記錄插入另一個表中,使用 INSERT .... SELECT 語句,以下是執行此操作的語法:
INSERT INTO table_to (column1, column2,....) SELECT Column1, column2 ..... FROM Table_from WHERE condition
示例
假設我們建立了一個表,其中包含銷售詳情以及客戶的聯絡詳情,如下所示:
CREATE TABLE SALES_DETAILS ( ID INT, ProductName VARCHAR(255), CustomerName VARCHAR(255), DispatchDate date, DeliveryTime time, Price INT, Location VARCHAR(255), CustomerAge INT, CustomrtPhone BIGINT, DispatchAddress VARCHAR(255), Email VARCHAR(50) );
現在,讓我們使用 INSERT 語句在上面建立的表中插入 2 條記錄,如下所示:
Insert into SALES_DETAILS values
(1, 'Key-Board', 'Raja', DATE('2019-09-01'), TIME('11:00:00'), 7000,
'Hyderabad',25,'9000012345','Hyderabad - Madhapur','pujasharma@gmail.com'),
(2, 'Mobile','Vanaja', DATE('2019-03-01'), TIME('10:10:52'), 9000,
'Chennai',30,'90000123654','Chennai- TNagar','vanajarani@gmail.com');
如果我們想要另一個只包含客戶聯絡詳情的表,則建立一個表,如下所示:
CREATE TABLE CustContactDetails ( ID INT, Name VARCHAR(255), Age INT, Phone BIGINT, Address VARCHAR(255), Email VARCHAR(50) );
以下查詢使用 INSERT INTO SELECT 語句將記錄插入 CustContactDetails 表。在這裡,我們嘗試將 SALES_DETAILS 表中的記錄插入 CustContactDetails 表:
INSERT INTO CustContactDetails (ID, Name, Age, Phone, Address, Email) SELECT ID, CustomerName, CustomerAge, CustomrtPhone, DispatchAddress, Email FROM SALES_DETAILS WHERE ID = 1 AND CustomerName = 'Raja'; INSERT INTO CustContactDetails (ID, Name, Age, Phone, Address, Email) SELECT ID, CustomerName, CustomerAge, CustomrtPhone, DispatchAddress, Email FROM SALES_DETAILS WHERE ID = 2 AND CustomerName = 'Vanaja';
驗證
您可以驗證 CustContactDetails 表的內容,如下所示:
SELECT * FROM CustContactDetails;
輸出
上述 mysql 查詢將生成以下輸出:
| ID | 姓名 | 年齡 | 電話 | 地址 | 郵箱 |
|---|---|---|---|---|---|
| 1 | Raja | 25 | 9000012345 | 海德拉巴 - Madhapur | pujasharma@gmail.com |
| 2 | Vanaja | 30 | 90000123654 | 金奈 - TNagar | vanajarani@gmail.com |
INSERT ... TABLE
另一方面,您可以使用 INSERT...TABLE 語句將一個表的內容插入另一個表中,而不是選擇特定列。以下是執行此操作的語法:
INSERT INTO table1 TABLE table2;
示例
假設我們使用以下 CREATE 語句建立了一個名為 student 的表:
Create table Student( Name Varchar(35), age INT, Score INT );
現在,讓我們向 student 表中插入四條記錄:
INSERT INTO student values
('Jeevan', 22, 8),
('Raghav', 26, -3),
('Khaleel', 21, -9),
('Deva', 30, 9);
假設我們還有另一個名為 columns and types 的表,建立如下:
Create table Data( Name Varchar(35), Age INT, Score INT );
以下查詢將 Student 表的內容插入 Data 表:
INSERT INTO Data TABLE Student;
驗證
如果您使用 SELECT 語句驗證 Data 表的內容,您可以觀察到已插入的資料,如下所示:
SELECT * FROM data;
輸出
以上查詢將產生以下輸出:
| 姓名 | 年齡 | 分數 |
|---|---|---|
| Jeevan | 22 | 8 |
| Raghav | 26 | -3 |
| Khaleel | 21 | -9 |
| Deva | 30 | 9 |
INSERT ... ON DUPLICATE KEY UPDATE 語句
如果表的列之一具有 UNIQUE 或 PRIMARY KEY 約束,並且如果您使用 **ON DUPLICATE KEY UPDATE** 子句以及 **INSERT** 語句將記錄插入該特定表中,如果在具有任一約束的列下傳遞的值是重複的,則不會新增新記錄,而是會更新舊記錄。
語法
以下是 INSERT ... ON DUPLICATE KEY UPDATE 語句的語法:
INSERT INTO table_name (column1, column2,....) VALUES (value1, value2,....) ON DUPLICATE KEY UPDATE update_statement;
示例
假設我們建立了一個名為 empData 的表,並將 ID 列宣告為 UNIQUE,如下所示:
CREATE TABLE empData ( ID INT UNIQUE, Name VARCHAR(15), email VARCHAR(15), salary INT );
以下查詢使用 update 子句將記錄插入上述表:
INSERT INTO empData VALUES (1, 'Raja', 'raja@gmail.com', 2215) ON DUPLICATE KEY UPDATE salary = salary+ salary;
插入操作之後,empData 表的內容將如下所示:
SELECT * FROM empData;
輸出
以下是上述 MySQL 查詢的結果:
| ID | 姓名 | 郵箱 | 薪資 |
|---|---|---|---|
| 1 | Raja | raja@gmail.com | 2215 |
如果您再次執行上述語句,由於 ID 值為 1 的記錄已存在,則不會插入新記錄,而是在現有薪資的基礎上新增語句中的薪資值。
INSERT INTO empData VALUES (1, 'Raja', 'raja@gmail.com', 2215) ON DUPLICATE KEY UPDATE salary = salary+ salary;
插入操作之後,empData 表的內容將如下所示:
SELECT * FROM empData;
輸出
上述查詢生成以下輸出:
| ID | 姓名 | 郵箱 | 薪資 |
|---|---|---|---|
| 1 | Raja | raja@gmail.com | 4430 |