INSERT INTO VALUES() 語句
我們弄清楚瞭如何創建表,現在讓我們詳細了解如何使用 SQL 查詢向表中添加數據。
事實上,這樣做非常簡單,但有幾個細微差別。向表中插入數據的最簡單選項需要指定兩件事:
- 列名
- 列值(數據)
必須指定列名,因為很多時候列都有默認值,在插入數據時沒有指定。通常每個表都有至少一個這樣的列,例如行 ID。
向表中插入數據的查詢的一般形式如下所示:
INSERT INTO table (column1, column2, column3) VALUES
(value1, value2, value3),
(value1, value2, value3),
(value1, value2, value3);
例如,如果要向用戶表中插入一條新記錄,則查詢如下所示:
INSERT INTO user (name, level, created_time) VALUES
('Rabinovich', 5, ‘2022-06-06’);
插入 SELECT 語句
將數據插入表的另一種常見情況是從另一個表、模式甚至 DBMS 中獲取數據。
為此,還有另一種 INSERT INTO 查詢格式,在這種格式中,您可以指定一個查詢來選擇數據,而不是 VALUES 部分。
這種請求的一般形式是:
INSERT INTO table (column1, column2, column3)
SELECT-request;
讓我們編寫一個查詢,將 employee 表中的所有用戶添加到 user 表中:
INSERT INTO user (name, created_time)
SELECT employee.name, employee.join_date
FROM employee;
我們在員工表中有各種數據,但我們只從中選擇了兩個字段——姓名和到達公司的時間。
此外,用戶表要求您指定用戶級別 - 級別。僱員在僱員表中沒有級別,因此我們將使用用戶表具有級別字段默認值的事實。我們只是不指定級別,SQL 將設置默認值。
假設我們對默認值不滿意,希望級別為99,將user.created_time替換為今天的日期,那麼我們可以這樣寫:
INSERT INTO user (name, level, created_time)
SELECT employee.name, 99, CURDATE()
FROM employee;
可以做的還有很多,但我認為現在就足夠了。您可以在官方 MySQL 頁面上閱讀更多內容。
GO TO FULL VERSION