如何使用psql命令来列出、创建、使用和检查数据库?

25
我是一个 PostgreSQL 新手,找不到任何可用的 psql 命令使用介绍。至少我认为那就是我想要使用的命令。
在 PostgreSQL 中,是否可以连接服务器,然后列出、创建、使用和检查数据库?
我想使用 psql 像这样在 MySQL 中执行操作(已删除许多额外的行):
连接而不指定数据库 - 我似乎无法通过 psql 实现:
$ mysql -u root -prootpassword
Welcome to the MySQL monitor.  Commands end with ; or \g.
Server version: 5.5.28 MySQL Community Server (GPL)

我可以使用mysql列出数据库,但是posgreSQL命令SHOW似乎无法实现。

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| ocdp               |
| performance_schema |
| test               |
+--------------------+
5 rows in set (0.04 sec)

我可以切换数据库。

mysql> use ocdp;
Database changed

我无法理解psql中的这个命令:

mysql> show tables;
+---------------------------------+
| Tables_in_ocdp                  |
+---------------------------------+
| OCAddresses                     |
| OCStreets                       |
+---------------------------------+
2 rows in set (0.00 sec)

我认为可以使用'createdb'和'dropdb'命令在psql中完成此操作:

mysql> create database foo;
Query OK, 1 row affected (0.00 sec)

mysql> drop database foo;
Query OK, 0 rows affected (0.03 sec)

我使用 \quit

mysql> quit
Bye

这些问题对于熟悉PostgreSQL的人来说只需要花费一点时间,但我找不到任何文档来展示如何执行这些简单的操作。也许我根本不应该使用psql来完成这个任务?

4个回答

51

连接服务器:

$ mysql -u root -prootpassword

$ su - postgres
$ psql

列出数据库:

mysql> show databases;

postgres=# \l

切换数据库:

mysql> use ocdp;

postgres=# \c ocdp

显示表格:

mysql> show tables;

postgres=# \dt

创建数据库:

mysql> create database foo;

postgres=# create database foo;

删除数据库:

mysql> drop database foo;

postgres=# drop database foo;

退出:

mysql> quit

postgres=# \q

1
在启动 psql 时绝对不需要使用 su。你可以轻松地将要连接的用户作为参数指定给 psql。 - user330315
2
@a_horse_with_no_name:没错。但有时候(经常吗?)会有一个名为“postgres”的用户,该用户具有特殊的环境设置(路径、语言环境),这使得调用psql更加容易。 - leonbloy
3
@a_horse_with_no_name: 初次使用时,如果您不切换到postgres用户,则无法进行任何操作。因为当您刚刚安装完postgres时,除了postgres之外,没有其他用户帐户可供连接,并且由于pg_hba.conf的限制,您无法从随意的用户账户执行psql -U postgres。对于一个同时也是机器管理员的初学者来说,“su postgres”或“sudo su postgres”是一个很好的建议。 - Daniel Vérité

3

如果你使用的是 Mac-OS-X 操作系统,并且使用的是 postgres 9.4,请尝试使用以下命令:

psql --list


2

在终端使用PostgreSQL

进入PostgreSQL

   sudo -u postgres psql

通过以下方式在PostgreSQL中查找数据库列表:

   $ \l

通过以下命令连接到数据库

   $ \c databasename

按以下步骤在数据库中查看视图模型:

   $ \dt

现在显示数据库中存在的表格列表,并对表格执行操作,例如

   $ select * from table;

2

不指定数据库连接 - 我似乎无法使用psql实现:

手册中引用:

默认用户名是您的Unix用户名,数据库名称也是如此。


我可以切换数据库

手册中引用:

\connect [ dbname [ username ] [ host ] [ port ] ] 建立到PostgreSQL服务器的新连接


显示表格

手册中引用:

\d [模式] [名称] 显示与模式匹配的每个关系(表、视图、索引、序列或外部表)或复合类型的所有列


创建数据库 foo;

这是PostgreSQL中相同的语句,在手册中有详细说明


退出

手册中引用:

\q or \quit 退出psql程序。


我试图检查两组答案,但我猜在我们的超个人主义社会中这是不被允许的。 - zabouti
我试图检查两组答案,但我猜在我们的极个人主义社会里这是不允许的。这对我帮助很大。我将多次运行步骤以查看是否可以内化此过程并了解一些关于用户概念的内容(我知道现在应该说“角色”)。非常感谢! - zabouti

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接