当前位置: 首页 > article >正文

【赵渝强老师】PostgreSQL的数据库

在这里插入图片描述

PostgreSQL的逻辑存储结构主要是指数据库中的各种数据库对象,包括:数据库集群、数据库、表、索引、视图等等。所有数据库对象都有各自的对象标识符oid(object identifiers),它是一个无符号的四字节整数,相关对象的oid都存放在相关的系统目录表中,比如数据库的oid和表的oid分别存放在pg_database,pg_class表中。下图展示了PostgreSQL数据库的逻辑存储结构。
在这里插入图片描述

下面重点介绍一下PostgreSQL中的数据库。

视频讲解如下

【赵渝强老师】Postgresql的数据库

在PostgreSQL中,一个数据库是数据库对象的集合。通常每个数据库对象属于并且只属于一个数据库。更准确地说,一个数据库是一个模式的集合,而模式包含表、函数等等各种数据库对象。因此数据库的完整层次应该包含如下组成部分:数据库服务器、数据库、模式、表或者某些其他对象类型,如存储过程、存储函数等等。当连接到数据库服务器时,客户端必须在它的连接请求中指定它要连接的数据库名,通过数据库实例来操作数据库中的对象。用户可能是在同一个数据库里,但可能在不同的模式中。

执行下面的语句可以查看当前PostgreSQL数据库集群中已有的数据库信息。

postgres=# \l
           List of databases
   Name    |  Owner   | Encoding |......
-----------+----------+----------+-------
 postgres  | postgres | UTF8     |......
 template0 | postgres | UTF8     |......
 template1 | postgres | UTF8     |......
 
(3 rows)

下面详细解释一下每个数据库的作用。

  • postgres数据库由initdb命令在初始化数据存储区域时创建的。该数据库也是客户端默认连接的数据库。
  • template0是标准系统数据库,该数据库中只包含PostgreSQL版本预定义的标准对象。在数据库集群被初始化之后,不应该对template0做任何修改。在创建数据库时通过指示使用template0取代template1进行拷贝,可以创建一个“纯净的”用户数据库。
  • template1是第二标准系统数据库。当在PostgreSQL中创建一个新数据库时,实际上就是克隆了template1。这就意味着对template1所做的任何修改都会体现在所有后续创建的用户数据库中。因此应避免在template1中创建对象,除非想把这些对象传播到每一个新创建的数据库中。

查询现有数据库集合信息也可以通过查询系统表pg_database得到。

postgres=# select datname from pg_database;

# 输出的信息如下:
  datname  
-----------
 postgres
 template1
 template0
 
(3 rows)

http://www.kler.cn/a/416418.html

相关文章:

  • 线段树与树状数组 (C++)
  • OpenAI浅聊爬虫
  • # issue 7 TCP回声服务器和客户端
  • RPA:电商订单处理自动化
  • Rust format失败
  • 在Java中使用Apache POI导入导出Excel(二)
  • Milvus 2.5:全文检索上线,标量过滤提速,易用性再突破!
  • JS-对象-DOM-案例
  • request和websocket
  • python自动化测开面试题汇总(持续更新)
  • 【SpringBoot问题】IDEA中用Service窗口展示所有服务及端口的办法
  • 民宿住宿管理系统|Java|SSM|JSP| 前后端分离
  • 使用zabbix监控k8s
  • C#读取本地图像的方法总结
  • 大米中的虫子检测-检测储藏的大米中是否有虫子 支持YOLO,VOC,COCO格式标注,4070张图片的数据集
  • 爬虫获取的数据如何有效分析以支持商业决策?
  • C/C++链接数据库(MySQL)超级详细指南
  • IDEA好用插件
  • SpringCloud框架学习(第六部分:Sentinel实现熔断与限流)
  • 消息称三星正与 OpenAI 洽谈,有望令 Galaxy AI 整合ChatGPT,三星都要和chatgpt合作了,你会使用chatgpt了吗?