📅  最后修改于: 2023-12-03 15:03:48.940000             🧑  作者: Mango
在 PostgreSQL 中插入数据是非常常见的操作。本文将介绍如何使用 INSERT 语句向 PostgreSQL 表中插入数据。
假设我们有一个名为 users
的表,它有以下结构:
CREATE TABLE users (
id SERIAL PRIMARY KEY,
name VARCHAR(50) NOT NULL,
email VARCHAR(50) UNIQUE NOT NULL
);
我们可以使用以下 INSERT 语句向表中插入一条数据:
INSERT INTO users (name, email) VALUES ('John Smith', 'johnsmith@example.com');
这条语句仅指定了两个值,这两个值与 users
表中定义的 name
和 email
列的顺序相同。id
列被忽略,因为其使用了 SERIAL 类型,它会自动分配唯一的值。
我们还可以使用以下语法向表中批量插入数据:
INSERT INTO users (name, email) VALUES
('John Smith', 'johnsmith@example.com'),
('Jane Doe', 'janedoe@example.com'),
('Bob Johnson', 'bobjohnson@example.com');
如果我们尝试插入一个重复的 email 值,PostgreSQL 将会报错。我们可以使用 ON CONFLICT 语句插入一条新记录或更新现有记录。例如:
INSERT INTO users (name, email) VALUES ('John Smith', 'johnsmith@example.com')
ON CONFLICT (email) DO UPDATE SET name = 'Updated Name';
上面的语句将在 users
表中查找重复的 email 值。如果存在,则将更新记录的 name
列为 'Updated Name'。否则将插入一条新的记录。
如果我们想在插入数据后查询其数据,则可以使用 RETURNING 子句。例如:
INSERT INTO users (name, email) VALUES ('John Smith', 'johnsmith@example.com')
RETURNING id, name, email;
这将插入一条新记录,并返回该记录的 id
、name
和 email
字段。
在本文中,我们介绍了如何使用 INSERT 语句向 PostgreSQL 表中插入数据,处理重复值,以及如何返回插入的数据。这些是 PostgreSQL 中的常见操作,对于任何 PostgreSQL 开发人员来说都是必备的技能。