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

た 入场券 2022-12-02 10:49 308阅读 0赞

在这里插入图片描述
作为传统开源数据库的坚定支持者,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

  1. liumiaocn:~ liumiao$ docker pull postgres:12.4-alpine
  2. 12.4-alpine: Pulling from library/postgres
  3. ...省略
  4. Digest: sha256:b05c3311616d0d798225524e351423efa01dd3e5e6b56b2cca96a64d8fd4e746
  5. Status: Downloaded newer image for postgres:12.4-alpine
  6. docker.io/library/postgres:12.4-alpine
  7. liumiaocn:~ liumiao$ docker images |grep 12.4-alpine
  8. postgres 12.4-alpine 3781fe35c6b8 2 weeks ago 157MB
  9. 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
  1. liumiaocn:postgres liumiao$ docker run --name postgres -v ${HOME}/data:/var/lib/postgresql/data -e POSTGRES_PASSWORD=liuiaocn -d postgres:12.4-alpine
  2. a06874369dbfeff4b4a6f63d1410c566cdfc411f410126746d68a6b0b4e927c2
  3. liumiaocn:postgres liumiao$ docker ps
  4. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  5. a06874369dbf postgres:12.4-alpine "docker-entrypoint.s…" 2 seconds ago Up 1 second 5432/tcp postgres
  6. liumiaocn:postgres liumiao$

进入容器

  1. liumiaocn:postgres liumiao$ docker exec -it postgres sh
  2. / # hostname
  3. a06874369dbf
  4. / # which psql
  5. /usr/local/bin/psql
  6. / #

版本确认

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

  1. / # env |grep VERSION
  2. PG_VERSION=12.4
  3. / #

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

  1. / # psql --version
  2. psql (PostgreSQL) 12.4
  3. / #

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

  1. postgres=# show server_version_num;
  2. server_version_num
  3. --------------------
  4. 120004
  5. (1 row)
  6. postgres=#

或者使用SELECT语句

  1. postgres=# SELECT current_setting('server_version_num');
  2. current_setting
  3. -----------------
  4. 120004
  5. (1 row)
  6. postgres=#

或者使用select version()语句

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

连接数据库

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

  1. / # psql -U postgres
  2. psql (12.4)
  3. Type "help" for help.
  4. postgres=#

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

  1. postgres=# select * from current_user;
  2. current_user
  3. --------------
  4. postgres
  5. (1 row)
  6. postgres=#

也可以使用简化语句select user

  1. postgres=# select user;
  2. user
  3. ----------
  4. postgres
  5. (1 row)
  6. postgres=#

查看版权信息

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

查看已创建的数据库

  1. / # psql -U postgres
  2. psql (12.4)
  3. Type "help" for help.
  4. postgres=# \l
  5. List of databases
  6. Name | Owner | Encoding | Collate | Ctype | Access privileges
  7. -----------+----------+----------+------------+------------+-----------------------
  8. postgres | postgres | UTF8 | en_US.utf8 | en_US.utf8 |
  9. template0 | postgres | UTF8 | en_US.utf8 | en_US.utf8 | =c/postgres +
  10. | | | | | postgres=CTc/postgres
  11. template1 | postgres | UTF8 | en_US.utf8 | en_US.utf8 | =c/postgres +
  12. | | | | | postgres=CTc/postgres
  13. (3 rows)
  14. postgres=#

创建数据库

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

  1. postgres=# create database test;
  2. CREATE DATABASE
  3. postgres=# \l
  4. List of databases
  5. Name | Owner | Encoding | Collate | Ctype | Access privileges
  6. -----------+----------+----------+------------+------------+-----------------------
  7. postgres | postgres | UTF8 | en_US.utf8 | en_US.utf8 |
  8. template0 | postgres | UTF8 | en_US.utf8 | en_US.utf8 | =c/postgres +
  9. | | | | | postgres=CTc/postgres
  10. template1 | postgres | UTF8 | en_US.utf8 | en_US.utf8 | =c/postgres +
  11. | | | | | postgres=CTc/postgres
  12. test | postgres | UTF8 | en_US.utf8 | en_US.utf8 |
  13. (4 rows)
  14. postgres=#

连接数据库

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

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

基本操作

版本确认

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

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

字符串处理

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

  1. test=# select 'hello' || ' world';
  2. ?column?
  3. -------------
  4. hello world
  5. (1 row)
  6. test=#

简单计算

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

  1. test=# select 3*7;
  2. ?column?
  3. ----------
  4. 21
  5. (1 row)
  6. test=#

总结

总结

发表评论

表情:
评论列表 (有 0 条评论,308人围观)

还没有评论,来说两句吧...

相关阅读

    相关 PostgreSQL 介绍

     PostgreSQL( 读作 Post-Gres-Q-L)是一个功能非常强大的、源代码开放的客户/服务器关系型数据库管理系统(RDBMS)。采用类似MIT的许可协议,允许开发