数据库:PostgreSQL:基础功能使用介绍 MYSQL 5.7 高级SQL语句(3)——数据库函数和存储过程 mysql导出数据到表格讲解大全(导出数据带表头,导出数据中文乱码问题解决) SpringBoot升级/指定jackson版本 JAVA - EnumMap与EnumSet简单总结 js获取主机mac等信息【亲测有效】-- 附执行结果&代码 [记录六] Vue(全家桶)+node+koa2+mysql+nginx+redis,博客全栈项目之node后台连接mysql和redis,登陆接口的编写 C# 读取XML配置文件 MongoDB数据库设置密码 Redis之重设密码及开启远程访问 本地Navicat连接阿里云MySQL数据库注意要点 PHP Windows系统实现定时任务的两种方式bat版 面试官让我手写promise,我这样写,他很满意 超级码力在线编程大赛初赛 第二场 UML类图的依赖和关联详解(含代码) 【C语言】新手实现简单的石头剪刀布人机对战 Codeforces Round #666 (Div. 2)题解ABC Codeforces Round #666 (Div. 2)E Monster Invaders 华为今年不会推出运行鸿蒙OS的手机;Deno 1.3.2发布|极客头条 异或在笔试题中的超神表现 超级码力在线编程大赛初赛 第2场 T1-T4题解 1397D. Stoned Game(博弈) Codeforces Round #666(Div.2)A~D题题解 高性能微服务架构技术选型 阿里饿了么Java4面:(数据结构+框架源码+JVM+分布式) 2020java面试总结 使用ffmpeg提取mp4内部日期重命名文件(需lua) 【剑指Offer】56.2 数组中只出现一次的数字,其他出现3次 JAVA二三事-使用IO+Properties实现动态读取文本信息 排序算法的C语言实现C代码(未更完) RT-Thread 内核学习--信号量的初步使用 【剑指Offer】57.2 和为S的连续正数序列 Qt三方库开发技术:QXlsx介绍、编译和使用 4G DTU模块的作用和功能说明 【Tips】- Wifi模块和4G无线通信 【5G核心网】 Identifiers 身份标识 DPDK支持的硬件:CPU、网卡NIC、加密引擎、基带加速器 如何根据普通ip地址获取当前地理位置 人工智能能力提升指导总结 520了,用32做个简单的小程序 程序员的数学--用贝叶斯定理来推断一个案子 文旅部新规:在线旅游网站不得擅自屏蔽删除评价 不得大数据杀熟 苏宁易购开学季消费大数据:手机以旧换新销量增长299% 做实供电服务“133” 助大数据直上“云”端 思科前程序员离职 5 月后“删虚拟机跑路”,240 万美元打水漂,网友:够狠! 抗疫代码成国博最新藏品 阿里程序员“写代码写进国博挺酷” 国博史上首次收藏代码!它们是阿里程序员写下的抗疫代码 威胜信息发布2020年上半年业绩:物联网产业进入爆发期 营收净利双增长 下月发布会不止有新品折叠屏手机 酷开的物联网家居生态野心初现 史上最全的数据库面试题 数据库面试必看
您的位置:首页 >开发 >

数据库:PostgreSQL:基础功能使用介绍

在这里插入图片描述
作为传统开源数据库的坚定支持者,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.orgLicensePostgreSQL 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-alpine12.4-alpine: Pulling from library/postgres...省略Digest: sha256:b05c3311616d0d798225524e351423efa01dd3e5e6b56b2cca96a64d8fd4e746Status: Downloaded newer image for postgres:12.4-alpinedocker.io/library/postgres:12.4-alpineliumiaocn:~ liumiao$ docker images |grep 12.4-alpinepostgres 12.4-alpine 3781fe35c6b82 weeks ago 157MBliumiaocn:~ 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-alpinea06874369dbfeff4b4a6f63d1410c566cdfc411f410126746d68a6b0b4e927c2liumiaocn:postgres liumiao$ docker psCONTAINER IDIMAGECOMMANDCREATED STATUSPORTS NAMESa06874369dbfpostgres:12.4-alpine "docker-entrypoint.s…" 2 seconds ago Up 1 second 5432/tcppostgresliumiaocn:postgres liumiao$ 

进入容器

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

版本确认

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

/ # env |grep VERSIONPG_VERSION=12.4/ #

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

/ # psql --versionpsql (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 postgrespsql (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=# \copyrightPostgreSQL 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 itsdocumentation for any purpose, without fee, and without a written agreementis hereby granted, provided that the above copyright notice and thisparagraph and the following two paragraphs appear in all copies.IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FORDIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDINGLOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITSDOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THEPOSSIBILITY OF SUCH DAMAGE.THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITYAND FITNESS FOR A PARTICULAR PURPOSE.THE SOFTWARE PROVIDED HEREUNDER ISON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATIONS TOPROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.postgres=# 

查看已创建的数据库

/ # psql -U postgrespsql (12.4)Type "help" for help.postgres=# \l List of databases Name|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/postgres template1 | 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 DATABASEpostgres=# \l List of databases Name|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/postgres template1 | postgres | UTF8 | en_US.utf8 | en_US.utf8 | =c/postgres+ ||||| postgres=CTc/postgres test| postgres | UTF8 | en_US.utf8 | en_US.utf8 | (4 rows)postgres=# 

连接数据库

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

postgres=# \c testYou 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=#

总结

总结

淼叔CSDN认证博客专家神经网络TensorFlowNLP资深架构师,PMP、OCP、CSM、HPE University讲师,EXIN DevOps Professional与DevOps Master认证讲师,曾担任HPE GD China DevOps & Agile Leader,帮助企业级客户提供DevOps咨询培训以及实施指导。熟悉通信和金融领域,有超过10年金融外汇行业的架构设计、开发、维护经验,在十几年的IT从业生涯中拥有了软件开发设计领域接近全生命周期的经验和知识积累。

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。