结构化查询语言(Structured Query Language)
Completion requirements
提示:小心并关闭 AUTOCOMMIT。
INSERT 命令用于向表中存储一行或多行新数据。这些新行的内容可以是固定值,也可以是运行时由 SELECT 语句计算的结果。因此,INSERT 命令有两种语法形式:静态插入和动态插入。
静态插入
静态插入的语法如下:
-- INSERT 命令的静态版本
INSERT INTO <tablename> (<list_of_columnnames>)
VALUES (<list_of_values>),
(<list_of_values>),
(<list_of_values>),
... ;
在表名后列出需要插入的列名,VALUES
关键字之后提供一列或多列的值列表。每个值列表表示一行新数据。列名与值列表的数量必须一致,数据类型也需匹配。
示例 1:插入一行数据
INSERT INTO person (id, firstname, lastname, date_of_birth, place_of_birth, ssn, weight)
VALUES (91, 'Larry, no. 91', 'Goldstein', DATE'1970-11-20', 'Dallas', '078-05-1120', 95);
COMMIT;
示例 2:插入多行数据
INSERT INTO person (id, firstname, lastname, date_of_birth, place_of_birth, ssn, weight)
VALUES (92, 'Larry, no. 92', 'Goldstein', DATE'1970-11-20', 'Dallas', '078-05-1120', 95),
(93, 'Larry, no. 93', 'Goldstein', DATE'1970-11-20', 'Dallas', '078-05-1120', 95),
(94, 'Larry, no. 94', 'Goldstein', DATE'1970-11-20', 'Dallas', '078-05-1120', 95);
COMMIT;
示例 3:列顺序任意
列的顺序可以随意更改,只要列名和值保持一致即可。
INSERT INTO person (date_of_birth, firstname, ssn, lastname, place_of_birth, weight, id)
VALUES (DATE'1970-11-20', 'Larry, no. 95', '078-05-1120', 'Goldstein', 'Dallas', 95, 95);
COMMIT;
示例 4:省略不必要的列
可以省略部分列,这些列会自动填充为默认值或 NULL
特殊标记(取决于 CREATE TABLE 声明)。
INSERT INTO person (id, firstname, lastname, weight)
VALUES (96, 'Larry, no. 96', 'Goldstein', 95);
COMMIT;
清理数据
要清理示例插入的数据,可以使用以下命令:
DELETE FROM person WHERE id BETWEEN 91 AND 96;
COMMIT;
动态插入
动态插入的值并非固定,而是运行时从其他表、函数或计算结果中获取。插入的行数也可以是动态的。在这种情况下,VALUES
子句将被替换为 SELECT 子查询。例如:
INSERT INTO person (id, firstname, lastname)
SELECT id, firstname, lastname
FROM another_table
WHERE some_condition;
动态插入的其他规则(如列数和顺序匹配)与静态插入一致。动态插入的更多用法将在 高级 INSERT 页面中详细讲解。
Last modified: Tuesday, 28 January 2025, 1:21 PM