作为传统开源数据库的坚定支持者,PostgreSQL在数据库领域中一直有不错的名声,在TOP DB index指数中也基本上是在第五的位置。由于考虑到Oracle、MySQL和SQL Server常年居于前三,加之Microsoft Access借助Office的背景也一直有不错的背景,第五的位置的争夺其实才是相对有看头的,PostgreSQL在这种情况之下,在MongoDB和Firebase的追赶下还能保住第五已经是很不错。这篇文章来介绍一下PostgreSQL的基础功能和使用介绍。


TOP DB index

从2020年8月份的TOP DB index的表现可以看到,前四名虽然暂时稳不可破,但是持续不停的下跌已经是目前的趋势,如没有特殊的事件或者技术出现,这个趋势应该会持续下去。前5名都是传统的关系型数据库,所以在这个整体下降的趋势背景之下,第5的PostgreSQL的稳定上升更显得尤为可贵。至于Firebase能够继续上升取代PostgreSQL的位置还只能是继续观望,但是作为传统的关系型数据库,PostgreSQL已经成为重要的选择项之一,或者说是MySQL与PostgreSQL二选一。


概要介绍

项目 内容
官网 postgresql.org
License PostgreSQL License
开源/闭源 开源
推出时间 1996/07/08
目前最新稳定版本 12.4
代码仓库 https://git.postgresql.org/gitweb/?p=postgresql.git
编写语言 C
支持平台 FreeBSD、 Linux、 macOS,、OpenBSD以及Windows

安装配置

PostgreSQl有多种安装方式,本文使用最为简单的容器化方式。

步骤1: docker pull

拉取官方镜像,官方镜像分普通版和alpine版,这里为了镜像尺寸小一点,选取拉取PostgreSQL 13的alpine版。

执行命令:docker pull postgres:12.4-alpine

liumiaocn:~ liumiao$ docker pull postgres:12.4-alpine
12.4-alpine: Pulling from library/postgres
...省略
Digest: sha256:b05c3311616d0d798225524e351423efa01dd3e5e6b56b2cca96a64d8fd4e746
Status: Downloaded newer image for postgres:12.4-alpine
docker.io/library/postgres:12.4-alpine
liumiaocn:~ liumiao$ docker images |grep 12.4-alpine
postgres                                                             12.4-alpine                     3781fe35c6b8        2 weeks ago         157MB
liumiaocn:~ liumiao$

启动镜像

执行如下命令,即可将步骤1中拉取的PostgreSQL 12.4版本的数据库服务启动起来。

执行命令:docker run --name postgres -v ${HOME}/data:/var/lib/postgresql/data -e POSTGRES_PASSWORD=liuiaocn -d postgres:12.4-alpine

上述命令启动了如下的数据库服务:

项目 说明
PostgreSQL的版本 为12.4
容器名称 postgres
数据库密码 liumiaocn
数据卷挂载目录 data
liumiaocn:postgres liumiao$ docker run --name postgres -v ${HOME}/data:/var/lib/postgresql/data -e POSTGRES_PASSWORD=liuiaocn -d postgres:12.4-alpine
a06874369dbfeff4b4a6f63d1410c566cdfc411f410126746d68a6b0b4e927c2
liumiaocn:postgres liumiao$ docker ps
CONTAINER ID        IMAGE                  COMMAND                  CREATED             STATUS              PORTS               NAMES
a06874369dbf        postgres:12.4-alpine   "docker-entrypoint.s…"   2 seconds ago       Up 1 second         5432/tcp            postgres
liumiaocn:postgres liumiao$

进入容器

liumiaocn:postgres liumiao$ docker exec -it postgres sh
/ # hostname
a06874369dbf
/ # which psql
/usr/local/bin/psql
/ #

版本确认

可以通过内置的环境变量确认

/ # env |grep VERSION
PG_VERSION=12.4
/ #

也可以通过内置的psql确认客户端版本

/ # psql --version
psql (PostgreSQL) 12.4
/ #

或者通过show命令确认(连接之后才能使用,注意提示符)

postgres=# show server_version_num;server_version_num
--------------------120004
(1 row)postgres=#

或者使用SELECT语句

postgres=# SELECT current_setting('server_version_num');current_setting
-----------------120004
(1 row)postgres=#

或者使用select version()语句

postgres=# select version();version
---------------------------------------------------------------------------------------PostgreSQL 12.4 on x86_64-pc-linux-musl, compiled by gcc (Alpine 9.3.0) 9.3.0, 64-bit
(1 row)postgres=#

连接数据库

上述方式生成的数据库,缺省的数据库用户名为postgres,可以使用-U选项进行连接

/ # psql -U postgres
psql (12.4)
Type "help" for help.postgres=#

查询当前用户信息可以使用如下select语句

postgres=# select * from current_user;current_user
--------------postgres
(1 row)postgres=#

也可以使用简化语句select user

postgres=# select user;user
----------postgres
(1 row)postgres=#

查看版权信息

postgres=# \copyright
PostgreSQL Database Management System
(formerly known as Postgres, then as Postgres95)Portions Copyright (c) 1996-2019, PostgreSQL Global Development GroupPortions Copyright (c) 1994, The Regents of the University of CaliforniaPermission to use, copy, modify, and distribute this software and its
documentation for any purpose, without fee, and without a written agreement
is hereby granted, provided that the above copyright notice and this
paragraph and the following two paragraphs appear in all copies.IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR
DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING
LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS
DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATIONS TO
PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.postgres=#

查看已创建的数据库

/ # psql -U postgres
psql (12.4)
Type "help" for help.postgres=# \lList of databasesName    |  Owner   | Encoding |  Collate   |   Ctype    |   Access privileges
-----------+----------+----------+------------+------------+-----------------------postgres  | postgres | UTF8     | en_US.utf8 | en_US.utf8 | template0 | postgres | UTF8     | en_US.utf8 | en_US.utf8 | =c/postgres          +|          |          |            |            | postgres=CTc/postgrestemplate1 | postgres | UTF8     | en_US.utf8 | en_US.utf8 | =c/postgres          +|          |          |            |            | postgres=CTc/postgres
(3 rows)postgres=#

创建数据库

使用create database test创建名为test的数据库

postgres=# create database test;
CREATE DATABASE
postgres=# \lList of databasesName    |  Owner   | Encoding |  Collate   |   Ctype    |   Access privileges
-----------+----------+----------+------------+------------+-----------------------postgres  | postgres | UTF8     | en_US.utf8 | en_US.utf8 | template0 | postgres | UTF8     | en_US.utf8 | en_US.utf8 | =c/postgres          +|          |          |            |            | postgres=CTc/postgrestemplate1 | postgres | UTF8     | en_US.utf8 | en_US.utf8 | =c/postgres          +|          |          |            |            | postgres=CTc/postgrestest      | postgres | UTF8     | en_US.utf8 | en_US.utf8 |
(4 rows)postgres=#

连接数据库

使用\c 数据库名 命令去连接所指定的数据库,比如\c test,将会连接刚刚创建的test数据库,在连接之后的操作比如创建表,在没有指明数据库名的情况下均对于当前所连接的数据库起作用。

postgres=# \c test
You are now connected to database "test" as user "postgres".
test=#

基本操作

版本确认

虽然psql --version也可以确认版本,就像MySQL或者Oracle一样,在连接实例之后才能进行的确认方式,和MySQL的使用方式基本都一致。

test=# select version();version
---------------------------------------------------------------------------------------PostgreSQL 12.4 on x86_64-pc-linux-musl, compiled by gcc (Alpine 9.3.0) 9.3.0, 64-bit
(1 row)test=#

字符串处理

MySQL中可以使用select "hello world"命令,在PostgreSQL可以使用类似如下命令(注意需要是单引号)

test=# select 'hello' || ' world';?column?
-------------hello world
(1 row)test=#

简单计算

类似Oracle里面的select from dual, 和mysql一样里面可以直接select

test=# select 3*7;?column?
----------21
(1 row)test=#

总结

总结

数据库:PostgreSQL:基础功能使用介绍相关推荐

  1. IDEA2019 Java连接PostgreSQL数据库实现基础功能增删改查

    IDEA2019 Java连接PostgreSQL数据库实现基础功能增删改查 注意: 每个方法对应单个java类,可以自行进行整理汇总到一个类中 一.Java通过JDBC连接到PostgreSQL数据 ...

  2. 八字算命网站源码技术细节解析:使用PHP和JAVA实现的MVC架构、MySQL数据库设计和功能模块介绍

    技术文档:八字算命网站源码 1. 简介 本文档介绍了八字算命网站源码的技术细节,包括使用的技术.架构.数据库设计.代码结构和功能模块等. 2. 技术选型 本网站采用PHP和JAVA两种技术开发,具体如 ...

  3. ​分布式数据库技术基础:数据分布介绍

    1.数据分布的定义 数据分布是指在分布式环境中通过合理分布数据,提高数据操作自然并行度,以达到最优的执行效率的目的.在构建分布式数据库系统运行环境时,必须考虑数据如何分布在系统的各个场地上. 数据分布 ...

  4. 压测⼯具本地快速安装Jmeter5.x以及基础功能组件介绍线程组和Sampler

    一.Jmeter⾥⾯GUI菜单栏主要组件 添加->threads->线程组(控制总体并发)线程组->添加-> Sampler(采样器)-> Http (⼀个线程组下⾯可以 ...

  5. 开源的数据库,PostgreSQL 基础入门实战

    PostgreSQL 简介与安装 实验介绍 大家好,本课程是关于 PostgreSQL 数据库的使用说明,细致讲解 PostgreSQL 的特性与使用方法,尽量做到描述朴实.深入浅出.示例充足.覆盖重 ...

  6. 企业IT管理必备 数据库审计基础介绍

    本文讲的是企业IT管理必备 数据库审计基础介绍,随着信息化的深入和普及,各行各业对信息系统的依赖性越来越强,信息系统中的数据也逐渐成为了企业的生命.数据的不准确.不真实.不一致.重复杂乱等就会影响企业 ...

  7. 钉钉功能介绍_平棉集团组织召开阿里钉钉办公系统基础功能培训会

    4月11日上午,平棉集团在总部26楼多媒体会议室组织召开阿里钉钉办公系统基础功能培训会,邀请河南一一信息技术公司经理杨杉前来授课.集团公司董事长张先顺及公司领导陈亚民.王仲山.王向阳.陶尚林,各生产经 ...

  8. PostgreSQL数据库远程连接功能的开启

    PostgreSQL数据库远程连接功能的开启 需要修改连个配置文件,默认位于 安装目录的data子文件夹下. 1.postgresql.conf 修改成监听所有ip地址的连接请求,如下: listen ...

  9. 0.96寸OLED(SSD1306)屏幕显示(一)——基础功能介绍

    0.96寸OLED(SSD1306)屏幕显示 (一)基础功能介绍 (二)超长文字水平滚动 (三)屏幕垂直水平滚动 文章目录 前言 一.0.96寸OLED屏幕介绍 二.SSD1306驱动芯片 1)图像显 ...

最新文章

  1. 这本1900页的机器学习数学全书火了!完整版开放下载
  2. Android 反编译Apk提取XML文件
  3. 9.10 css
  4. windows/ubuntu 文件共享之 Samba 配置
  5. mysql当前时间加一天_MySQL 的加锁处理,你都了解的一清二楚了吗?
  6. 【图像超分辨率】MSAN:Scene-Adaptive RS Img SR a Multiscale Attention
  7. Dapr微服务应用开发系列0:概述
  8. 英特尔发布全新显卡品牌“锐炫” 首款显卡将于 2022 年上市
  9. 我的docker随笔17:使用docker-compose启动MySQL、Redis和Mongo
  10. base——JRE和JDK的区别【转】
  11. 使用GDAL对DEM渲染处理流程
  12. HUT-XXXX The window of the dazzling 模拟
  13. 合理使用计算机教学反思,生物学课堂中采用计算机多媒体的教学反思
  14. 解决VMware虚拟机字体模糊的办法
  15. Alpha 冲刺(5/10)
  16. C语言共用体中,共用体变量的规律
  17. MYSQL 如何实现重复读
  18. Maven使用(1)
  19. [matlab]matlab cftool点了没反应
  20. java数据库访问方式_纯java方式连接数据库简单操作

热门文章

  1. 前端发展历程与技术应用概述
  2. 用c 语言如何实现鼠标画图,C在控制台上实现鼠标画图功能
  3. oracle 一直提示 无效的列类型
  4. 游戏本自动掉帧_Get这些操作,解决卡顿掉帧
  5. python 线程池与队列简单应用
  6. MacBookPro高效率的快捷键
  7. 你最近在读什么书,及CSAPP上的一个疑问
  8. .NET内存分配浅析
  9. 互联网的轻时代已成为趋势
  10. 饼图百分比的小数matlab,excel的饼图如何显示百分比的小数。 Excel中饼图怎么按照自己填写的百分比来显示...