每当我们谈到PostgreSQL,我们总是想到数据库,因为它是一个数据库管理系统。你可以在你的PostgreSQL服务器上创建你所选择的尽可能多的数据库,只要你想。在创建一个你选择的数据库后,你可以在其中创建多个表来存储你的数据,然后你可以对这些数据进行不同的计算。然而,有时候,我们想在一个现有的数据库上运行查询,但为此,这样的数据库的存在是必须的。
我们的意思是说,我们需要一个机制来检查一个数据库是否存在于我们的PostgreSQL服务器上。此外,在某些情况下,如果数据库不存在于我们的数据库服务器上,我们希望一旦运行查询就创建一个数据库。在这种情况下,"Create Database if not Exists "符号就发挥作用了。本指南旨在向你介绍这个符号的用法,并简要讨论PostgreSQL是否支持这个符号。之后,我们将与你分享一个PostgreSQL支持的这个符号的替代品。
我们可以在Windows 10中使用PostgreSQL的 "如果不存在就创建数据库 "符号吗?
一些编程语言支持 "如果不存在就创建数据库 "的符号。在这个符号的帮助下,你可以检查一个指定的数据库在你的数据库服务器上是否存在,如果它不存在,那么这个符号将在你的服务器上简单地创建这个数据库。然而,让我们具体谈谈PostgreSQL。PostgreSQL不支持这个符号,或者换句话说,你可以说我们不能在Windows 10的PostgreSQL中直接使用这个符号。
尽管如此,仍然有一些方法可以让你实现与这个特定符号所能实现的功能非常相同。要探索更多关于这些变通方法,你必须继续阅读这篇文章。
如果没有,那么我们可以使用哪种变通方法来实现相同的目标?
由于 "如果不存在就创建数据库 "的符号不能在PostgreSQL环境中使用,因此,我们决定与你分享一个变通方法,你可以用它来实现同样的功能。对于这个变通方法,你需要在Windows 10中以PostgreSQL查询的形式执行这个符号的一个稍微不同的变化。要了解这种变化,你必须按照下面解释的步骤进行。
注意:在遵循这些步骤之前,不要忘记登录到您的PostgreSQL服务器。
步骤1:在Windows 10中查看现有的PostgreSQL数据库。
我们都知道,我们只希望在PostgreSQL中创建一个特定的数据库,如果它已经存在于我们的服务器上。在这种特殊情况下,我们想要创建的数据库是 "myNewDB"。因此,我们将首先尝试找出所有现有PostgreSQL数据库的名称,以了解这样的数据库是否已经存在于我们的服务器上。要显示所有现有的PostgreSQL数据库的名称,你需要在psql控制台执行以下PostgreSQL查询。
# SELECT datname FROM pg_database;

这个查询将从我们PostgreSQL服务器的pg_database中提取 "datname "属性。这个属性包含PostgreSQL服务器上所有现有数据库的名称。PostgreSQL的 "SELECT "语句将只是在控制台显示提取的数据库名称,如下图所示。

你可以从上图显示的输出中看到,在我们的PostgreSQL服务器上不存在名称为 "myNewDB "的数据库;因此,我们可以尝试在Windows 10的服务器上创建一个具有这个名称的数据库。
步骤2:创建PostgreSQL数据库,如果不存在于Windows 10中。
现在,由于我们已经看到我们想要创建的数据库在我们的PostgreSQL服务器上并不存在,因此,我们将不得不执行以下查询来创建该数据库。
# SELECT ‘CREATE DATABASE myNewDB’ WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = ‘myNewDB’)\gexec
通过这个查询,我们将创建一个名为 "myNewDB "的数据库,这个数据库在我们Windows 10系统的PostgreSQL服务器上还没有存在。这个查询中的 "SELECT "语句之后是 "CREATE DATABASE语句"。之后,我们提到了我们要创建的新数据库的名称。你可以随心所欲地命名它。然后,我们写了 "WHERE NOT EXISTS "语句,它将检查指定的数据库在PostgreSQL服务器上是否存在。所有这些语句后面都有一个子查询,其中我们有另一个 "SELECT FROM "语句,它将检查我们PostgreSQL服务器的pg_database,以确认你要创建的数据库不存在。
最后,还有一个参数"\gexec",它完成了这个查询。这个参数在这个查询中是非常重要的。这个参数将你当前的查询缓冲区发送到PostgreSQL服务器,在这里,这个查询的输出的每个组件或属性都被当作一个SQL查询,而不是PostgreSQL查询。事实上,这就是PostgreSQL内部 "如果不存在就创建数据库 "符号工作的主要原因。否则,即使你不小心省略了这个参数,你也不能在PostgreSQL中实现这个功能。

如果你正确地遵循这个查询的整个语法,那么一个具有指定名称的PostgreSQL数据库将在PostgreSQL服务器上成功创建,你可以从下面的图片显示的输出响应中确认。

步骤3:验证新的PostgreSQL数据库是否已经在Windows 10中创建。
如果你仍然不确定你在上述步骤中创建新的PostgreSQL数据库的尝试是否成功,那么你仍然可以通过再次查看所有现有的PostgreSQL数据库来验证它。这一次,你也能在那里找到你的新数据库。你只需要运行下面的查询就可以看到这一点。
# SELECT datname FROM pg_database;

目前我们的PostgreSQL服务器上总共有9个数据库,最近的一个实际上就是我们刚才试图创建的那个,如下图所示。

总结
这篇文章谈到了 "Create Database if not Exists "符号和它的用法。然后我们讨论了这个符号是否被PostgreSQL所支持。在发现我们不能在PostgreSQL中直接使用这个符号后,我们与你分享了一种方法,在PostgreSQL环境中实现同样的功能。一旦你经历了这个方法,你就会理解这个非常有用的 "Create Database if not Exists "符号的替代品,PostgreSQL完全支持这个符号。