之前有看过数据库排行,除去Oracle,MySQL,MSSQL之外,排在第四的就是PostgreSQL,因此略微有点印象.现在上网不经意间看到PostgreSQL居然支持直接的RESTful接口,这么强?居然还是伯克利出品?于是我便打算看一看PostgreSQL相关的东西
PostgreSQL认识
PostgreSQL是一款基于POSTGRES4.2版本的对象关系型数据库管理系统(RDBMS).POSTGRES由加利福利亚伯克利分校计算机与科学部门所研发
POSTGRES项目于1986年由Michael Stonebraker教授所带领研发,当时受到许多研究部门和学校教育的青睐,1993年POSTGRES的使用者几乎翻了一倍,不过最后由于维护需要消耗大量时间,该项目终止于4.2版本
1994年,Andrew Yu和Jolly Chen为POSTGRES添加了一个SQL解释器,并将其作为一个开源产品以新的名称Postgres95发布在互联网上.Postgres95完全使用ANSI C所编写,相较于POSTGRES大约快30-50%,缩减了25%的代码量,做了很多改进并修复了许多bug
1996年,由于Postgres95这个名称很明显已经不再适用,这款软件被正式更名为PostgreSQL,并且初始版本号确立为6.0.目前为止,PostgreSQL已发展至11beta版本
PostgreSQL基础架构
- C/S模型
- 多进程结构:主进程,检查进程,文件写入进程,日志写入进程,删除标记进程,状态收集进程等等
创建数据库
PostgreSQL提供了createdb命令可以直接创建数据库,注意使用该命令的用户必须是PostgreSQL存在的角色,如postgres
创建数据库:
1 | $ createdb DATABASE //如果省略数据库名,则使用角色名作为数据库名 |
删除数据库:
1 | $ dropdb DATABASE |
连接至一个数据库
有多种方式可以连接至PostgreSQL数据库:
- 内置的PostgreSQL终端交互程序:psql
- 各种前端图形化交互工具.如pgAdmin
- 编程语言的PostgreSQL库.几乎每个编程语言都有
由于psql是内置的客户端,因此示例基本使用psql
psql命令综合使用
1 | $ psql DATABASE //连接至一个数据库.与createdb命令类似,如果省略数据库名,则使用角色名作为数据库名 |
进入psql终端后,会出现这样的信息:
1 | psql (10.5 (Debian 10.5-1.pgdg90+1)) |
最后一行也可能是这样的,这代表一个数据库的超级用户:
1 | postgres=# |
psql杂项命令
查看PostgreSQL版本:
1 | postgres=# select version(); |
查看当前日期:
1 | postgres=# select current_date; |
进行简单的算术:
1 | postgres=# select 2+2; |
psql程序还有许多不是SQL语句的内置命令.这些命令以一个反斜线符号\作为开头
例如,查看众多PostgreSQL的SQL命令的帮助:
1 | postgres=# \h |
退出psql交互终端:
1 | postgres=# \q |
可以使用\?命令查看更多的内置命令的相关帮助