postgresql-数据库与模式

news/2024/7/9 20:15:44 标签: 数据库, postgresql

postgresql-数据库

基本概念

数据库管理系统(DBMS)是用于管理数据库的软件系统。常见的关系型DBMS有PostgreSQL、
MySQL、Oracle、Microsoft SQL Server、SQLite 等。常见的 NoSQL 数据库有 Redis、MongoDB、
Cassandra、Neo4j 等。PostgreSQL 荣获了数据库排名网站DB-Engines 2017、2018 以及 2020 年度数据库管理系统称号

PostgreSQL 数据库系统由实例(Instance)和物理数据库集群(Database Cluster)组成。通
常所说的数据库管理系统也就是指数据库系统。
在这里插入图片描述

实例(Instance)由 PostgreSQL 后台进程和相关的内存组成。启动服务器进程时创建一个实
例,关闭服务器进程时实例随之关闭。启动 PostgreSQL 服务器进程之后,可以通过操作系统的
ps 命令查询相关的后台进程:
在这里插入图片描述
数据库集群,每个 PostgreSQL 实例管理的都是一个数据库集群,它可以包含多个数据库
需要注意,这里的集群不是多台服务器组成的集群
在这里插入图片描述
数据库Database),一个数据库由一组相关的对象组成,例如表、索引、视图、存储
过程
模式Schema),数据库中的对象使用模式进行组织。准确地说,一个数据库由多个模式
组成,模式由许多对象组成
表空间Tablespace),在 PostgreSQL 中,数据库对象(例如表)在文件系统中对应的是文
件,表空间指定了这些文件存储的目录。创建数据库对象时,只需要指定存储对象的表空间的名
称(或者使用默认值),而不需要指定磁盘上的物理路径

创建数据库

使用 SQL 语句查看已有的数据库

select datname from pg_database;

在这里插入图片描述

--使用 SQL 语 CREATE DATABASE 创建一个数据库
CREATE DATABASE name;

创建数据库时还可以指定许多选项,例如字符集编码、拥有者、默认表空间、最大连接数等
等。具体参考官方文档中完整的create database

修改数据库

ALTER DATABASE name action;

action 指定了要执行的修改操作,例如修改数据库的名称、所有者、默认表空间、数
据库会话变量的默认值等

-- 修改 testdb 的名称为newdb
alter database testdb rename to newdb;

ALTER DATABASE 语句还可以用于修改运行时配置变量的会话默认值
当用户连接数据库时,PostgreSQL 使用配置文件 postgresql.conf 或者启动命令 postgres 中设
置的变量值作为默认值。使用 ALTER DATABASE 语句可以设置指定数据库的这些配置:

ALTER DATABASE name SET configuration_parameter { TO | = } { value | DEFAULT }

PostgreSQL 将会使用该命令设置的值覆盖 postgresql.conf 文件或者命
令行参数的值。注意,只有超级用户或者数据库的拥有者才能修改数据库的默认会话变量

-- 以下语句将会默认禁用数据库 newdb 中的索引扫描
alter database newdb set enable_indexscan to off;
-- 数据库newdb开启索引扫描
ALTER DATABASE newdb RESET enable_indexscan;

alter database 详细配置

删除数据库

-- 使用 DROP DATABASE 语句删除一个数据库 name表示数据库名称
DROP DATABASE [ IF EXISTS] name;

如果使用了 IF EXISTS,删除一个不存在的数据库时不会产生错误信息

删除数据库会同时删除该数据库中所有的对象,以及文件系统中的数据目录。只有数据库
拥有者才能够删除数据库。另外,如果数据库上存在用户连接,无法执行删除操作,可以连接到
其他数据库执行删除命令

DROP DATABASE 命令的删除操作无法恢复,使用时千万小心!

管理模式

创建了数据库之后,还需要创建模式(Schema)才能够存储数据库对象。通常在创建一个
新的数据库时,默认会创建一个模式 public

-- 查看当前数据库中的模式
select * from pg_namespace ;

在这里插入图片描述
PostgreSQL 也提供了管理模式的语句:

  • CREATE SCHEMA,创建一个新的模式
  • ALTER SCHEMA,修改模式的属性
  • DROP SCHEMA,删除一个模式
-- 创建模式时还可以指定它的拥有者:
 CREATE SCHEMA app AUTHORIZATION tony;

以 pg_开头的名称是系统保留的模式名称,用户无法创建这样的模式。
创建了模式之后,我们就可以在模式中创建各种数据库对象,例如表、数据类型、函数以及
运算符(模式相当于表空间)

-- 如果需要修改已有模式的属性 ,可以使用 ALTER SCHEMA 语句:
ALTER SCHEMA name RENAME TO new_name
ALTER SCHEMA name OWNER TO { new_owner | CURRENT_USER | SESSION_USER }
-- 如果模式中没有任何对象,使用以下语句即可删除该模式:
DROP SCHEMA name;

如果模式中存在其他对象,需要先删除该模式中所有的对象,或者使用
以下语句级联删除这些对象

DROP SCHEMA name CASCADE;

级联删除可能会删除一些我们意料之外的对象,使用时需要小心。
数据库中的大多数对象都位于某个模式之中,这样设计的好处在于:

  • 允许多个用户使用同一个数据库而不会互相干扰,他们可以使用不同的模式来维护自己
    的数据
  • 数据库对象进行逻辑上的分组,便于管理
  • 第三方应用可以使用单独的模式,不会与系统中的其他对象产生命名冲突
    在我们常用的数据库对象中,最主要的就是数据表(table)。

http://www.niftyadmin.cn/n/5047813.html

相关文章

java面试题-常见技术场景

常见技术场景 1.单点登录这块怎么实现的 1.1 概述 单点登录的英文名叫做:Single Sign On(简称SSO),只需要登录一次,就可以访问所有信任的应用系统 在以前的时候,一般我们就单系统,所有的功能都在同一个…

php网上评教系统cd73-计算机毕业设计源码+数据库+lw文档+系统+部署

php网上评教系统cd73-(毕业设计毕设项目源代码课程设计程序设计指导xz2023) php网上评教系统cd73-计算机毕业设计源码数据库lw文档系统部署

C++ stack queue模拟实现

目录 一.stack 二.queue 三.deque STL中有6大组件,我们前面讲的string/vector/list是容器,还有迭代器,以及算法(比如find,swap,reverse,sort,merge函数),仿函…

【计算机网络笔记三】传输层

端口 在网络中如何标记一个进程? TCP/IP 体系的传输层使用【端口号】来标记区分应用层的不同应用进程。这里说的端口是一个逻辑的概念,并不是实实在在的物理端口。 端口号使用 16 比特表示,取值范围是 0 ~ 65535,端口号分为以…

作业 练习题

内科护理学 参考试题 一、单项选择题(每题2分,共100分) 1.由于心排出量突然下降而出现的晕厥称为( )。 A.心脏骤停 B.病窦综合征 C.阿一斯综合征 D.倾倒综合征 2.护理服用洋地黄制剂的患者时,下列措施错误的是( )。 A.给洋地…

信创办公–基于WPS的PPT最佳实践系列 (项目8创建电子相册)

信创办公–基于WPS的PPT最佳实践系列 (项目8创建电子相册) 目录 应用背景操作步骤 应用背景 如果我们想把图片弄成相册,或者弄成一段有音乐的视频分享给朋友。我们可以利用PPT来制作。那我们如何用PPT制作电子相册或视频呢?可以跟…

MySQL数据库入门到精通2--基础篇(函数,约束,多表查询,事务)

3. 函数 函数 是指一段可以直接被另一段程序调用的程序或代码。MySQL中的函数主要分为以下四类: 字符串函数、数值函数、日期函数、流程函数。 3.1 字符串函数 MySQL中内置了很多字符串函数,常用的几个如下: 演示如下: A. con…

Spring Authorization Server优化篇:Redis值序列化器添加Jackson Mixin,解决Redis反序列化失败问题

前言 在授权码模式的前后端分离的那篇文章中使用了Redis来保存用户的认证信息,在Redis的配置文件中配置的值序列化器是默认的Jdk序列化器,虽然这样也可以使用,但是在Redis客户端中查看时是乱码的(看起来是),如果切换为Jackson提供…