PostgreSQL 免费的对象-关系数据库

目录

一、什么是数据库

二、ORDBMS 的一些术语

三、PostgreSQL 概述

四、PostgreSQL数据库优点和缺点

4.1PostgreSQL数据库的优点

4.2PostgreSQL数据库的缺点

4.3PostgreSQL 特征

五、Linux 上安装 PostgreSQL

5.1Yum 安装 PostgreSQL

5.1.1安装postgreSQL的官方yum仓库

5.1.2选择你要安装的版本

5.1.3初始化数据库

5.1.4启用并设置自动启动

5.2编译安装 

5.2.1安装包介绍

六、数据库操作

6.1基本操作命令

6.1.1修改用户密码

6.2SQL语句分类

6.2.1SQL通用语法

6.2.2 SQL分类

6.3DDL语句

6.3.1CREATE创建

6.3.1.1创建数据库

6.3.1.2切换数据库

6.3.1.3创建表

6.3.2ALTER修改

6.3.2.1添加字段

6.3.2.2修改字段名称

6.3.3DROP删除

6.3.3.1删除表

6.4DML语句

6.4.1插入数据

6.4.2更新数据

6.4.3删除数据

6.5DQL语句

6.5.1基本查询

6.5.2条件查询

6.5.2.1 比较运算符

6.5.2.2逻辑运算符

6.5.3排序查询

6.5.3.1升序排序

6.5.3.2降序排序

6.5.3.3去重、压缩

6.5.4limit子句

6.5.5 as 别名

6.5.5.1设置字段别名

6.5.6子查询

6.5.6.1 EXISTS关键字

6.5.6.2IN关键字

6.6DCL语句

6.6.1创建用户

6.6.2用户授权

6.6.2.1用户库授权

6.6.2.2用户表授权

6.6.2.3查看权限

6.6.3撤销权限与删除用户

6.6.4角色


一、什么是数据库

  • ORDBMS(对象关系数据库系统)是面向对象技术与传统的关系数据库相结合的产物,查询处理是 ORDBMS 的重要组成部分,它的性能优劣将直接影响到DBMS 的性能。
  • ORDBMS在原来关系数据库的基础上,增加了一些新的特性。
  • RDBMS 是关系数据库管理系统,是建立实体之间的联系,最后得到的是关系表
  • OODBMS 面向对象数据库管理系统,将所有实体都看成对象,并将这些对象类进行封装,对象之间的通信通过消息 OODBMS 对象关系数据库在实质上还是关系数据库 

二、ORDBMS 的一些术语

  • 数据库: 数据库是一些关联表的集合。
  • 数据表: 表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。
  • 列: 一列(数据元素) 包含了相同的数据, 例如邮政编码的数据。
  • 行:一行(=元组,或记录)是一组相关的数据,例如一条用户订阅的数据。
  • 冗余:存储两倍数据,冗余降低了性能,但提高了数据的安全性。
  • 主键:主键是唯一的。一个数据表中只能包含一个主键。你可以使用主键来查询数据。
  • 外键:外键用于关联两个表。
  • 复合键:复合键(组合键)将多个列作为一个索引键,一般用于复合索引。
  • 索引:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。
  • 参照完整性: 参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性。

三、PostgreSQL 概述

PostgreSQL 是一个免费的对象-关系数据库服务器(ORDBMS),在灵活的BSD许可证下发行。

PostgreSQL 开发者把它念作 post-gress-Q-L

四、PostgreSQL数据库优点和缺点

4.1PostgreSQL数据库的优点

  1. 可靠性与稳定性:PostgreSQL以其出色的稳定性和可靠性著称,能够保证长时间无故障运行,尤其适合企业级应用和对数据完整性要求较高的场景。

  2. 全面的标准SQL支持:严格遵循ACID属性,并高度符合SQL标准,支持丰富的SQL特性,如窗口函数、递归查询、CTEs(公用表表达式)等。

  3. 强大的数据类型与存储:支持多种复杂数据类型,包括数组、JSON、XML、HSTORE、Range类型等。同时,PostgreSQL的表分区、索引、物化视图等功能提高了数据管理和查询性能。

  4. 安全性:提供了细粒度的访问控制,支持行级和列级的安全策略,可通过SSL加密通信,并有良好的审计功能。

  5. 扩展性:通过丰富的插件体系,可以很容易地添加新的数据类型和功能,例如全文搜索、地理位置索引(通过PostGIS扩展)、JSONB查询优化等。

  6. 高可用与容灾:支持逻辑复制、物理复制、热备和读写分离,能够构建高可用的集群环境。

  7. 社区与生态系统:PostgreSQL拥有活跃的开源社区和广泛的用户群,有许多周边工具和框架支持,为企业级应用提供丰富的解决方案。

  8. 完全开源免费:相对于oracle数据库,postgresql数据库完全开源免费,可以随意使用,且不会被其它公司控制,而oracle数据库属于商业数据库,不完全开放,而MySQL数据库先是被SUN公司收购,而后又被Oracle公司收购,在这之后,版本不再更新,InnoDB引擎也被Oracle控制

4.2PostgreSQL数据库的缺点

  1. 横向扩展能力:虽然PostgreSQL支持一定的水平扩展,如逻辑复制和流复制,但相比某些天生设计为分布式数据库系统的解决方案,其在大规模集群扩展方面的操作相对复杂,尤其是处理极高并发读写负载时。

  2. 内存占用较大:在处理大量并发连接或复杂查询时,PostgreSQL可能会消耗较多内存,尤其对于大型数据库实例,内存管理需要精细调整。

  3. NoSQL功能有限:虽然PostgreSQL支持JSONB等非关系型数据存储,但在处理某些NoSQL数据库擅长的大规模非结构化数据存储和查询时,不如专门的NoSQL数据库那样高效。

  4. 入门门槛较高:相比于一些轻量级或专为Web开发优化的数据库系统,PostgreSQL的复杂特性和配置项可能让初学者感到有些难以掌握。

  5. 性能调优复杂:对于某些特定场景下的性能优化,可能需要深入了解PostgreSQL的工作原理和内部机制,对普通用户来说,优化过程可能会显得较为复杂。

4.3PostgreSQL 特征

  • 函数:通过函数,可以在数据库服务器端执行指令程序。

  • 索引:用户可以自定义索引方法,或使用内置的 B 树,哈希表与 GiST 索引。

  • 触发器:触发器是由SQL语句查询所触发的事件。如:一个INSERT语句可能触发一个检查数据完整性的触发器。触发器通常由INSERT或UPDATE语句触发。

  • 多版本并发控制:PostgreSQL使用多版本并发控制(MVCC,Multiversion concurrency control)系统进行并发控制,该系统向每个用户提供了一个数据库的"快照",用户在事务内所作的每个修改,对于其他的用户都不可见,直到该事务成功提交。

  • 规则:规则(RULE)允许一个查询能被重写,通常用来实现对视图(VIEW)的操作,如插入(INSERT)、更新(UPDATE)、删除(DELETE)。

  • 数据类型:包括文本、任意精度的数值数组、JSON 数据、枚举类型、XML 数据

    等。
  • 全文检索:通过 Tsearch2 或 OpenFTS,8.3版本中内嵌 Tsearch2。

  • NoSQL:JSON,JSONB,XML,HStore 原生支持,至 NoSQL 数据库的外部数据包装器。

  • 数据仓库:能平滑迁移至同属 PostgreSQL 生态的 GreenPlum,DeepGreen,HAWK 等,使用 FDW 进行 ETL

五、Linux 上安装 PostgreSQL

PostgreSQL: The world's most advanced open source database

这里是官网,点击菜单栏上的 Download ,可以看到这里包含了很多平台的安装包,包括 Linux、Windows、Mac OS等 。

PostgreSQL官网https://www.postgresql.org/国产数据库排行https://www.modb.pro/dbRankPostgreSQL中文社区http://www.postgres.cn/v2/document全球数据库排行https://db-engines.com/en/

选择需要安装的软件版本及环境

5.1Yum 安装 PostgreSQL

​systemctl stop firewalld
setenforce 0yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
#安装postgreSQL的官方yum仓库yum install -y postgresql14-server
#安装postgresql14-server,14为版本号,可以选择自己想要安装的版本​/usr/pgsql-14/bin/postgresql-14-setup initdb
#初始化数据库,创建系统表空间、全局对象以及其他必须的内部数据库systemctl start postgresql-14
systemctl enable postgresql-14
#启用并设置自动启动

5.1.1安装postgreSQL的官方yum仓库

5.1.2选择你要安装的版本

安装postgresql14-server,14为版本号,可以选择自己想要安装的版本

5.1.3初始化数据库

初始化数据库,创建系统表空间、全局对象以及其他必须的内部数据库

yum安装完毕之后直接启动会报错,需要先执行初始化命令,如果没有执行初始化,直接启动服务时,数据库集群不存在,就会报错

5.1.4启用并设置自动启动

5.2编译安装 

5.2.1安装包介绍

这六个文件分别是 PostgreSQL 14.1版本的源代码压缩包及其相关的校验文件。以下是它们之间的区别:

  • postgresql-14.1.tar.bz2:这是 PostgreSQL 14.1版本的源代码压缩包,使用 bzip2 压缩。可以使用该文件进行手动编译和安装 PostgreSQL。
  • postgresql-14.1.tar.bz2.md5:这个文件包含了 postgresql-14.1.tar.bz2 文件的 MD5 校验值,用于验证下载文件的完整性。可以使用 md5sum 工具来验证文件的 MD5 值。
  • postgresql-14.1.tar.bz2.sha256:这个文件包含了 postgresql-14.1.tar.bz2 文件的 SHA-256 校验值,用于验证下载文件的完整性。可以使用 sha256sum 工具来验证文件的 SHA-256 值。
  • postgresql-14.1.tar.gz:这是 PostgreSQL 14.1 版本的源代码压缩包,使用 gzip 压缩。可以使用该文件进行手动编译和安装 PostgreSQL
  • postgresql-14.1.tar.gz.md5:这个文件包含了 postgresql-14.1.tar.gz 文件的 MD5 校验值,用于验证下载文件的完整性。可以使用 md5sum 工具来验证文件的 MD5 值。
  • postgresql-14.1.tar.gz.sha256:这个文件包含了 postgresql-14.1.tar.gz 文件的 SHA-256 校验值,用于验证下载文件的完整性。可以使用 sha256sum 工具来验证文件的 SHA-256 值。
  • 通常情况下,可以选择下载其中一个 .tar.bz2 或 .tar.gz 的压缩包,然后使用相应的校验文件(.md5 或 .sha256)验证下载的文件是否完整
  • .bz2 和 .gz 分别是两种不同的压缩格式,它们在本质上是不同的压缩算法
  • 在选择使用哪一种格式的安装包时,主要的考虑因素包括压缩率、解压速度、以及个人的偏好

六、数据库操作

6.1基本操作命令

| 命令       | 作用                                           
| ---------- | ----------------------------------------------
| \l         | 查看系统中现存的数据库                          
| \q         | 退出客户端程序psql                             
| \dt        | 查看表                                        
| \d         | 查看表结构                                     
| \di        | 查看索引                                       
| \c         | 从一个数据库中转到另一个数据库中                 
| create     | 创建数据库、表、用户等                          
| alter      | 修改表结构                                     
| insert     | 添加数据                                       
| update     | 修改数据                                       
| drop       | 删除                                           
| delete     | 删除数据                                       
| \help或\h  | 显示所有SQL语句用法                             
| \h SQL语句 | 显示具体的SQL语句用法。例如 \h create database   
| \?         | 显示所有以\开头的命令                          

6.1.1修改用户密码

6.2SQL语句分类

SQL(Structured Query Language,结构化查询语言)是一种用于管理关系型数据库的标准计算机语言,它涵盖了数据定义、数据查询、数据操作(增删改)以及数据控制四大功能

6.2.1SQL通用语法

  • SQL语句可以单行或者多行书写,以分号结尾;
  • SQL语句可以使用空格/缩进来增强语句的可读性。
  • MySQL数据库的SQL语句不区分大小写,关键字建议使用大写

6.2.2 SQL分类

分类全称说明
DDLData Definition Language数据定义语言,用来定义数据库对象(数据库,表,字段)
DMLData Manipulation Language数据操作语言,用来对数据库表中的数据进行增删改
DQLData Query Language数据查询语言,用来查询数据库中表的记录
DCLData Control Language数据控制语言,用来创建数据库用户、控制数据库访问权限

6.3DDL语句

DDL(Data Definition Language,数据定义语言)是SQL中的一种语句集合,主要用于创建、修改和删除数据库中的结构对象,如数据库、表、视图、索引、触发器、存储过程等

常用语句有:CREATE(创建),DROP(删除),ALTER(修改)

6.3.1CREATE创建

CREATE语句主要用于创建库,表,以及用户等操作

su - postgrespsql
6.3.1.1创建数据库

6.3.1.2切换数据库

6.3.1.3创建表

语法为:create table table_name (字段1...字段类型[约束],字段2...字段类型....[约束]);

create table kendeji (id int not null,name varchar(15),age varchar(3),address varchar(15),section char(3));

6.3.2ALTER修改

ALTER语句主要用于修改字段的信息或者插入新的字段

6.3.2.1添加字段

添加字段的基本语法为:alter table table_name add cloumn [字段][类型]

alter table kendeji add column cardid varchar(10);

6.3.2.2修改字段名称

修改字段名称的基本语法为:alter table table_name rename cloumn [old字段] to [new字段];

alter table kendeji rename column id to num;

6.3.3DROP删除

DROP主要用于对库、表、用户等进行删除操作

6.3.3.1删除表

删除表基本语法为:drop table table_name;

删除库的语法为:drop database database_name;

 #切换到其它库,防止删除库的时候因为占用库导致删除失败

6.4DML语句

DML(Data Manipulation Language,数据操纵语言)是SQL中用于操作数据库表中数据的指令集。它主要涵盖以下几种类型的语句

插入数据(INSERT):在表中插入新的数据

更新数据(UPDATE):更新表中现有的数据

删除数据(DELETE):删除表中的数据

6.4.1插入数据

插入数据的语法为:
指定字段添加: insert into table_name (字段1,字段2...) values (值1,值2...);
全部字段添加: insert into table_name values (值1,值2...);
批量添加数据: insert into table_name values (值1,值2...),(值1,值2...)...;

[root@localhost ~]#su - postgres
上一次登录:六 4月 20 11:36:56 CST 2024pts/2 上
-bash-4.2$ psql
psql (14.11)
输入 "help" 来获取帮助信息.postgres=# create database work;
CREATE DATABASE
postgres=# \l数据库列表名称    |  拥有者  | 字元编码 |  校对规则   |    Ctype    |       存取权限        
-----------+----------+----------+-------------+-------------+-----------------------nanjing   | postgres | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 | postgres  | postgres | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 | template0 | postgres | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/postgres          +|          |          |             |             | postgres=CTc/postgrestemplate1 | postgres | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/postgres          +|          |          |             |             | postgres=CTc/postgreswork      | postgres | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 | 
(5 行记录)postgres=#  create table jichu (id int not null primary key,name varchar(15),age int,address varchar(10));
CREATE TABLE
postgres=# \d关联列表架构模式 | 名称  |  类型  |  拥有者  
----------+-------+--------+----------public   | jichu | 数据表 | postgres
(1 行记录)postgres=# \d jichu数据表 "public.jichu"栏位   |         类型          | 校对规则 |  可空的  | 预设 
---------+-----------------------+----------+----------+------id      | integer               |          | not null | name    | character varying(15) |          |          | age     | integer               |          |          | address | character varying(10) |          |          | 
索引:"jichu_pkey" PRIMARY KEY, btree (id)postgres=# insert into jichu values (1,'xiaowang',25,'beijing');
INSERT 0 1
postgres=# insert into jichu values (2,'xiaoli',20,'nanjing');
INSERT 0 1
postgres=# insert into jichu values (3,'xiaoliu',22,'wuhan');
INSERT 0 1
postgres=# select * from jichu;id |   name   | age | address 
----+----------+-----+---------1 | xiaowang |  25 | beijing2 | xiaoli   |  20 | nanjing3 | xiaoliu  |  22 | wuhan
(3 行记录)postgres=# 

6.4.2更新数据

基本语法为:update 表名 set 字段1 = 值1,字段2 = 值2,...[where 条件];

6.4.3删除数据

基本语法为:delete from table_name [where 条件]; 
注意:
DELETE 语句的条件可以有,也可以没有,如果没有条件,则会删除整张表的所有数据
DELETE 语句不能删除某一个字段的值。

6.5DQL语句

DQL (Data Query Language) 是SQL语言中专门用于查询数据的部分,它的主要目的是从数据库中检索满足特定条件的数据,而不改变数据库的状态 它的语句只有一个:select

在数据库操作中,查询的频率要远远高于增、删、改操作,在访问页面时,页面中所有的信息都需要通过select查询出来

6.5.1基本查询

基本语法为:select 字段1,字段2,...  from table_name [where 条件];

postgres=# \c work
您现在已经连接到数据库 "work",用户 "postgres".
work=# create table mixue (id int not null primary key,name varchar(15),age int,address varchar(10));    #创建表
CREATE TABLE
work=# insert into mixue values (1,'xiaowang',30,'beijing'),(2,'xiaozhao',28,'shanghai'),(3,'xiaoli',25,'shanghai'),(4,'xiaoliu',26,'beijing');   #插入数据
INSERT 0 4
work=# select * from mixue;   #查询所有字段id |   name   | age | address  
----+----------+-----+----------1 | xiaowang |  30 | beijing2 | xiaozhao |  28 | shanghai3 | xiaoli   |  25 | shanghai4 | xiaoliu  |  26 | beijing
(4 行记录)work=# select name,age from mixue;  #查询指定字段

6.5.2条件查询

6.5.2.1 比较运算符
比较运算符功能
> 或!=大于
>=大于等于
<小于
<=小于等于
=等于
<>或!=不等于
BETWEEN ... AND ...在某个范围之内(含最小、最大值)
IN(..)在in之后的列表中的值
LIKE 占位符模糊匹配( _ :匹配单个字符,%:匹配任意个字符)
IS NULL是NULL

6.5.2.2逻辑运算符
逻辑运算符功能
AND 或 &&并且(多个条件同时成立)
OR 或 ||或者(多个条件任意一个成立)
NOT 或 !非,不是

6.5.3排序查询

基本语法为:select 字段1, 字段2, ... from 表名 [where 条件]order by 排序字段1,排序字段2, ... [asc|desc]

关键字排序方式
asc升序排序,默认排序方式asc 可以省略
desc降序排序
distinct去重、压缩
work=# select * from mixue;id |   name   | age | address  
----+----------+-----+----------1 | xiaowang |  30 | beijing2 | xiaozhao |  28 | shanghai3 | xiaoli   |  25 | shanghai4 | xiaoliu  |  26 | beijing
(4 行记录)work=# select * from mixue order by age;  age升序排序,默认排序方式asc 可以省略id |   name   | age | address  
----+----------+-----+----------3 | xiaoli   |  25 | shanghai4 | xiaoliu  |  26 | beijing2 | xiaozhao |  28 | shanghai1 | xiaowang |  30 | beijing
(4 行记录)work=# select * from mixue order by age desc;  #age字段值降序排序id |   name   | age | address  
----+----------+-----+----------1 | xiaowang |  30 | beijing2 | xiaozhao |  28 | shanghai4 | xiaoliu  |  26 | beijing3 | xiaoli   |  25 | shanghai
(4 行记录)work=# select distinct address from mixue;    #数据压缩,将相同的数据压缩、去重address  
----------shanghaibeijing
(2 行记录)work=#
6.5.3.1升序排序

6.5.3.2降序排序

6.5.3.3去重、压缩

6.5.4limit子句

limit关键字用于限制查询结果返回的数据行数

limit子句的用法:limit count:返回查询结果的前count行。
例如,如果你想从mixue表中获取前10条记录:Sql
select * from mixue limit 10;
limit offset, count:返回从offset行开始的count行。
这里的offset是指从查询结果的第几行开始,count是指从offset开始往后取多少行。
例如,如果你想要从第11行开始取10条记录:Sql
select * from employees limit 10 offset 10;
这意味着查询结果会跳过前10行,然后返回接下来的10行记录在PostgreSQL中,limit通常与offset配合使用来进行分页查询。
需要注意的是,如果同时使用OFFSET和limit,较大的OFFSET值会导致性能下降,尤其是在大表上进行分页时,因为数据库需要扫描并丢弃很多不需要的行才能找到需要的行。在实现分页时,最好能利用索引来优化查询性能

6.5.5 as 别名

在PostgreSQL中,为字段或表设置别名(alias)通常用于查询结果中,使列名更具可读性或简化后期处理

6.5.5.1设置字段别名

设置字段别名

基本语法为:select 字段1 [as] 字段1别名,字段2 [as] 字段2别名,.... from table_name;
#as可以省略

6.5.5.1设置表别名

设置表别名

基本语法为:select 表别名.字段1,表别名.字段2,.... from table_name [as] alias_table;

6.5.5.1as还可以作为连接语句

此外,as还可以作为连接语句,将select查询到的语句,重定向到新的表格当中
基本语法为:create table new_table [as] select 字段1,字段2.... from table_name;

#注释:只能复制表的字段与数据,不能复制表的约束,例如主键、唯一键等

6.5.6子查询

子查询(Subquery)是在SQL查询中嵌套的查询语句,它先执行内层查询,然后将结果作为外层查询的一部分进行处理。子查询通常放在比较运算符的右侧,或者用在IN、ANY、ALL、EXISTS等关键字后面

6.5.6.1 EXISTS关键字

EXISTS的参数是一个任意的SELECT语句, 或者说子查询。系统对子查询进行运算以判断它是否返回行。如果它至少返回一行,那么EXISTS的结果就为“真”; 如果子查询没有返回行,那么EXISTS的结果是“假”。

子查询可以引用来自周围的查询的变量,这些变量在该子查询的任何一次计算中都起常量的作用。

这个子查询通常只是运行到能判断它是否可以返回至少一行为止, 而不是等到全部结束。在这里写任何有副作用的子查询都是不明智的(例如调用序列函数);这些副作用是否发生是很难判断的。

因为结果只取决于是否会返回行,而不取决于这些行的内容, 所以这个子查询的输出列表通常是无关紧要的。

一个常用的编码习惯是用EXISTS(SELECT 1 WHERE ...)的形式写所有的EXISTS测试。不过这条规则有例外,例如那些使用INTERSECT的子查询

基本语法为:select 字段1,字段2,...  from table_name where exists (子语句);

#这个简单的例子类似在所有字段上的一次内联接,但是它为每个mixue表的行生成最多一个输出,即使存在多个匹配haidilao的行也如此∶

6.5.6.2IN关键字

在查询表的数据时通过将子语句查询到的数据,当作主语的参数去匹配查询的表

基本语法为:select 字段1,字段2,...  from table_name where 匹配字段 in (子语句);

6.6DCL语句

  • DCL(Data Control Language)是SQL语言中的一个重要组成部分,它主要负责对数据库系统的访问权限和安全性进行管理。
  • DCL语句主要用于授予或撤销用户对数据库对象(如表、视图、序列、存储过程等)的操作权限,以及管理事务和数据库的安全策略。

常用语句有:GRANT,REVOKE

权限说明
all,all privileges所有权限
insert插入数据
select查询数据
update更新表的数据
delete删除表中数据
create创建库,表
drop删除库,表
index建立索引
alter更改表属性
create temp orary tableslock tables锁表
create view创建视图
show view显示视图
create routine创建存储过程
alter routine修改存储过程
event事件
trigger on创建触发器

6.6.1创建用户

6.6.2用户授权

6.6.2.1用户库授权

用户库授权:grant 权限 on database data_name to 用户;

grant all privileges on database work to zzz;
#授权用户可以操作work库

6.6.2.2用户表授权

用户表授权:grant 权限 on 表名 in schema public to 用户;

\c work;
grant all privileges on all tables in schema public to zzz;
#切换到work库下,授权库下的所有表

6.6.2.3查看权限

#退出之后  psql  -U  指定用户  -d  指定库

​[root@localhost ~]# psql -U zzz -d work;\du # 列出所有的用户,包括他们的角色、登录权限、超用户权限等信息\du username # 查看指定用户的权限

6.6.3撤销权限与删除用户

revoke all privileges on database work  from zzz;
#删除库权限
revoke all privileges on all tables in schema public from zzz;
#删除表权限
work=# drop user zzz;
#删除用户

6.6.4角色

在postgresql数据库当中,用户与角色没有严格意思上的区分,一个用户相当于一个角色

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

54、图论-实现Trie前缀树

思路&#xff1a; 主要是构建一个trie前缀树结构。如果构建呢&#xff1f;看题意&#xff0c;应该当前节点对象下有几个属性&#xff1a; 1、next节点数组 2、是否为结尾 3、当前值 代码如下&#xff1a; class Trie {class Node {boolean end;Node[] nexts;public Node(…

如何在PostgreSQL中使用索引覆盖扫描提高查询性能?

文章目录 解决方案1. 创建合适的索引2. 确保查询能够使用索引覆盖扫描3. 调整查询以利用索引覆盖扫描4. 监控和调优 示例代码1. 创建索引2. 编写查询3. 检查是否使用索引覆盖扫描4. 调整索引 总结 在PostgreSQL中&#xff0c;索引是提高查询性能的关键工具之一。索引允许数据库…

文章生成器免费版有哪些,哪个好用?

作为一个长期需要写作的人&#xff0c;对文章生成器自然是非常了解&#xff0c;如果搜文章生成器互联网上多到让人应接不暇&#xff0c;但小编今天要谈的是文章生成器免费版&#xff0c;因为看到很多写手朋友都想找一个免费的文章生成器来用&#xff0c;但是大家在网上搜可能很…

GITHUB的VB代码无法加载的问题解决

GITHUB里有不少好的VB代码&#xff0c;但是下载之后&#xff0c;经常出现工程加载出错的问题&#xff0c;例如&#xff1a; LOG文件为&#xff1a; 不能加载 0 行 0: 不能加载文件 D:\xxxx\Semi VB API Loader\frmMain.frm 。 原因其实很简单&#xff0c;github里的换行符是u…

Promise.all 的方法还没执行完就执行了.then

碰见一个问题&#xff0c;接盘了一个有问题的页面修改。 改变日期后 查询很多数据再去重新加载页面上的数据显示相关的组件。 问题就来了。 加载异常捏…… 最后我一通查&#xff1a; 重点来了 是因为这个Promise.all(数组)&#xff0c;里边这个数组的问题。现在是在数据中…

【机器学习】分类与预测算法的评价与优化

以实际案例解析F1值与P-R曲线的应用 一、分类算法与性能评价的重要性二、F1值与P-R曲线的概念与意义三、实例解析&#xff1a;以垃圾邮件检测为例四、代码实现与结果分析五、结论与展望 在数据驱动的时代&#xff0c;机器学习算法以其强大的数据处理和分析能力&#xff0c;成为…

Linux - tar (tape archive)

tar 的全称是 Tape Archive。它最初是在 Unix 系统中用于将数据写入磁带的工具&#xff0c;但现在它通常用于创建、维护、修改和提取文件的归档文件。尽管 tar 可以用于压缩和解压缩文件&#xff0c;但它本身并不进行压缩&#xff0c;而是通常与 gzip 或 bzip2 等压缩工具一起使…

【圆桌论坛】个人作为嘉宾参与问答环节的总结,Create 2024百度AI开发者大会之AI智能体开发与应用论坛

目录 ⭐前言⭐讨论话题✨本质和价值✨端侧部署✨应用商业模式✨商业模式 ⭐主题总结⭐有趣分享 ⭐前言 首先&#xff0c;非常荣幸和开心作为开发者和创业者代表参加百度Create AI大会分论坛圆桌论坛的问答环节。 在分论坛活动开始前&#xff0c;参加了文心智能体平台&#xff…

vi编辑器的用法linux中的vim编辑器大全

vim的介绍 vi 和 vim 命令是linux中强⼤的⽂本编辑器, 由于Linux系统⼀切皆⽂件&#xff0c;⽽配置⼀个服务就是在修改其配置⽂件的参数。 vim 编辑器是运维⼯程师必须掌握的⼀个⼯具, 没有它很多⼯作都⽆法完成。 其中有vi和vim两种 vi和vim的区别 Vim是Vi的升级版本&#…

【QT学习】9.绘图,三种贴图,贴图的转换

一。绘图的解释 Qt 中提供了强大的 2D 绘图系统&#xff0c;可以使用相同的 API 在屏幕和绘图设备上进行绘制&#xff0c;它主要基于QPainter、QPaintDevice 和 QPaintEngine 这三个类。 QPainter 用于执行绘图操作&#xff0c;其提供的 API 在 GUI 或 QImage、QOpenGLPaintDev…

【Linux】学习记录_14_线程

14 线程 14.1 线程和进程 进程是资源管理的最小单位&#xff0c;每个进程都有数据段、代码段和堆栈段&#xff0c;进程切换时都有复杂的上下文切换等动作。进程切换上下文时&#xff0c; 需要重新映射虚拟地址空间、进出OS内核、寄存器切换&#xff0c;还会干扰处理器的缓存机…

11408知识点集合

文章目录 一、数学(一) 高数0.初等数学补充1.函数、极限、连续2.导数3.中值定理4.积分5.微分方程6.空间解析几何7.多元微分8.重积分9.曲线曲面积分10.无穷级数11.其他杂记(二) 线代0.串联各章的等价条件1.行列式、矩阵的秩、矩阵的初等变换2.向量3.方程组、矩阵方程AXB4.特征值…

第G8周:ACGAN任务

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 | 接辅导、项目定制&#x1f680; 文章来源&#xff1a;K同学的学习圈子 参考论文 这周主要任务就是根据之前GAN&#xff0c;CGAN&#xff0c;SGAN网络架构搭建…

python_django中小学家校互动系统vue_flask家校联系

实现了一个完整的家校互动系统&#xff0c;其中主要有作业信息模块、学校管理员模块、学生学籍模块、学生成绩模块、学科模块、系统新闻模块、系统公告模块、校内新闻模块、校内公告模块、用户表模块、token表模块、关于我们模块、收藏表模块、年级模块、家长模块、教师模块、互…

Spark Standalone模式部署

准备至少2台虚拟机&#xff0c;装好linux系统&#xff0c;我装的是Ubuntu20.04。 1.修改主机名&#xff08;每台&#xff09; 1&#xff09;修改/etc/hostsname内容&#xff0c;主节点改为master&#xff0c;子节点改为slaver1 sudo vim /etc/hostname 2&#xff09;在/etc/…

如何通过外发文件控制,保障企业对核心业务数据的控制力?

外发文件控制是企业数据安全管理的重要组成部分&#xff0c;它涉及到对从企业内网向外发送的文件进行严格控制和管理&#xff0c;以防止敏感或机密信息的泄露。以下是常见的一些外发手段及问题&#xff1a; &#xff08;1&#xff09;IM通讯工具 如微信、QQ、企业微信、钉钉、…

如何通过文件外发管理系统,保护企业机密数据不外泄?

在互联网时代&#xff0c;企业与外界进行频繁的信息沟通已成为必要的一种业务模式&#xff0c;而在交互的过程中很可能会涉及到企业的相关敏感信息&#xff0c;一旦不慎流出就将会面临失控的风险。像员工在掌握了公司的关键信息后另起炉灶&#xff0c;设立同类型公司&#xff0…

每个开发人员都应该知道的13个Nodejs库

Node.js&#xff0c;作为一种广受推崇的后端JavaScript环境&#xff0c;已成为众多网络开发者的首选。它不仅位列全球最流行编程语言之一&#xff0c;还通过JavaScript库的代码复用功能&#xff0c;极大地提升了项目开发效率。然而&#xff0c;面对众多选项&#xff0c;挑选合适…

ArrayList与顺序表(2)

前言~&#x1f973;&#x1f389;&#x1f389;&#x1f389; hellohello~&#xff0c;大家好&#x1f495;&#x1f495;&#xff0c;这里是E绵绵呀✋✋ &#xff0c;如果觉得这篇文章还不错的话还请点赞❤️❤️收藏&#x1f49e; &#x1f49e; 关注&#x1f4a5;&#x1…

归并排序精讲

一.定义 归并排序&#xff08;Merge sort&#xff09;是建立在归并操作上的一种有效的排序算法&#xff0c;该算法是采用分治法&#xff08;Divide and Conquer&#xff09;的一个非常典型的应用。将已有序的子序列合并&#xff0c;得到完全有序的序列&#xff1b;即先使每个子…