首页 > 解决方案 > postgres:命令行SQL:为什么要连接数据库甚至执行一些SQL命令,比如创建一个新数据库

问题描述

我想在 linux 机器的 postgresql 中的数据库级别上执行一些 SQL 命令。我想学命令行

例如:我想运行 SQL。我创建了一个名为somesuperuser使用 phppgadmin 的角色。

CREATE DATABASE new_database OWNER somesuperuser;

我知道postgres是默认的超级用户。

我试试

$ psql -U postgres
psql (11.2)
Type "help" for help.

postgres=# \c
You are now connected to database "postgres" as user "postgres".
postgres=# CREATE DATABASE new_database OWNER somesuperuser;

在这里我可以执行 SQL。

但如果我尝试

$ psql -U somesuperuser   
psql: FATAL:  database "somesuperuser" does not exist

所以我观察到的是

psql -U postgres

相当于

psql -U postgres -d postgres

那么需要连接到数据库然后只能运行 SQL 命令,甚至创建另一个数据库

我觉得连接一个数据库是可以的,如果我们必须对那个数据库做一些相关的操作。比如添加表格等。

标签: postgresql

解决方案


CREATE DATABASE是一条SQL 命令

每个 SQL 命令都由服务器进程执行。

为了让 SQL 客户端能够与服务器通信,它必须连接到服务器。

由于 Postgres 架构,只能数据库建立连接,因为处理客户端请求的后端进程与特定数据库绑定。

这就是为什么psql(或任何其他 SQL 客户端)需要连接到某个数据库,即使您不对该数据库执行任何操作。


推荐阅读