PostgreSQL - INSERT 查询:初学者指南
你好,未来的数据库大师们!今天,我们将深入PostgreSQL的奇妙世界,学习它最基本的操作之一:INSERT 查询。如果你是编程新手,不用担心 - 我会一步步引导你,就像我多年来为无数学生做的那样。那么,来一杯咖啡(或者你喜欢的话,来一杯茶),让我们开始吧!
什么是 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
的表,其中有id
、name
和age
列。以下是如何添加一个新学生的方法:
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