结构化查询语言/插入 1
外观
< 结构化查询语言
提示:小心并停用 AUTOCOMMIT。
INSERT 命令将一个或多个新行存储到一个表中。新行的内容由固定值或运行时评估的 SELECT 结果组成。因此,有两种不同的语法可以完成这项工作。
-- The static version of the INSERT command
INSERT INTO <tablename> (<list_of_columnnames>)
VALUES (<list_of_values>),
(<list_of_values>),
(<list_of_values>),
... ;
在表名之后,我们可以列出受影响的列,并在关键字 'VALUES' 之后声明一个或多个值列表以插入。每个值列表代表一行新行。列和值的列表必须一致,这样列表条目数量相同,数据类型相关联。
-- One value list results in one new row.
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;
-- The SQL standard - but not all implementations, in particular Oracle - supports a 'row value constructor' by
-- enumerate values inside a pair of parenthesis as shown in the above green box.
-- Three lists of values (= row value constructors) result in three new rows. Please note the comma after all
-- but the last one.
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;
我们可以选择任意列顺序,但列名和值必须一致。
-- Sometimes things are scrambled. Maybe confusing, but works fine. See weight and id.
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;
我们可以省略不必要的列。
-- Depending on CREATE TABLE statement the missing columns will get the 'null special marker' or a default value.
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;
与上一段不同,我们可以插入在运行时从任何表、函数或计算中评估的动态值,而不是固定值。即使新行的数量也可以是动态的。所有这些都在一个子选择中完成,它替换 VALUE 子句。我们在页面 高级插入 中解释了这种技术。有关列数和顺序或省略值的规则仍然有效。
为 Peter Hufington 先生插入一个新行,其体重为 67 公斤。他出生于洛杉矶。
点击查看解决方案
-- Choose any free id
INSERT INTO person (id, firstname, lastname, weight, place_of_birth)
VALUES (81, 'Peter, no. 81', 'Hufington', 67, 'Los Angeles');
COMMIT;
-- Check your result
SELECT * FROM person;