PostgreSQL 入门

下载与安装

部分国产数据库采用PostgreSQL作为基础进行研发,因此先尝试了解一下原始数据库情况。

PostgreSQL 简称 PG

官网:https://www.postgresql.org/

PostgreSQL “世界上最先进的开源关系型数据库” 这是官网上的口号。

PostgreSQL: The World’s Most Advanced Open Source Relational Database

在这里插入图片描述

事实上在国外PG确实非常的流行火爆 从 Stackoverflow 2024 总结 可以看出PG在国内非常受欢迎。

在这里插入图片描述

下面将以Windows为例尝试初步使用PostgreSQL

到下载页面下载安装包 https://www.enterprisedb.com/downloads/postgres-postgresql-downloads

考虑到技术成熟性和装机量,我这里选择较老的版本9.6.24,该版本也是部分国产数据库的基础。

在这里插入图片描述

下载后运行安装程序
在这里插入图片描述
在尝试安装 Microsoft VC++的运行环境失败弹出如下提示。
在这里插入图片描述
根据社区的指南,该问题可能是由于安装的VC++运行环境比当前的老导致,跳过这部分安装

通过命令行运行安装程序:

postgresql-9.6.24-1-windows-x64.exe  --install_runtimes 0

在这里插入图片描述
启动成功,Next
在这里插入图片描述

安装位置 C:\Program Files\PostgreSQL\9.6 保持默认 Next

在这里插入图片描述
数据存储路径 C:\Program Files\PostgreSQL\9.6\data 保持默认 Next

在这里插入图片描述

设置ROOT用户口令,在PG中ROOT用户名为 postgresNext

在这里插入图片描述

设置数据库服务端口 5432 保持默认, Next

在这里插入图片描述

设置地区 Chinese(Simplified),ChinaNext

在这里插入图片描述

提示确认信息后 Next
在这里插入图片描述

安装
在这里插入图片描述

提示安装程序退出后服务将自动启动,Stack Builder 取消勾选 这个会下载和安装一些工具、驱动之类的,这个是可选的! Finish

安装完成后可以通过查看windows 服务的方式检查是否安装 Win + R

services.msc

在这里插入图片描述
可以看到 postgresql-x64-9.6 已经处于 正在运行 服务安装完成。

在这里插入图片描述

为了更加方便的在CMD中使用PG的工具,这里而外增加一步添加环境变量。

PG的Bin目录位于:C:\Program Files\PostgreSQL\9.6\bin

在这里插入图片描述

配置完成后就可以已使用CMD来进行测试了,在PG中使用 psql 程序作为PG的客户端,类似于MySQL中的mysql命令。

psql -V

在这里插入图片描述

数据库使用

使用超管连接数据库

psql -U postgres

较为完成的写法为 psql -U 用户名 -p 端口 -h 主机地址 例如

psql -U postgres -p 5432 -h 127.0.0.1

在输出口令提示后输入安装时预设的 postgres 用户口令登录,登录成功后进入命令交互界面。

所有的命令都以 用户名=# 开头
在这里插入图片描述

可以使用,获取帮助,查看支持的命令。

\?

在这里插入图片描述

查询所有数据库,等价MySQL中 show databases;

\l

在这里插入图片描述

PG采用了3级的管理模式:数据库(database)、模式(scheme)、表(table)

一个PG数据库实例可以有多个数据库,每个数据库内可以有多个模式,每个模式中可以有多个表。

模式(scheme)在PG是可选的,默认在创建数据库时会创建一个名为public的模式作为默认模式,若在创建表时没有指定模式,那么表将在默认模式内创建。

模式(scheme):用于在同一个数据库内进行隔离,类似于编程语言中命名空间或包的概念,通过不同模式在一个数据库中可以有多个相同表明的表,例如:schemeA.userschemeB.user
模式的使用需要开发者在创建表时显示指定例如CREATE TABLE myschema.mytable

在这里插入图片描述

由于PG对SQL标准的严格执行,除了部分数据库库采用的方言可能需要调整一下,在使用过程中我们基本不需要考虑标准的SQL不兼容的情况。

查询当使用的字符集

show server_encoding;

在这里插入图片描述

创建数据库mypg

CREATE DATABASE mypg;

在这里插入图片描述

查询数据库

\l

在这里插入图片描述

创建同名用户mypg

CREATE USER mypg WITH ENCRYPTED PASSWORD '12345678';

在这里插入图片描述

将数据库mypg授权给用户mypg

GRANT ALL PRIVILEGES ON DATABASE mypg TO mypg ;

在这里插入图片描述

到此为止DBA的工作就结束了,接下就是退出登录然后使用指定用户登录数据库进行管理。

退出登录

\q

在这里插入图片描述

登录mypg用户

psql -U mypg

在这里插入图片描述
查询数据库

\l

在这里插入图片描述
切换数据库,等价于MySQL中的use DATABASE_NAME;

\c mypg;

在这里插入图片描述

查看数据库中的表

\d

目前还没有任何表
在这里插入图片描述

创建表myuser,主键类型调整为SERIAL 等价于MySQL的 AUTO_INCREMENT

CREATE TABLE myuser (
    id SERIAL PRIMARY KEY,
    created_at TIMESTAMP,
    username VARCHAR(255),
    role INT
);

在这里插入图片描述

列出所有表

\d

在这里插入图片描述

查看表详情

\d myuser;

在这里插入图片描述

插入数据

INSERT INTO myuser(created_at, username,  role) VALUES ('2024-12-11 13:53:11', 'foo', 1);

在这里插入图片描述

查询数据

SELECT * FROM myuser;

在这里插入图片描述

总结

在简单试用了PG后,我总结了下几个特点:

  • 标准,对SQL标准的严格执行,减少了应用兼容适配成本。
  • 现代,字段支持例如数组、JSON、XML、经纬度、向量、IP等,这些都是现代开发常用的。
  • 开放开源,源代码开源且社区活跃,并且较为中立。
  • 易用,简单易用无需而外学习成本,开箱即用社区支持良好,大部分问题都能得到解决。

参考文献

[1]. postgresql . PostgreSQL 9.6.24 Documentation . 2021 . https://www.postgresql.org/docs/9.6/
[2]. Medium . Arnav Gupta . Creating user, database and adding access on PostgreSQL . 2017.03 . https://medium.com/coding-blocks/creating-user-database-and-adding-access-on-postgresql-8bfcd2f4a91e
[3]. 阮一峰 . PostgreSQL新手入门 . 2013.12 . https://www.ruanyifeng.com/blog/2013/12/getting_started_with_postgresql.html
[4]. stackoverflow . Technology | 2024 . https://survey.stackoverflow.co/2024/technology#most-popular-technologies-database-prof

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/936608.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java-26 深入浅出 Spring - 实现简易Ioc-02 无IoC与AOP场景下实现业务

点一下关注吧!!!非常感谢!!持续更新!!! 大数据篇正在更新!https://blog.csdn.net/w776341482/category_12713819.html 目前已经更新到了: MyBatis&#xff…

工作流审批功能全解析:提升流程效率的关键要素

1. 引言 在当今数字化时代,企业与组织的运营效率在很大程度上依赖于高效、精准的工作流审批系统。随着业务日益复杂且多样化,审批流程变得愈加细致和灵活。一个完善的工作流审批系统不仅能确保任务在组织内部有序流转、协调各方资源,还能实现…

API接口示例:电商商品评论数据

当然,以下是一个简化的电商商品评论数据API接口的示例。请注意,这只是一个示例,实际的API接口可能会更加复杂,并且会包含更多的验证、错误处理和安全措施。 API接口示例:电商商品评论数据 基础信息 API名称&#xf…

HCIA-Access V2.5_2_2_2网络通信基础_IP编址与路由

网络层数据封装 首先IP地址封装在网络层,它用于标识一台网络设备,其中IP地址分为两个部分,网络地址和主机地址,通过我们采用点分十进制的形式进行表示。 IP地址分类 对IP地址而言,它细分为五类,A,B,C,D,E,…

Microsemi Libero使用技巧11——CoreUARTAPB RX管脚分配时不显示

调用串口IP核CoreUARTAPB,并例化到顶层设计,发现UART_RX管脚在进行管脚分配时没有显示出来,最后发现是CoreAPB3总线IP核配置不对导致,改为如下配置后正常。

SEGGER | 基于STM32F405 + Keil - RTT组件01 - 移植SEGGER RTT

导言 RTT(Real Time Transfer)是一种用于嵌入式中与用户进行交互的技术,它结合了SWO和半主机的优点,具有极高的性能。 使用RTT可以从MCU非常快速输出调试信息和数据,且不影响MCU实时性。这个功能可以用于很多支持J-Link的设备和MCU&#xff0…

SpringBoot集成JWT和Redis实现鉴权登录功能

目前市面上有许多鉴权框架,鉴权原理大同小异,本文简单介绍下利用JWT和Redis实现鉴权功能,算是抛砖引玉吧。 主要原理就是“令牌主动失效机制”,主要包括以下4个步骤: (1)利用拦截器LoginInterceptor实现所有接口登录拦…

29.在Vue 3中使用OpenLayers读取WKB数据并显示图形

在Web开发中,地理信息系统(GIS)应用越来越重要,尤其是在地图展示和空间数据分析的场景中。OpenLayers作为一个强大的开源JavaScript库,为开发者提供了丰富的地图展示和空间数据处理能力。在本篇文章中,我将…

【bWAPP】 HTML Injection (HTML注入)

我们都是在一条铺满荆棘的新路上摸索着前行,碰个鼻青眼肿几乎不可避免,而问题在于,我们能不能在这条路上跌倒之后,爬起来继续走下去。 HTML Injection - Reflected (GET) get方式的html代码注入 漏洞url:http://ran…

内网是如何访问到互联网的(华为源NAT)

私网地址如何能够访问到公网的? 在上一篇中,我们用任意一个内网的终端都能访问到百度的服务器,但是这是我们在互联网设备上面做了回程路由才实现的,在实际中,之前也说过运营商是不会写任何路由过来的,那对于…

tomcat的优化和动静分离

tomcat的优化 1.tomcat的配置优化 2.操作系统的内核优化 注意:设置保存后,需要重新ssh连接才会看到配置更改的变化 vim /etc/security/limits.conf # 65535 为Linux系统最大打开文件数 * soft nproc 65535 * hard nproc 65535 * soft nofile 65535 *…

粗略的过一下StableDiffusion3的一些方面

什么是Stable Diffusion 3 Stable Diffusion 3是由Stability AI开发的最新且最先进的文本生成图像模型之一,在图像保真度、多主体处理和文本遵循性方面实现了显著提升。该模型采用了全新的多模态扩散变压器(MMDiT)架构,并为图像和…

测试工程师八股文04|计算机网络 和 其他

一、计算机网络 1、http和https的区别 HTTP和HTTPS是用于在互联网上传输数据的协议。它们都是应用层协议,建立在TCP/IP协议栈之上,用于客户端(如浏览器)和服务器之间的通信。 ①http和https的主要区别在于安全性。http是一种明…

doxygen–自动生成文档工具

原文地址:doxygen–自动生成文档工具 – 无敌牛 欢迎参观我的个人博客:无敌牛 – 技术/著作/典籍/分享等 简介 doxygen是软件开发中广泛使用的文档生成工具。它可以从源代码注释中自动生成文档,解析类、函数、参数相关信息,并生…

ElasticSearch04-高级操作

零、文章目录 ElasticSearch04-高级操作 1、文档添加 (1)生成文档ID 不指定 ID,即自动生成ID,ID 是一行数据的唯一键。语法:POST /index/_doc # 创建索引 PUT testid# 默认情况下自动生成ID POST /testid/_doc {&…

【GitHub分享】you-get项目

【GitHub分享】you-get 一、介绍二、安装教程三、使用教程四、配置ffmpeg五,卸载 如果大家想要更具体地操作可去开源网站查看手册,这里只是一些简单介绍,但是也够用一般,有什么问题,也可以留言。 一、介绍 you-get是一…

Polars数据聚合与旋转实战教程

在这篇博文中,我们的目标是解决数据爱好者提出的一个常见问题:如何有效地从Polars DataFrame中创建汇总视图,以便在不同时间段或类别之间轻松进行比较。我们将使用一个实际的数据集示例来探索实现这一目标的各种方法。 Polars简介 Polars 是…

ECharts柱状图-柱图2,附视频讲解与代码下载

引言: 在数据可视化的世界里,ECharts凭借其丰富的图表类型和强大的配置能力,成为了众多开发者的首选。今天,我将带大家一起实现一个柱状图图表,通过该图表我们可以直观地展示和分析数据。此外,我还将提供…

Oracle进行exp导出密码中有特殊字符报EXP-00056和ORA-12154错处理

今天,业务人员反馈,在本地进行exp导出时报错,报错内容如下: 在Oracle密码中有特殊字符时,需要加引号,但引号怎么加呢?总结如下: 1、在windows系统中 exp 用户名/“““密码”””n…

解决没法docker pull问题

没想到国内源死差不多了,以下内容需要提前科学上网 su cd /etc/systemd/system/docker.service.d vim proxy.conf 参照下图修改,代理服务器改成你自己的。 ​​[Service] Environment"HTTP_PROXYsocks5://192.168.176.180:10810" Environment&…