向表中插入數據

開放

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 頁面上閱讀更多內容。

留言
  • 受歡迎
你必須登入才能留言
此頁面尚無留言