介绍
在这个实验(lab)中,你将学习使用 PostgreSQL 进行数据库管理的基础知识。这个实验涵盖了管理数据库的基本操作,包括创建新数据库、列出和连接到现有数据库,以及在不再需要时删除数据库。
你将首先使用 createdb 命令创建一个新数据库,并通过 psql 命令验证其创建。然后,你将学习如何列出所有可用的数据库并连接到特定的数据库。最后,你将探索如何删除数据库和查看数据库元数据。这个实验提供了一个 PostgreSQL 中基本数据库管理任务的实践介绍。
在这个实验(lab)中,你将学习使用 PostgreSQL 进行数据库管理的基础知识。这个实验涵盖了管理数据库的基本操作,包括创建新数据库、列出和连接到现有数据库,以及在不再需要时删除数据库。
你将首先使用 createdb 命令创建一个新数据库,并通过 psql 命令验证其创建。然后,你将学习如何列出所有可用的数据库并连接到特定的数据库。最后,你将探索如何删除数据库和查看数据库元数据。这个实验提供了一个 PostgreSQL 中基本数据库管理任务的实践介绍。
在这个步骤中,你将学习如何在 PostgreSQL 中创建一个新的数据库。创建数据库是组织和存储数据的第一步。
在我们开始之前,让我们了解一下什么是数据库。数据库是数据的结构化集合,为了便于访问、管理和更新而组织。在 PostgreSQL 中,数据库是表、视图和其他数据库对象的容器。
要创建一个新的数据库,你将使用 createdb 命令。此命令是 SQL 命令 CREATE DATABASE 的包装器(wrapper)。
打开终端: 如果你还没有打开终端,请启动一个终端窗口。
创建新数据库: 使用 createdb 命令,后跟你要给数据库的名称。例如,要创建一个名为 mydatabase 的数据库,请运行以下命令:
createdb mydatabase
此命令将创建一个名为 mydatabase 的新数据库。如果命令成功,你将看不到任何输出。
验证数据库创建: 要确认数据库已创建,你可以使用 psql 命令列出所有数据库。首先,连接到 postgres 默认数据库:
psql -d postgres
你将看到 postgres=# 提示符。
列出数据库: 在 postgres=# 提示符下,执行以下 SQL 命令以列出所有数据库:
\l

此命令将显示数据库列表,包括你刚刚创建的数据库(mydatabase)。你应该看到类似于以下的输出:
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
mydatabase| labex | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
(4 rows)
请注意,mydatabase 在列表中。
退出 psql: 要退出 psql 提示符,请输入:
\q
然后按 Enter 键。你将返回到常规终端提示符。
你现在已成功在 PostgreSQL 中创建了一个新的数据库。
在这个步骤中,你将学习如何列出可用的数据库,并使用 psql 命令行工具连接到特定的数据库。
打开终端: 如果你还没有打开终端,请启动一个终端窗口。
列出可用的数据库: 要列出所有数据库,你可以使用带有 -l 选项(小写字母“L”)的 psql 命令。此选项列出服务器上的所有数据库。由于你没有指定要连接的数据库,psql 将尝试使用你当前的用户名称进行连接。
psql -l
此命令将显示数据库列表,以及它们的拥有者、编码和其他信息。你应该看到类似于以下的输出:
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
mydatabase| labex | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
(4 rows)
此输出显示了数据库的名称、它们的拥有者和其他详细信息。你应该看到你在上一步中创建的 mydatabase 数据库。
连接到特定的数据库: 要连接到特定的数据库,请使用带有 -d 选项的 psql 命令,后跟数据库的名称。例如,要连接到 mydatabase 数据库,请运行以下命令:
psql -d mydatabase
如果连接成功,你将看到 mydatabase=# 提示符。这表示你现在已连接到 mydatabase 数据库。
验证连接: 要验证你是否已连接到正确的数据库,你可以执行一个简单的 SQL 命令,例如:
SELECT version();

此命令将显示你连接到的 PostgreSQL 服务器的版本。输出将如下所示:
version
----------------------------------------------------------------------------------------------------------------
PostgreSQL 14.7 (Debian 14.7-1.pgdg110+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 10.2.1-6) 10.2.1 20210110, 64-bit
(1 row)
退出 psql: 要退出 psql 提示符,请输入:
\q
然后按 Enter 键。你将返回到常规终端提示符。
你现在已成功列出了可用的数据库,并使用 psql 连接到特定的数据库。
在这个步骤中,你将学习如何在 PostgreSQL 中删除(drop)一个数据库。删除数据库是一个永久性的操作,因此在使用此命令时务必小心。 数据库中的所有数据都将丢失。
打开终端: 如果你还没有打开终端,请启动一个终端窗口。
删除数据库: 使用 dropdb 命令,后跟你要删除的数据库的名称。例如,要删除 mydatabase 数据库,请运行以下命令:
dropdb mydatabase
此命令将删除 mydatabase 数据库。如果命令成功,你将看不到任何输出。
重要提示: 在删除数据库之前,请确保没有人连接到它。如果存在活动连接,则 dropdb 命令可能会失败。
验证数据库删除: 要确认数据库已删除,你可以使用 psql 命令列出所有数据库。首先,连接到 postgres 默认数据库:
psql -d postgres

你将看到 postgres=# 提示符。
列出数据库: 在 postgres=# 提示符下,执行以下 SQL 命令以列出所有数据库:
\l
此命令将显示数据库列表。验证 mydatabase 是否不再在列表中。
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
(3 rows)
如果未列出 mydatabase,则表示已成功删除。
退出 psql: 要退出 psql 提示符,请输入:
\q
然后按 Enter 键。你将返回到常规终端提示符。
你现在已成功在 PostgreSQL 中删除了一个数据库。请记住在删除数据库时要谨慎,因为此操作是不可逆的。
在这个步骤中,你将学习如何在 PostgreSQL 中查看数据库元数据(metadata)。元数据是“关于数据的数据”。在数据库的上下文中,元数据描述了数据库本身的结构和特征,包括关于表、列、数据类型和约束的信息。
打开终端: 如果你还没有打开终端,请启动一个终端窗口。
连接到 postgres 数据库: 由于我们在上一步中删除了 mydatabase,我们将连接到默认的 postgres 数据库来探索元数据。
psql -d postgres
你将看到 postgres=# 提示符。
列出表: 要列出当前连接的数据库中的所有表,你可以使用 \dt 命令。
\dt
由于我们尚未创建任何表,因此输出应为空或显示系统表。它可能看起来像这样:
Did not find any relations.
或者
List of relations
Schema | Name | Type | Owner
--------+-----------------------+-------+----------
pg_catalog | pg_aggregate | table | postgres
pg_catalog | pg_am | table | postgres
pg_catalog | pg_amop | table | postgres
...
输出显示了每个表的模式(schema)、名称、类型和所有者。
描述一个表: 要查看有关特定表的详细信息,你可以使用 \d 命令,后跟表名。由于我们没有用户创建的表,让我们检查一个系统表,例如 pg_class。
\d pg_class

此命令将显示 pg_class 表的结构,包括列名、数据类型和任何约束。输出将非常广泛,但它提供了表定义的全面概述。
Table "pg_catalog.pg_class"
Column | Type | Collation | Nullable | Default | Storage | Stats target | Description
-------------------+-----------+-----------+----------+---------+----------+--------------+-------------
oid | oid | | not null | | plain | |
relname | name | | not null | | plain | |
relnamespace | oid | | not null | | plain | |
reltype | oid | | not null | | plain | |
reloftype | oid | | not null | | plain | |
relowner | oid | | not null | | plain | |
relam | oid | | not null | | plain | |
relfilenode | oid | | not null | | plain | |
reltablespace | oid | | not null | | plain | |
relpages | integer | | not null | | plain | |
reltuples | real | | not null | | plain | |
relallvisible | boolean | | not null | | plain | |
reltoastrelid | oid | | not null | | plain | |
relhasindex | boolean | | not null | | plain | |
relhasrules | boolean | | not null | | plain | |
relhastriggers | boolean | | not null | | plain | |
relhassubclass | boolean | | not null | | plain | |
relrowsecurity | boolean | | not null | | plain | |
relforcerowsecurity| boolean | | not null | | plain | |
relispopulated | boolean | | not null | | plain | |
relreplident | character | | not null | | plain | |
relispartition | boolean | | not null | | plain | |
relrewrite | oid | | not null | | plain | |
relacl | aclitem[] | | | | plain | |
reloptions | text[] | | | | plain | |
relpartbound | pg_node_tree | | | | extended | |
Indexes:
"pg_class_oid_index" UNIQUE, btree (oid)
"pg_class_relname_nsp_index" UNIQUE, btree (relname, relnamespace)
Foreign-key constraints:
"pg_class_relam_fkey" FOREIGN KEY (relam) REFERENCES pg_am(oid)
"pg_class_relnamespace_fkey" FOREIGN KEY (relnamespace) REFERENCES pg_namespace(oid)
"pg_class_relowner_fkey" FOREIGN KEY (relowner) REFERENCES pg_authid(oid)
"pg_class_reltoastrelid_fkey" FOREIGN KEY (reltoastrelid) REFERENCES pg_class(oid)
Referenced by:
TABLE "pg_statistic_ext" CONSTRAINT "pg_statistic_ext_relid_fkey" FOREIGN KEY (relid) REFERENCES pg_class(oid)
TABLE "pg_rewrite" CONSTRAINT "pg_rewrite_ev_class_fkey" FOREIGN KEY (ev_class) REFERENCES pg_class(oid)
TABLE "pg_trigger" CONSTRAINT "pg_trigger_tgrelid_fkey" FOREIGN KEY (tgrelid) REFERENCES pg_class(oid)
退出 psql: 要退出 psql 提示符,请输入:
\q
然后按 Enter 键。你将返回到常规终端提示符。
你现在已成功使用 psql 在 PostgreSQL 中查看了数据库元数据。这使你可以了解数据库和表的结构和属性。
在这个实验中,你学习了 PostgreSQL 中数据库管理的基础知识,从创建新数据库开始。该过程包括在终端中使用 createdb 命令,后跟所需的数据库名称。成功执行将创建数据库,而没有任何输出。
为了验证创建,你可以使用 psql -d postgres 连接到默认的 postgres 数据库,然后使用 \l 命令列出所有可用的数据库,确认新创建的数据库是否存在。