《Postgresql实战》笔记(二)

本文涉及的产品
云原生数据库 PolarDB MySQL 版,通用型 2核8GB 50GB
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
简介: 《Postgresql实战》笔记(二)

客户端管理工具

客户端工具主要介绍了pgadmin 4以及psql命令的常见用法,这些内容更建议用到的时候使用,会更加熟练。

  • 连接数据库
  • 导入导出sql:通常使用copy命令导出,
  • 导入或者导出脚本
  • 设置脚本和日常定时启动维护脚本

特殊功能

  • 自动补全,自动补全命令,对于大量不常见命令可以通过自动补全快速敲出命令
  • watch反复执行当前sql,watch 后面跟的参数是秒数,这个命令用于调试和测试的时候比较有用
  • timing:显示sql的执行时间
  • 上下键查看历史命令,许多数据库基本都有的功能,但是这个功能需要编译安装的时候指定readline设置
  • 终端提示,设置当前客户端命令的终端提示,可以按照指定格式存储了解当前登录用户等信息。但是需要注意对于一些存在保密系统的数据库不能显示任何和用户或者服务器相关信息

数据类型

数字类型

postgresql的数字类型对于int类型是按照字节数进行划分,比如int2相当于smallint,int4和多数数据库的int一样,而int8则是bigint类型。

另外decimal和numeric是等效的,定义的时候,有两个参数,前一个表示总位数限制,而后面表示小数位数限制,小数字位可以是0。

浮点类型在日常工作中使用情况不多,对于存储金额场景通常会用更具精确度的decimal,所以double浮点一般表示需要小数但是精度要求不高的数据。

另外有一个比较特殊的变量serial,自增序列准确来说不能算是数据类型,因为在数据变更的时候会内部生成序列号。

字符类型

character varing表示变长,存储的时候会使用实际的长度存储,而char为定长类型,无论数据长度多少,对于未使用部分都会填充空白字符。

如果变长类型不指定长度则可以存储任意长度字符,类似text,而char如果不指定长度默认为1。

虽然是任意的,但是因为一个字段实际能表示的长度是1gb所以大小超过1g的字符是无法存储的。

字符操作函数

  • char_length
  • octet_length
  • position x in xxxx
  • substirng
  • splitpart text text int

时间类型

时间类型可以通过now函数获取当前时间,另外库通过双冒号方式对于列进行转化操作比如下面写法 now():timestamp 的方式转化。除此之外还可以对于时间加减,比如加一天减一天等。

除了这些函数之外Postgre还定义了关键字快速获取当前时间或者时间戳等,比如 current_date. current_time,另外还有一个关键函数extract 获取详细的年月日时分秒等等,具体的使用可以参考文档,提供许多参数获取指定数据,用法案例如下

extract day from now()

其他类型

Postgre还支持很多其他类型的数据类型比如布尔类型,不过Postgre的布尔类型比较坑,TRUE可以表示为 t yes on 1等等花样,都可以当做TRUE。

另外虽然布尔可以插入Null值,但是查询的时候显示的会是f

postgresql支持原生的网络ip存储,这一点挺方便的,因为ip存储通常情况下使用整型存储比较多,对于这个类型不做过多介绍,因为这种特殊类型会影响数据库可移植性。

网络类型

下面是网络类型的操作类型表

另外还有比较有意思的获取网络地址函数,有三个函数可供选择

  • host:取ip
  • text:ip地址和网络掩码
  • network:子网掩码

数组类型

定义数组类型库适应和编程语言一样的方式,比如 a[] 这样的方式

插入数据到数组中也有很多种方式

  1. 通过{1,2,3}这样的形式插入数组数据
  2. 使用关键字array,比如array[1,2,3]

数组删除追加更新

插入数组比较简单,那么这种特殊结构如何更新删除? 这里就需要使用Postgre的函数了

  • 追加数组元素:使用array_append函数往数组添加元素,比如array_append(array[1,2,3],4)这样就把4追加上去了,还有一种是使用双中竖线追加,和字符串的拼接一个操作符,[1,2,3] || 4也可以追加数组元素
  • 更新数组元素:更新数组和多数编程语言一样,update array[3]
  • 删除使用array_remove,案例比如array_remove(array[3])

除了增删改差之外还有其他数组的函数操作,比如获取长度,获取纬度是一维数组还是二维数字,再比如数组替换操作可以参考官方文档。

数组操作符表如下:

范围类型

范围类型专门用于表示数据类型的范围,这个看上去有点奇怪。 范围类型顾名思义就是表示某个数据类型的范围,比如整型数据范围,时间类型的范围。 适应场景为价格区间范围,日期安排等业务有可能用到。

范围类型包含上下界的关系,圆括号表示排除上下线,方括号表示包含上下限。 范围类型的标准是包含下界不包含上界,这点不受到建表的改变影响,也就是说哪怕设计字段包含上下界,显示也是包含下界不包含上界。

根据书中例子也就是[4,7)表示456但是不包含7,这是范围类型标准。

操作符 范围类型操作符比较常用的是 @>表示包含操作符,另外比较常见的操作是使用函数lower和upper获取当前范围类型的上界和下界。

json类型

这个有必要记忆一下,原生json存储支持意味着更好的存储和查询效率,省去转化的开销,但是关于这个类型的细节不少

json查询,Postgre提供丰富的函数和操作符辅助获取json内容:

  • 查询某个键
  • 获取json数据使用name->'col2'
  • 获取原始文本可以使用两个右箭头name->>看上去比较奇怪。

另外Postgre支持两种joson存储,一种是使用jsonb的方式存储,两者的主要区别是存储json存储原文,而jsonb要存储二进制数据,所以写入的时候json快,但是检索的时候jslonb要快一些。

json函数建议用到的时候再去阅读文档了解,这里主要介绍两种追加方式,一种是双竖线追加,另一种是使用 jsonb_set函数追加json。

如果需要删除键值可以使用 # 减号或者-删除指定key。

格式转化函数

有三种格式转化操作:

  1. 通过cast函数进行转化
  2. 通过to_char等数据类型函数追加
  3. 通过双冒号转化数据类型。 个人认为最后一种最为方便


相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍如何基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
分布式计算 Hadoop 开发者
参数优先级说明| 学习笔记
快速学习参数优先级说明
244 0
|
4天前
|
云安全 监控 安全
|
1天前
|
存储 机器学习/深度学习 人工智能
打破硬件壁垒!煎饺App:强悍AI语音工具,为何是豆包AI手机平替?
直接上干货!3000 字以上长文,细节拉满,把核心功能、使用技巧和实测结论全给大家摆明白,读完你就知道这款 “安卓机通用 AI 语音工具"——煎饺App它为何能打破硬件壁垒?它接下来,咱们就深度拆解煎饺 App—— 先给大家扒清楚它的使用逻辑,附上“操作演示”和“🚀快速上手不踩坑 : 4 条核心操作干货(必看)”,跟着走零基础也能快速上手;后续再用真实实测数据,正面硬刚煎饺 App的语音助手口令效果——创建京东「牛奶自动下单神器」口令 ,从修改口令、识别准确率到场景实用性,逐一测试不掺水,最后,再和豆包 AI 手机语音助手的普通版——豆包App对比测试下,简单地谈谈煎饺App的能力边界在哪?
|
9天前
|
机器学习/深度学习 人工智能 自然语言处理
Z-Image:冲击体验上限的下一代图像生成模型
通义实验室推出全新文生图模型Z-Image,以6B参数实现“快、稳、轻、准”突破。Turbo版本仅需8步亚秒级生成,支持16GB显存设备,中英双语理解与文字渲染尤为出色,真实感和美学表现媲美国际顶尖模型,被誉为“最值得关注的开源生图模型之一”。
1117 6
|
11天前
|
机器学习/深度学习 人工智能 数据可视化
1秒生图!6B参数如何“以小博大”生成超真实图像?
Z-Image是6B参数开源图像生成模型,仅需16GB显存即可生成媲美百亿级模型的超真实图像,支持中英双语文本渲染与智能编辑,登顶Hugging Face趋势榜,首日下载破50万。
723 42
|
15天前
|
人工智能 Java API
Java 正式进入 Agentic AI 时代:Spring AI Alibaba 1.1 发布背后的技术演进
Spring AI Alibaba 1.1 正式发布,提供极简方式构建企业级AI智能体。基于ReactAgent核心,支持多智能体协作、上下文工程与生产级管控,助力开发者快速打造可靠、可扩展的智能应用。
1158 41
|
15天前
|
人工智能 前端开发 算法
大厂CIO独家分享:AI如何重塑开发者未来十年
在 AI 时代,若你还在紧盯代码量、执着于全栈工程师的招聘,或者仅凭技术贡献率来评判价值,执着于业务提效的比例而忽略产研价值,你很可能已经被所谓的“常识”困住了脚步。
924 77
大厂CIO独家分享:AI如何重塑开发者未来十年
|
2天前
|
人工智能 安全 前端开发
AgentScope Java v1.0 发布,让 Java 开发者轻松构建企业级 Agentic 应用
AgentScope 重磅发布 Java 版本,拥抱企业开发主流技术栈。
|
1天前
|
人工智能 JSON 前端开发
为什么你的API文档总是被吐槽?用这份"契约指令"终结前后端战争
本文针对前后端协作中"文档过时、不准确"的痛点,提供了一套实战验证的AI指令。通过强制结构化输入和自检机制,让AI自动生成包含完整参数、JSON示例和多语言代码的标准API契约文档,彻底解决接口沟通难题。
171 112

热门文章

最新文章