PostgreSQL - INSERT 查询:初学者指南

你好,未来的数据库大师们!今天,我们将深入PostgreSQL的奇妙世界,学习它最基本的操作之一:INSERT 查询。如果你是编程新手,不用担心 - 我会一步步引导你,就像我多年来为无数学生做的那样。那么,来一杯咖啡(或者你喜欢的话,来一杯茶),让我们开始吧!

PostgreSQL - Insert Query

什么是 INSERT 查询?

在我们跳入语法和示例之前,先来了解一下INSERT查询实际上是什么。想象你有一本大书(这就是我们的数据库),里面有许多页(表)。INSERT查询就像在这些页中写下新的条目。这是我们向数据库表中添加新信息的方式。

语法

现在,让我们看看PostgreSQL中INSERT查询的基本语法:

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

别被这个吓到了!让我们分解一下:

  • INSERT INTO:这是告诉PostgreSQL我们要添加新数据的命令。
  • table_name:这是我们想要添加数据的表的名称。
  • (column1, column2, column3, ...): 这些是我们想要用数据填写的表中的列。
  • VALUES:这个关键字引入我们要插入的实际数据。
  • (value1, value2, value3, ...): 这些是我们添加的值,对应于我们指定的列。

示例

示例 1:插入单行

假设我们有一个名为students的表,其中有idnameage列。以下是如何添加一个新学生的方法:

INSERT INTO students (id, name, age)
VALUES (1, 'John Doe', 20);

这里发生了什么?我们在表中添加了一个新的学生,ID为1,名叫John Doe,20岁。就像为加入我们班级的新学生填写表格!

示例 2:插入多行

PostgreSQL允许我们一次插入多行。就像一次性注册多个学生:

INSERT INTO students (id, name, age)
VALUES
(2, 'Jane Smith', 22),
(3, 'Bob Johnson', 21),
(4, 'Alice Brown', 23);

这个查询一次性向我们的表中添加了三个新学生。效率很高,对吧?

示例 3:插入默认值

有时,我们的表中对某些列设置了默认值。我们可以跳过指定这些:

INSERT INTO students (name, age)
VALUES ('Charlie Davis', 19);

在这种情况下,如果我们的id列设置为自动递增,PostgreSQL将自动分配下一个可用的ID。

输出

执行INSERT查询后,PostgreSQL通常会返回一条消息,指示插入了多少行。例如:

INSERT 0 1

这意味着成功插入了一行。如果我们插入了多行,它可能是:

INSERT 0 3

表示添加了三行。

高级 INSERT 技巧

从另一个表插入数据

有时,我们可能想要从一张表复制数据到另一张表。PostgreSQL让这个过程变得简单:

INSERT INTO new_students (name, age)
SELECT name, age FROM students WHERE age < 21;

这个查询将所有21岁以下的学生从students表复制到一个new_students表中。就像为年轻学生创建一个特殊的班级!

使用 RETURNING 子句插入

PostgreSQL有一个很酷的功能,允许我们看到插入的内容:

INSERT INTO students (name, age)
VALUES ('David Wilson', 24)
RETURNING *;

这个查询不仅将David插入我们的表,还会显示添加的完整行,包括任何默认或自动生成的值。

常见的 INSERT 方法

以下是我们讨论过的INSERT方法的总结:

方法 描述 示例
基本插入 插入单行 INSERT INTO students (name, age) VALUES ('John Doe', 20);
多行插入 一次性插入多行 INSERT INTO students (name, age) VALUES ('Jane', 22), ('Bob', 21);
使用默认值插入 让数据库填写默认值 INSERT INTO students (name) VALUES ('Alice');
从SELECT插入 从另一个表复制数据 INSERT INTO new_students SELECT * FROM students WHERE age < 21;
带有RETURNING插入 插入并返回添加的数据 INSERT INTO students (name, age) VALUES ('David', 24) RETURNING *;

结论

就这样,大家!我们已经穿越了PostgreSQL INSERT查询的土地。从为我们的班级添加单个学生到一次性注册一群学生,你现在有了轻松填充数据库的力量。

记住,熟能生巧。尝试创建你自己的表并插入不同类型的数据。也许可以创建一个你最喜欢的书籍或电影的表,并开始添加内容。在你意识到之前,你将能够像专业人士一样插入数据!

快乐编码,愿你的数据库总是充实无误!

Credits: Image by storyset