简介
在本实验中,我们将探索 PostgreSQL 中的基础数据操作。主要目标是学习如何使用基本的 SQL 命令对 PostgreSQL 数据库中的数据进行增删改查。
我们将从连接数据库开始,创建一个包含 ID、姓名和部门列的 employees 表。接着,我们将学习如何使用 INSERT INTO 语句向表中插入数据。随后,我们将涵盖使用 SELECT 查询数据、更新现有记录以及删除记录的相关操作。本实验将为你提供 PostgreSQL 数据管理核心技术的实践入门。
向表中插入数据
在这一步中,我们将学习如何向 PostgreSQL 的表中插入数据。插入数据是向数据库填充信息的基础操作。我们将介绍其基本语法并提供示例,帮助你理解整个过程。
在开始之前,请确保你已经安装并运行了 PostgreSQL。你可以使用 psql 命令行工具连接到 PostgreSQL 服务器。
首先,让我们连接到数据库。打开终端并执行以下命令:
sudo -u postgres psql
连接到数据库后,如果 employees 表尚不存在,我们先创建一个简单的表。该表将存储员工信息,例如 ID、姓名和部门。
CREATE TABLE IF NOT EXISTS employees (
id SERIAL PRIMARY KEY,
name VARCHAR(50),
department VARCHAR(50)
);
这条 SQL 语句创建了一个名为 employees 的表,包含三列:
id:一个整数,每增加一条新记录时会自动递增(使用SERIAL)。它同时也是该表的主键。name:一个字符串(最多 50 个字符),用于存储员工姓名。department:一个字符串(最多 50 个字符),用于存储员工所属部门。
现在,让我们向 employees 表中插入一些数据。我们将插入三条员工记录。
INSERT INTO employees (name, department) VALUES ('Alice Smith', 'Sales');
INSERT INTO employees (name, department) VALUES ('Bob Johnson', 'Marketing');
INSERT INTO employees (name, department) VALUES ('Charlie Brown', 'Engineering');
每条 INSERT INTO 语句都会向 employees 表中添加一行新数据。我们指定了表名(employees)以及要插入数据的列(name、department)。VALUES 关键字后面紧跟我们要插入的实际数据,并用括号括起来。
为了验证数据是否已正确插入,我们可以使用 SELECT 语句查询 employees 表。
SELECT * FROM employees;
这将显示 employees 表中的所有行和列。你应该能看到我们刚刚插入的三条员工记录。输出结果应如下所示:
id | name | department
----+---------------+------------
1 | Alice Smith | Sales
2 | Bob Johnson | Marketing
3 | Charlie Brown | Engineering
(3 rows)

你现在已经成功向 PostgreSQL 表中插入了数据。你可以根据需要继续插入更多记录。
最后,输入以下命令退出 psql shell:
\q
这将返回到终端界面。
使用 SELECT 查询数据
在这一步中,我们将学习如何使用 SELECT 语句从 PostgreSQL 的表中查询数据。SELECT 语句是从数据库中检索信息的基础。我们将涵盖基本语法、过滤和排序,帮助你掌握数据检索技巧。
首先,确保你已连接到数据库。如果尚未连接,请打开终端并执行以下命令:
sudo -u postgres psql
让我们学习如何选择特定的列。假设我们只想检索 name 和 department 列。
SELECT name, department FROM employees;
该语句将仅返回 employees 表中所有行的 name 和 department 列。输出结果应如下所示:
name | department
---------------+------------
Alice Smith | Sales
Bob Johnson | Marketing
Charlie Brown | Engineering
(3 rows)
现在,让我们添加一个 WHERE 子句来过滤结果。假设我们只想检索在「Sales」(销售)部门工作的员工。
SELECT name, department FROM employees WHERE department = 'Sales';
WHERE 子句指定了行被包含在结果集中必须满足的条件。在本例中,我们只选择 department 列等于 'Sales' 的行。输出结果应为:
name | department
---------------+------------
Alice Smith | Sales
(1 row)
最后,让我们学习如何使用 ORDER BY 子句对结果进行排序。假设我们想检索所有员工,并按姓名升序排列。
SELECT name, department FROM employees ORDER BY name;
该语句将返回 employees 表中的所有行,但结果会按 name 列的字母顺序进行排序。输出结果应为:
name | department
---------------+------------
Alice Smith | Sales
Bob Johnson | Marketing
Charlie Brown | Engineering
(3 rows)
若要按降序排列结果,可以在列名后添加 DESC 关键字。
SELECT name, department FROM employees ORDER BY name DESC;
这将按字母顺序的倒序排列结果。
你现在已经学会了如何使用 SELECT 语句从 PostgreSQL 表中查询数据,包括如何选择特定列、使用 WHERE 子句过滤结果以及使用 ORDER BY 子句对结果进行排序。

最后,输入以下命令退出 psql shell:
\q
更新现有记录
在这一步中,我们将学习如何使用 UPDATE 语句更新 PostgreSQL 表中的现有记录。更新数据对于保持数据库信息的时效性和准确性至关重要。我们将介绍其基本语法并提供示例,帮助你理解整个过程。
首先,确保你已连接到数据库。如果尚未连接,请打开终端并执行以下命令:
sudo -u postgres psql
让我们将 'Alice Smith' 的部门更新为 'Human Resources'(人力资源)。
UPDATE employees SET department = 'Human Resources' WHERE name = 'Alice Smith';
UPDATE 语句用于修改表中的现有行。SET 子句指定要更新的列及其新值。WHERE 子句指定要更新哪些行。在本例中,我们将 name 列为 'Alice Smith' 的行的 department 列更新为 'Human Resources'。
为了验证更新是否成功,我们可以查询 employees 表。
SELECT * FROM employees WHERE name = 'Alice Smith';
这将显示 'Alice Smith' 的行,你应该能看到 department 列已更新为 'Human Resources'。输出结果应如下所示:
id | name | department
----+---------------+------------------
1 | Alice Smith | Human Resources
(1 row)
你也可以同时更新多个列。例如,让我们将 Bob Johnson 的部门更新为 'Sales',并将他的姓名更新为 'Robert Johnson'。
UPDATE employees SET department = 'Sales', name = 'Robert Johnson' WHERE name = 'Bob Johnson';
该语句更新了 name 列为 'Bob Johnson' 的行的 department 和 name 列。
为了验证更新,再次查询 employees 表。
SELECT * FROM employees WHERE name = 'Robert Johnson';
输出结果应为:
id | name | department
----+----------------+------------
2 | Robert Johnson | Sales
(1 row)
使用 UPDATE 语句时务必小心,特别是在省略 WHERE 子句的情况下。如果你省略了 WHERE 子句,UPDATE 语句将更新表中的所有行。例如:
UPDATE employees SET department = 'Unknown';
该语句会将 employees 表中每一行的 department 列设置为 'Unknown'。执行此类语句时请务必谨慎。

你现在已经学会了如何使用 UPDATE 语句更新 PostgreSQL 表中的现有记录。
最后,输入以下命令退出 psql shell:
\q
删除记录
在这一步中,我们将学习如何使用 DELETE 语句从 PostgreSQL 表中删除记录。删除数据是移除数据库中过时或错误信息的重要操作。我们将介绍其基本语法并提供示例,帮助你理解整个过程。
首先,确保你已连接到数据库。如果尚未连接,请打开终端并执行以下命令:
sudo -u postgres psql
让我们从 employees 表中删除 'Charlie Brown' 的记录。
DELETE FROM employees WHERE name = 'Charlie Brown';
DELETE FROM 语句用于从表中移除行。WHERE 子句指定要删除哪些行。在本例中,我们删除了 name 列等于 'Charlie Brown' 的行。
为了验证删除是否成功,我们可以查询 employees 表。
SELECT * FROM employees WHERE name = 'Charlie Brown';
这应该不会返回任何行,表明 'Charlie Brown' 的记录已被删除。输出结果应为:
id | name | department
----+------+------------
(0 rows)
你也可以通过使用更复杂的 WHERE 子句一次删除多行。例如,如果你在 'Marketing'(市场)部门有多名员工,你可以用一条语句将他们全部删除:
DELETE FROM employees WHERE department = 'Marketing';
使用 DELETE 语句时必须极其小心,特别是在省略 WHERE 子句的情况下。如果你省略了 WHERE 子句,DELETE 语句将删除表中的所有行。例如:
DELETE FROM employees;
该语句将删除 employees 表中的每一行,从而清空整个表。在执行此类语句之前,请务必确认你确实想要删除所有行。
你现在已经学会了如何使用 DELETE 语句从 PostgreSQL 表中删除记录。

检查 employees 表以验证删除是否成功。
SELECT * FROM employees;
输出结果应为:
id | name | department
----+----------------+-----------------
1 | Alice Smith | Human Resources
2 | Robert Johnson | Sales
(2 rows)
最后,输入以下命令退出 psql shell:
\q
总结
在本实验中,我们涵盖了 PostgreSQL 中的基础数据操作,重点介绍了如何向表中插入数据。我们首先使用 psql 命令行工具连接到数据库。然后,我们创建了一个包含 id、name 和 department 列的 employees 表,并将 id 指定为具有自动递增功能的主键。
最后,我们使用 INSERT INTO 语句向 employees 表中插入了三条员工记录,指定了表名、要插入数据的列以及每条记录对应的值。这演示了向 PostgreSQL 表中填充数据的基本语法。


