INSERT
SQL As Understood By SQLite
[Top]
INSERT
insert-stmt:
hide
expr:
show
literal-value:
show
raise-function:
show
type-name:
show
signed-number:
show
select-stmt:
show
common-table-expression:
show
compound-operator:
show
join-clause:
show
join-constraint:
show
join-operator:
show
ordering-term:
show
result-column:
show
table-or-subquery:
show
with-clause:
show
cte-table-name:
show
INSERT 语句有三种基本形式。
INSERT INTO
table
VALUES(...
INSERT INTO
table
SELECT ...;
INSERT 语句的第二种形式包含一个 SELECT 语句,而不是一个 VALUES 子句。为执行 SELECT 语句返回的每一行数据插入一个新条目。如果指定了列表,那么 SELECT 结果中的列数必须与列列表中的项数相同。否则,如果未指定 column-list,那么SELECT的结果中的列数必须与表中的列数相同。任何 SELECT 语句,包括带有 ORDER BY 和/或 LIMIT 子句的复合 SELECT 和 SELECT 语句,都可以用在这种形式的 INSERT 语句中。
INSERT INTO
table
DEFAULT VALUES;
INSERT 语句的第三种形式是使用 DEFAULT VALUES。INSERT DEFAULT VALUES 语句将一个新行插入到指定的表中。如果在 CREATE TABLE 语句中没有指定任何默认值作为列定义的一部分,则新行的每一列都将填充其默认值,或者填充为 NULL。
初始的 “INSERT” 关键字可以替换为 “REPLACE” 或 “INSERT OR action ” 来指定在 INSERT 命令期间使用的备选约束冲突解决算法。为了与 MySQL 兼容,解析器允许使用单个关键字 REPLACE 作为 “INSERT OR REPLACE” 的别名。
可选的“schema-name.
”在表名前缀仅支持顶级 INSERT 语句。对于在 CREATE TRIGGER 语句中发生的 INSERT 语句,表名必须是非限定的。同样,INSERT 语句的 “DEFAULT VALUES” 形式仅支持顶级 INSERT 语句,而不支持触发器中的 INSERT 语句。