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

zab*_*uti 24 postgresql psql

我是一个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)
Run Code Online (Sandbox Code Playgroud)

我可以使用mysql列出数据库,但posgreSQL命令SHOW似乎没有这样做.

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

我可以切换数据库.

mysql> use ocdp;
Database changed
Run Code Online (Sandbox Code Playgroud)

我无法在psql中弄清楚这个命令:

mysql> show tables;
+---------------------------------+
| Tables_in_ocdp                  |
+---------------------------------+
| OCAddresses                     |
| OCStreets                       |
+---------------------------------+
2 rows in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)

我想我可以使用'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)
Run Code Online (Sandbox Code Playgroud)

我用\ quit

mysql> quit
Bye
Run Code Online (Sandbox Code Playgroud)

对于知道postgreSQL的人来说,这些问题的答案应该只需要一点时间,但我无法在任何地方找到说明如何进行这些简单操作的文档.也许我甚至不应该使用psql呢?

Sea*_*lus 49

连接到服务器:

$ mysql -u root -prootpassword

$ su - postgres
$ psql
Run Code Online (Sandbox Code Playgroud)

列表数据库:

mysql> show databases;

postgres=# \l
Run Code Online (Sandbox Code Playgroud)

切换数据库:

mysql> use ocdp;

postgres=# \c ocdp
Run Code Online (Sandbox Code Playgroud)

显示表:

mysql> show tables;

postgres=# \dt
Run Code Online (Sandbox Code Playgroud)

创建数据库:

mysql> create database foo;

postgres=# create database foo;
Run Code Online (Sandbox Code Playgroud)

删除数据库:

mysql> drop database foo;

postgres=# drop database foo;
Run Code Online (Sandbox Code Playgroud)

放弃:

mysql> quit

postgres=# \q
Run Code Online (Sandbox Code Playgroud)

  • @a_horse_with_no_name:在第一次使用时,如果你没有su到postgres,你就什么也做不了.因为当你刚刚安装了postgres时,除了postgres之外没有其他用户帐户可以连接,并且你无法从随机用户帐户中执行`psql -U postgres`,这要归功于`pg_hba.conf`.对于初学者来说,"su postgres"或"sudo su postgres"是一个很好的建议,也适用于机器管理员. (3认同)
  • @a_horse_with_no_name:这是真的.但有时(经常?)有一个'postgres'用户,它具有特殊的环境设置(PATH,locale),可以更容易地调用psql. (2认同)