返回介绍

I. 教程

II. SQL 语言

III. 服务器管理

IV. 客户端接口

V. 服务器端编程

VI. 参考手册

VII. 内部

VIII. 附录

6.1. 插入数据

发布于 2019-09-30 03:05:53 字数 1384 浏览 1026 评论 0 收藏 0

在创建完一个表的时候,它里面没有数据。在数据库可以有点用处之前要做的第一件事就是向里面插入数据。数据在概念上是每次插入一行。我们当然可以每次插入多行,但是确实没有办法一次插入少于一行的数据。即使你只知道几个字段的数值,那么你也必须创建一个完整的行。

使用 INSERT 命令创建一个新行。这条命令要求提供表名字以及表中每个字段的值。比如,假设来自章5的产品表:

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);

【提示】要一次插入大量数据,可以看看 COPY 命令。它不像 INSERT 命令那么灵活,但是更高效。参考节13.4获取更多有关装载海量数据的信息。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文