📜  postgres 插入表 (1)

📅  最后修改于: 2023-12-03 15:03:48.940000             🧑  作者: Mango

Postgres 插入表

在 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 表中定义的 nameemail 列的顺序相同。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;

这将插入一条新记录,并返回该记录的 idnameemail 字段。

结论

在本文中,我们介绍了如何使用 INSERT 语句向 PostgreSQL 表中插入数据,处理重复值,以及如何返回插入的数据。这些是 PostgreSQL 中的常见操作,对于任何 PostgreSQL 开发人员来说都是必备的技能。