1 第一次查询
运行第一次查询,查看 PostgreSQL 服务器与 psql 客户端的版本。
要确认 PostgreSQL 环境是否正常,最快的办法就是运行一个不需要表的查询。PostgreSQL 可以单独计算表达式,并不是每条 SELECT 都需要 FROM。我们将利用这一点,一次确认三件事:服务器正在运行,客户端能够连接到它,而且版本足够新,可以跟着本书练习。
本章要点
- 如何用
psql -f运行 SQL 文件 - 不需要表的最简
SELECT - 如何读懂 PostgreSQL 版本字符串
- 客户端版本与服务器版本的区别
示例
SELECT 1 返回一行一列,值为整数 1。表达式形式(SELECT 2 + 3, 'hello, postgres')表明,SELECT 中可以直接写任意表达式,由 PostgreSQL 求值并返回结果。version() 是一个内置函数,会返回完整的版本字符串,其中包括操作系统、编译器等信息;SHOW server_version 则只返回版本号。两者报告的都是当前所连接服务器的版本。psql --version 报告的是客户端版本,两者可能不同。
运行示例
在仓库根目录运行这个文件:
你看到的版本字符串会有所不同。如果输出与上面类似,就说明连接已经打通了。
常见陷阱
- “could not connect to server” —— 守护进程没有运行。可用
brew services start postgresql(macOS)、sudo systemctl start postgresql(Linux),或安装方式所对应的命令启动它。 - “role ‘you’ does not exist” —— PostgreSQL 中没有与你的操作系统用户对应的数据库用户。请在能够访问该集群的 Shell 中运行
createuser --superuser $(whoami)创建用户。 - “database ‘postgres’ does not exist” —— 某些安装方式,尤其是 macOS 上的 homebrew,不会创建默认的
postgres数据库。运行一次createdb postgres,或用createdb pbe创建练习库,并在每条命令中将数据库名指定为pbe。
提示
如果省略数据库名,psql 默认使用你的操作系统用户名。要明确使用 postgres 数据库,运行 psql -f source/first-query.sql postgres。如果想改用连接字符串,则运行 psql 'postgres://user:pass@host:5432/dbname'。
动手练习
运行 psql -f source/first-query.sql 并确认输出。然后用 psql postgres 建立交互式连接,输入 SELECT now(); 并按回车键,最后用 \q 退出。
下载
SQL 文件:first-query.sql · 全部示例文件 · 准备工作