- 將指定的資料值插入資料表格內:
INSERT INTO 資料表名稱 [(資料欄位名稱, ...)] VALUES (資料欄位值, ...);
- 將SELECT執行結果插入資料表格內:
INSERT INTO 資料表名稱 [(資料欄位名稱, ...)] SELECT執行結果;
- 以資料表結構定義時所設定的預設值插入資料表格內:
INSERT INTO 資料表名稱 [(資料欄位名稱, ...)]DEFAULT VALUES;
[ WITH [ RECURSIVE ] cte-table-name AS (select-stmt), ...]
{INSERT | REPLACE | INSERT OR REPLACE | insert-type ... } INTO
資料表名稱 [AS 別名] [( 資料欄位名稱,...)] { [VALUES (資料值or運算式,) | select-stmt | DEFAULT VALUES}
ON CONFLICT [(索引欄位, ... ) | [WHERE 條件式] ]
DO { NOTHING | UPDATE SET 欄位名稱=運算式, ... [ WHERE 條件式 ]}
{INSERT | REPLACE | INSERT OR REPLACE | insert-type ... } INTO
資料表名稱 [AS 別名] [( 資料欄位名稱,...)] { [VALUES (資料值or運算式,) | select-stmt | DEFAULT VALUES}
ON CONFLICT [(索引欄位, ... ) | [WHERE 條件式] ]
DO { NOTHING | UPDATE SET 欄位名稱=運算式, ... [ WHERE 條件式 ]}
- cte : common table expression
- select-stmt : select statements
- insert-type : INSERT, REPLACE, INSERT OR REPLACE, INSERT OR ROLLBACK, INSERT OR ABORT, INSERT OR FAIL, INSERT OR IGNORE
- 如果主鍵的對應值存在,就REPLACE指定的資料值;如果主鍵的對應值不存在,就插入這筆資料。有效的利用這個語法規則,可以大大的降低程式設計的複雜度。
參考資料:
- SQL As Understood By SQLite : INSERT https://sqlite.org/lang_insert.html
- PostgreSQL: Documentation: 11: INSERT https://www.postgresql.org/docs/11/sql-insert.html