创建表时,它不包含任何数据。在数据库发挥作用之前要做的第一件事就是插入数据。数据一次插入一行。您还可以在单个命令中插入多行,但不能插入不完整的行。即使您只知道某些列值,也必须创建完整的行。
要创建新行,请使用 INSERT 命令。该命令需要表名和列值。例如:
CREATE TABLE products ( product_no integer, name text, price numeric ); INSERT INTO products VALUES (1, 'Cheese', 9.99);
数据值按列在表中出现的顺序列出,用逗号分隔。通常,数据值将是文字(常量),但也允许使用标量表达式。
上述语法的缺点是您需要知道表中列的顺序。为避免这种情况,您还可以显式列出列。例如,以下两个命令与上述命令具有相同的效果:
INSERT INTO products (product_no, name, price) VALUES (1, 'Cheese', 9.99); INSERT INTO products (name, price, product_no) VALUES ('Cheese', 9.99, 1);
如果您没有所有列的值,则可以省略其中的一些。在这种情况下,这些列将填充它们的默认值。例如:
INSERT INTO products (product_no, name) VALUES (1, 'Cheese'); INSERT INTO products VALUES (1, 'Cheese');
第二种形式是 PostgreSQL 扩展。它用给定的尽可能多的值填充左侧的列,其余的将是默认值。
为清楚起见,您还可以为单个列或整行显式请求默认值:
INSERT INTO products (product_no, name, price) VALUES (1, 'Cheese', DEFAULT); INSERT INTO products DEFAULT VALUES;
您可以在单个命令中插入多行:
INSERT INTO products (product_no, name, price) VALUES (1, 'Cheese', 9.99), (2, 'Bread', 1.99), (3, 'Milk', 2.99);
也可以插入查询的结果(可能是无行、一行或多行):
INSERT INTO products (product_no, name, price) SELECT product_no, name, price FROM new_products WHERE release_date = 'today';