22 数据操作之插入数据

在本节中,我们将讨论 PostgreSQL 数据库的插入操作,这也就是如何将数据添加到表中。我们将探索 INSERT 语句的基本用法,并结合实例来说明其应用。

1. 插入数据的基本语法

要将数据插入到 PostgreSQL 表中,我们使用 INSERT INTO 语句,其基本语法如下:

1
2
INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);

在这个语法中:

  • table_name 是我们想要插入数据的表名。
  • column1, column2, column3, ... 是我们要插入值的列名。
  • value1, value2, value3, ... 是对应列的值。

示例

假设我们有一个简单的用户表 users,其结构如下:

1
2
3
4
5
6
CREATE TABLE users (
id SERIAL PRIMARY KEY,
username VARCHAR(50) NOT NULL,
email VARCHAR(100) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

我们现在希望将一条新用户记录插入到 users 表中。可以使用如下的 INSERT 语句:

1
2
INSERT INTO users (username, email)
VALUES ('johndoe', 'johndoe@example.com');

在执行该语句后,数据库将在 users 表中添加一条记录,id 列会自动生成,因为我们在创建表时将其定义为 SERIAL 类型。

2. 插入多条数据

除了插入单条记录外,我们还可以一次性插入多条记录。这可以通过在 VALUES 子句中提供多个值组实现。

示例

继续使用 users 表,我们可以一次插入多名用户,如下所示:

1
2
3
4
5
INSERT INTO users (username, email)
VALUES
('alice', 'alice@example.com'),
('bob', 'bob@example.com'),
('charlie', 'charlie@example.com');

此语句将同时插入三条用户记录。

3. 使用 DEFAULT

如果某列有默认值,我们可以在插入时省略该列的状态。PostgreSQL 将自动使用默认值。

示例

对于 users 表,我们在 created_at 列中有一个默认值 CURRENT_TIMESTAMP。因此,我们可以插入新记录而无需显式提供该列的值:

1
2
INSERT INTO users (username, email)
VALUES ('dave', 'dave@example.com');

在这个例子中,created_at 列会自动设置为当前时间戳。

4. 使用子查询插入数据

在某些情况下,我们希望从其他表中获取数据并插入到新表中。这可以通过子查询实现。

示例

假设我们有一个 admins 表,里面存储了管理员的信息,现在我们想将这些管理员的信息插入到 users 表中。

1
2
INSERT INTO users (username, email)
SELECT admin_name, admin_email FROM admins;

这个语句将把 admins 表中的 admin_nameadmin_email 列的数据插入到 users 表中。

5. 错误处理

在数据插入过程中,可能会遇到一些常见错误。例如,插入时违反了唯一性约束或数据类型不匹配。如果您想在插入时处理这些错误,可以使用 ON CONFLICT 子句,它允许您在发生冲突时采取不同的行动,如更新现有记录。

示例

假设我们想在插入时检查 username 是否已存在,如果存在,则更新其 email。可以使用如下语句:

1
2
3
4
INSERT INTO users (username, email)
VALUES ('johndoe', 'newemail@example.com')
ON CONFLICT (username)
DO UPDATE SET email = EXCLUDED.email;

在这个例子中,EXCLUDED 是一个用于引用冲突记录的新值的表别名。

结论

通过本章的内容,我们学习了如何使用 INSERT 语句向 PostgreSQL 数据库表中插入数据,包括插入单条记录和多条记录、使用默认值、子查询插入以及处理错误的方式。掌握这些基本操作将为后续更复杂的数据操作奠定基础。

在下一章中,我们将介绍如何更新已存在的数据,这是数据操作非常重要的一部分。请继续关注我们的教程,深入学习 UPDATE 操作的各种用法。

作者

AI免费学习网(郭震)

发布于

2024-08-15

更新于

2024-08-16

许可协议

分享转发

复习上节

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论