PostgreSQL 中的基本数据操作

PostgreSQLPostgreSQLBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

介绍

在这个实验中,我们将探索 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)。它也是表的主键(primary key)。
  • 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) 和我们要将数据插入的列 (namedepartment)。 VALUES 关键字后跟我们要插入的实际数据,用括号括起来。

为了验证数据是否已正确插入,我们可以使用 SELECT 语句查询 employees 表。

SELECT * FROM employees;

这将显示 employees 表中的所有行和列。你应该看到我们刚刚插入的三个员工记录。输出应该类似于这样:

 id |     name      | department
----+---------------+------------
  1 | Alice Smith   | Sales
  2 | Bob Johnson   | Marketing
  3 | Charlie Brown | Engineering
(3 rows)
Output after inserting data in table

你现在已经成功地将数据插入到 PostgreSQL 表中。你可以根据需要继续插入更多记录。

最后,通过键入以下内容退出 psql shell:

\q

这将使你返回到终端。

使用 SELECT 查询数据

在这一步中,我们将学习如何使用 SELECT 语句从 PostgreSQL 的表中查询数据。 SELECT 语句是从数据库中检索信息的基础。我们将介绍基本语法、过滤和排序,以帮助你掌握数据检索。

首先,确保你已连接到数据库。如果你尚未连接,请打开终端并执行以下命令:

sudo -u postgres psql

让我们学习如何选择特定的列。假设我们只想检索 namedepartment 列。

SELECT name, department FROM employees;

这个语句将只返回 employees 表中所有行的 namedepartment 列。输出应该类似于这样:

     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 子句对结果进行排序。

Illustration for querying data in PostgreSQL

最后,通过键入以下内容退出 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' 的行的 departmentname 列。

要验证更新,请再次查询 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'。执行这样的语句时要非常小心。

Illustration for updating records in PostgreSQL

你现在已经学会了如何使用 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 表中删除记录。

Illustration for record deletion in PostgreSQL

检查 employees 表以验证删除是否成功。

SELECT * FROM employees;

输出应该是:

 id | name | department
----+------+------------
(0 rows)

最后,通过键入以下内容退出 psql shell:

\q

总结

在这个实验中,我们介绍了 PostgreSQL 中的基本数据操作,重点是将数据插入到表中。我们首先使用 psql 命令行工具连接到数据库。然后,我们创建了一个 employees 表,其中包含 idnamedepartment 列,并将 id 指定为主键,并具有自动递增功能。

最后,我们使用 INSERT INTO 语句将三个员工记录插入到 employees 表中,指定表名和要插入数据的列,以及每个记录的相应值。这演示了使用数据填充 PostgreSQL 表的基本语法。