PostgreSQL是一个开源免费的关系型数据库,其官网是:
PSQL支持多个平台(Windows\MacOS\Linux),各平台及历史版本的下载页面:
笔者是Windows笔记本,所以下面以Windows平台为例进行说明。
下载相应的安装包后安装,没啥好说的,一路Next即可。需要注意的是安装后会让你输入一个密码作为主密码,不要忘记该密码。
PSQL自带一个图形管理界面pgAdmin,安装后可以在开始菜单找到:
另一个可能会用到的工具是SQL Shell,是命令行操作PSQL的工具。但其实可以直接使用CMD或PowerShell使用命令行工具登录和操作PSQL。
打开pgAdmin(目前的版本是4.0)后会要求使用主密码登录:
登录后左侧导航栏中的PostgreSQL 13下就是本地的PSQL数据库:
如果使用pgAdmin远程连接PSQL服务器,会出现另一个数据库图标,和PostgreSQL并列。
选中PostgreSQL后点击属性,可以看到本地PSQL服务的相关信息。其中比较关键的有连接相关的属性:
使用命令行工具连接需要指定主机名和端口等,如果不清楚可以在这里进行查看。
除了数据库安装后自动创建的主用户postgres意外,我们可以自行创建其它用户,这也是推荐的做法,应当避免直接在程序中使用主用户连接PSQL。
方式也很简单,在登录/组角色右键选择创建》登录/组角色即可。
在成员选项中可以设置是否可以登录数据库,以及是否自动创建一个同名数据库。
除了创建账户时自动创建一个同名数据库外,也可以手动创建数据库。
要创建数据库只需要在数据库上右键,选择创建》数据库即可。
比较重要的是要设置对数据库的所有者:
在程序和命令行工具中都要用这个所有者帐号来进行登录。
数据库创建好后可以进一步添加表,数据库的表位于架构》public》表中:
右键点击添加表即可,这和其它数据库添加方式类似,没有什么难度,这里不详细说明。
添加好表后可以尝试执行SQL来验证查询语句和表结构,可以在表或数据库标签上右键打开查询工具:
查询编辑器中可以直接书写SQL,按F5执行。右侧X可以关闭窗口,下方会输出查询结果。
需要注意的是,数据库软件自身的数据也是以表的形式存在的,所以如果你命名的表名称与数据库自己定义的表名称冲突,比如user,SQL查询时默认查询数据库定义的表,所以执行select * from user
的查询结果:
这也是为什么我之前执行select id from user
一直显示没有id这个字段
(抓狂了很久…)。
要解决这个问题只需要用""
包裹表名即可,比如select * from "user"
,这样就能查询到想要的结果:
这里要注意的是只能是双引号,单引号是不行的。
命令行下登录并管理PSQL需要使用PSQL安装目录下的./bin/psql.exe
工具,所以为了方便在任意路径执行,需要将所在目录加入用户环境变量。
然后就可以在CMD或者PowerShell中登录:
❯ psql -U bbs -h localhost -p 5433 -d bbs Password for user bbs: psql (13.5) WARNING: Console code page (65001) differs from Windows code page (936) 8-bit characters might not work correctly. See psql reference page "Notes for Windows users" for details. Type "help" for help. bbs=>
这里psql
工具的相关命令行参数含义:
执行连接请求后会要求你输入密码,输入正确后就可以进入相应的数据库操作环境,就可以直接执行SQL:
bbs=> select * from "user"; id | name | ctime | password ----+------+-----------------+---------- 2 | abc | 16:56:33.850223 | abc 3 | 111 | 16:57:05.156293 | 111 4 | 222 | 16:57:05.156293 | 222 (3 rows)
一般来说图形界面比命令行好用的多,但如果你的程序连接PSQL出现问题,可以尝试用命令行的方式连接,这样有助于判断相关连接参数是否出现问题。
谢谢阅读。