九月 4, 2023
摘要:在本教程中,您将学习如何使用 PostgreSQL 的INSERT
语句向表中插入新行。
目录
PostgreSQL INSERT 语句简介
PostgreSQL 的INSERT
语句允许您将新行插入表中。
下面说明了INSERT
语句最基本的语法:
INSERT INTO table_name(column1, column2, …)
VALUES (value1, value2, …);
在这个语法中:
- 首先,在
INSERT INTO
关键字后,指定要插入数据的表的名称 (table_name
) 以及逗号分隔列的列表 (colum1, column2, ....
)。 - 其次,在
VALUES
关键字后面的括号中提供逗号分隔值的列表(value1, value2, ...)
。列和值列表中的列和值必须具有相同的顺序。
INSERT
语句返回一个命令标记,格式如下:
INSERT oid count
OID
是一个对象标识符。PostgreSQL在内部使用OID
作为其系统表的主键。通常,INSERT
语句返回OID
值 0。count
是INSERT
语句成功插入的行数。
RETURNING 子句
INSERT
语句还有一个可选的RETURNING
子句,用于返回插入行的信息。
如果要返回整个插入行,请在RETURNING
关键字后使用星号 (*
):
INSERT INTO table_name(column1, column2, …)
VALUES (value1, value2, …)
RETURNING *;
如果只想返回插入行的部分信息,可以在RETURNING
子句后指定一列或多列。
例如,以下语句返回插入行的id
:
INSERT INTO table_name(column1, column2, …)
VALUES (value1, value2, …)
RETURNING id;
要重命名返回值,请使用AS
关键字,后跟输出名称。例如:
INSERT INTO table_name(column1, column2, …)
VALUES (value1, value2, …)
RETURNING output_expression AS output_name;
PostgreSQL INSERT 语句示例
以下语句创建一个新表,名为links
,用于演示:
DROP TABLE IF EXISTS links;
CREATE TABLE links (
id SERIAL PRIMARY KEY,
url VARCHAR(255) NOT NULL,
name VARCHAR(255) NOT NULL,
description VARCHAR (255),
last_update DATE
);
请注意,您将在后续教程中学习如何创建新表。在本教程中,您只需执行它即可创建一个新表。
1) PostgreSQL INSERT – 将单行插入表中
以下语句将新行插入links
表中:
INSERT INTO links (url, name)
VALUES('https://www.rockdata.net/tutorial/','PostgreSQL Tutorial');
该语句返回以下输出:
INSERT 0 1
要插入字符数据,请将其括在单引号 (’) 中,例如'PostgreSQL Tutorial'
。
如果在INSERT
语句中省略必需的列,PostgreSQL 将发出错误。如果省略可选列,PostgreSQL 将使用列默认值进行插入。
在此示例中,description
是可选列,因为它没有NOT NULL
约束。因此,PostgreSQL 使用NULL
插入到description
列中。
PostgreSQL 自动为序列列生成序列号,因此您不必在INSERT
语句中为序列列提供值。
下面的SELECT
语句显示了links
表的内容:
SELECT * FROM links;
2) PostgreSQL INSERT – 插入包含单引号的字符串
如果要插入包含单引号 ('
) 的字符串,例如O'Reilly Media
,则必须使用额外的单引号 ('
) 对其进行转义。例如:
INSERT INTO links (url, name)
VALUES('http://www.oreilly.com','O''Reilly Media');
输出:
INSERT 0 1
以下语句验证插入:
3) PostgreSQL INSERT – 插入日期值
要将日期值插入到类型为DATE
的列中,请使用'YYYY-MM-DD'
格式的日期。
以下语句将具有指定日期的新行插入到links
表中:
INSERT INTO links (url, name, last_update)
VALUES('https://www.google.com','Google','2013-06-01');
输出:
INSERT 0 1
4) PostgreSQL INSERT – 获取最后一个插入 ID
要从插入的行中获取最后一个插入 ID,请使用INSERT
语句的RETURNING
子句。
例如,以下语句向links
表中插入一个新行并返回最后一个插入 ID:
INSERT INTO links (url, name)
VALUES('http://www.postgresql.org','PostgreSQL')
RETURNING id;
输出:
概括
-
使用 PostgreSQL 的
INSERT
语句将数据插入表中。 -
使用
RETURNING
子句获取插入的行。