在 PostgreSQL 中使用数据库
本文演示了在 PostgreSQL 中连接数据库、创建新数据库以及创建表。
PostgreSQL 中的可用数据库
你可以在打开 Postgres 命令行后执行以下命令,以查看所有存在和连接的可用数据库。
postgres=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+----------------------------+----------------------------+-----------------------
postgres | postgres | UTF8 | English_United States.1252 | English_United States.1252 |
template0 | postgres | UTF8 | English_United States.1252 | English_United States.1252 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | English_United States.1252 | English_United States.1252 | =c/postgres +
| | | | | postgres=CTc/postgres
(3 rows)
在这里,你可以看到 3 行
,这意味着我们在 Postgres 中有三个数据库。你需要了解数据库并不意味着表。
一个数据库里面可以有多个表。此外,该表可能与其他表相关。
让我们看看如何连接到数据库。
当你第一次安装 Postgres 时,你会发现默认为你创建的这三个数据库。如果你不连接任何数据库,默认情况下,你稍后创建的所有表都将转到名为 Postgres
的数据库。
连接到 PostgreSQL 中的数据库
你需要打开 psql
shell 或从终端打开 psql
以连接到数据库。然后使用凭据,登录 Postgres;之后,使用以下命令。
postgres=# \c postgres
You are now connected to database "postgres" as user "postgres".
所以,终端说你现在连接到一个名为 Postgres
的数据库。让我们看看我们在这个数据库中有哪些表。
要查看数据库中可用的表列表,我们需要编写命令\dt <database_name>
。例如:
postgres=# \c postgres
You are now connected to database "postgres" as user "postgres".
postgres=# \dt
List of relations
Schema | Name | Type | Owner
--------+----------+-------+----------
public | accounts | table | postgres
(1 row)
在 PostgreSQL 中创建一个新数据库
假设你需要一个自己的数据库,并且你将在那里管理一些表。创建数据库的基本语法是 CREATE DATABASE <database_name>
。
创建后,让我们创建一个名为 titan
的数据库并查看可用数据库列表。
postgres=# CREATE DATABASE TITAN;
CREATE DATABASE
postgres=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+----------------------------+----------------------------+-----------------------
postgres | postgres | UTF8 | English_United States.1252 | English_United States.1252 |
template0 | postgres | UTF8 | English_United States.1252 | English_United States.1252 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | English_United States.1252 | English_United States.1252 | =c/postgres +
| | | | | postgres=CTc/postgres
titan | postgres | UTF8 | English_United States.1252 | English_United States.1252 |
(4 rows)
postgres=# \c titan
You are now connected to database "titan" as user "postgres".
此外,还有另一种创建数据库的方法。格式为 createdb [options...] [database_name [description of database]]
。
这是 [PostgreSQL] 中可用选项的列表(https://postgrespro.com/docs/postgresql/9.6/app-createdb)。
选项 | 说明 |
---|---|
-D | Default tablespace for the database |
-h | hostname of the machine where the server is sunning |
-e | Echo the commands that createdb generates and sends to the server |
-E | Specifies the character encoding scheme to be used in this database |
这里是 PostgreSQL 官方文档中的完整选项列表。
在 PostgreSQL 的连接数据库中创建表
当我们连接到名为 titan
的数据库时,让我们看看是否存在任何表。
postgres=# \c titan
You are now connected to database "titan" as user "postgres".
titan=# \dt
Did not find any relations.
如你所见,数据库中没有表。此外,如果你注意到,这里有一些小的变化。
当我们连接到 titan
数据库时,该行以 titan=#
开头,这意味着控制台在 titan
数据库上运行。
让我们在这里创建一个表,如下所示。
CREATE TABLE Colossal (
titan_id serial PRIMARY KEY,
titan_name VARCHAR ( 50 ) NOT NULL,
strength_level INT NOT NULL
);
CREATE TABLE
titan=# \dt
List of relations
Schema | Name | Type | Owner
--------+----------+-------+----------
public | colossal | table | postgres
(1 row)
titan=#
现在,你可以在表中执行 CRUD
操作。我们可以看到 colossal
表现在在 titan
数据库中可用。
有关数据库创建和设置的更多信息,请遵循官方文档。