openGauss数据库的使用

news2024/11/19 7:36:19

目录

    • 前言
      • 1. 启动/停止/重启数据库
          • (1)极简版启动/停止/重启命令
          • (2)企业版启动/停止/重启命令
      • 2. 登录数据库
          • (1)登录数据库时的基本连接参数
          • (2)登录数据库时的常用连接参数
          • (3)登录数据库时的其他连接参数
      • 3. 数据库元命令
      • 4. 数据库常用操作语句
          • (1)数据库操作
          • (2)表空间操作
          • (3)表模式操作
          • (4)创建表
          • (5)创建约束
          • (6)创建索引
          • (7)创建序列
          • (8)查询表数据
          • (9)插入表数据
          • (10)修改表数据
          • (11)删除表数据
      • 5. 数据库权限管理
          • (1)用户
          • (2)授权
      • 6. 图形化客户端
          • (1)Data Studio客户端
          • (2)navicat客户端

前言

openGauss数据库系统架构
在这里插入图片描述

1. 启动/停止/重启数据库

(1)极简版启动/停止/重启命令
启动数据库实例
gs_ctl start -D $GAUSSHOME/data/single_node -Z single_node

停止数据库实例
gs_ctl stop -D $GAUSSHOME/data/single_node -Z single_node

重启数据库实例
gs_ctl restart -D $GAUSSHOME/data/single_node -Z single_node
(2)企业版启动/停止/重启命令
启动数据库实例
gs_om -t start
或者是
gs_ctl start -D /opt/huawei/install/data/dn

停止数据库实例
gs_om -t stop
或者是
gs_ctl stop -D /opt/huawei/install/data/dn

重启数据库实例
gs_om -t restart
或者是
gs_om -t stop && gs_om -t start

查看数据库实例状态
gs_om -t status
或者是
gs_ctl status -D /opt/huawei/install/data/dn

2. 登录数据库

以初始化安装用户登录数据库,不需要输入密码
gsql -d postgres -p 5432

以初始化安装用户登录数据库,不需要输入密码,并且进入之后可编辑操作语句
gsql -d postgres -p 5432 -r

以创建的用户(jamy)登录数据库,需要输入密码
gsql -d test -p 5432 -U jamy

以创建的用户(jamy)登录数据库,需要输入密码,并且进入之后可编辑操作语句
gsql -d test -p 5432 -U jamy -r

直接非交互模式登录数据库并执行sql,执行完sql立即退出
gsql -d test -U jamy -W "Sjm214325*" -r -c "insert into song.tb_user values(6, 'andy',32);"
gsql -d test -U jamy -W "Sjm214325*" -r -c "select * from song.tb_user;"

在这里插入图片描述

(1)登录数据库时的基本连接参数

在这里插入图片描述

(2)登录数据库时的常用连接参数

在这里插入图片描述

(3)登录数据库时的其他连接参数

在这里插入图片描述

3. 数据库元命令

(1)登录之后可以输入下面这些命令操作数据库:
在这里插入图片描述

(2)操作案例

查询所有数据库的信息,包括数据库的名称,属主,字符集编码以及使用权限
\l

在这里插入图片描述

查询出所有可用的表空间
\db

在这里插入图片描述

列出所有的数据库角色
\du

在这里插入图片描述

列出所有的索引
\di

待更新

列出所有的序列
\ds

待更新

列出具体表的详细信息
\d tableName

在这里插入图片描述

列出所有的函数
\df

待更新

显示每条sql语句的执行时间
\timing  sql

待更新

从文件FILE中读取内容,并将其当作输入,执行查询
\i file.sql

待更新

查看gsql 的帮助命令(元命令,其实就是一些查询sql的别名,这样执行非常方便!!!)
\?

在这里插入图片描述

查询当前连接的数据库的信息
\conninfo

在这里插入图片描述

列出当前search_path中模式下所有的表、视图和序列
\d

在这里插入图片描述

列出所有的模式(名称空间)
\dn

在这里插入图片描述

列出数据库中的表
\dt

在这里插入图片描述

列出所有的视图
\dv

待更新

列出权限信息
\dp

在这里插入图片描述

列出索引的详细信息
\d Indexname

待更新

列出函数的定义
\sf

待更新

把字符串写到标准输出
\echo [string]

待更新

执行操作系统命令
\! os_command

待更新

查看SQL语法帮助
\h

在这里插入图片描述

更换连接的数据库和用户
\c  数据库名
例如:\c  test

在这里插入图片描述

退出gsql
\q

在这里插入图片描述

4. 数据库常用操作语句

(1)数据库操作
创建数据库示例1:
create database mydb;

创建数据库示例2:
create database mydb with owner=jack encoding='UTF-8' LC_COLLATE='zh_CN.UTF-8' LC_CTYPE='zh_CN.UTF-8'
DBCOMPATIBILITY='A' TABLESPACE=tbs1 CONNECTION LIMIT=1000;

修改数据库名称
alter database mydb rename to mydb2;

修改数据库所有者
alter database mydb2 owner to user1;

修改数据库的表空间
alter database mydb2 set tablespace tbs1;

删除数据库
drop database mydb2;

查询数据库
select * from pg_database;

在这里插入图片描述
在这里插入图片描述

(2)表空间操作
创建表空间示例1:
create tablespace tbs2 relative location 'tablespace/tbs2' maxsize '100G';

创建表空间示例2:
create tablespace tbs3 owner jack location '/gauss/data/tbs3';

查询表空间
select * from pg_tablespace_location((select oid from pg_tablespace where spcname='tbs2'));
select oid,* from pg_tablespace;

修改表空间名称
alter tablespace tbs3 rename to tbs4;

修改表空间所有者
alter tablespace tbs4 owner to jack;

修改表空间大小
alter tablespace tbs4 resize maxsize unlimited;

重置表空间分页
alter tablespace tbs4 reset (random_page_cost);

删除表空间(删除表空间的前提条件是该表空间内容为空)
drop tablespace tbs4;

(3)表模式操作
创建模式示例1:
create schema sch1;

创建模式示例2:
create schema sch2 authorization jack;

修改模式名称
alter schema sch2 rename to sch3;

修改模式所有者
alter schema sch1 owner to jack;

删除模式
drop schema sch3;

修改模式查询的范围(当前会话有效)
set  search_path to  public,song;

注意:
a. 不建议创建以PG_为前缀的schema名,该类的schema是为数据库系统预留的
b. 搜索路径(search_path)始终以pg_temp和pg_catalog这两个schema作为搜索路径顺序中的前两位

(4)创建表
创建表示例1:
create table emp1 as select * from emp where sal<2000;

创建表示例2:
create table emp2 as table emp;

创建表示例3:
CREATE TABLE IF NOT EXISTS warehouse_t1 -- 表不存在时才创建,使得当该表存在时该建表语句不会报错
(
W_WAREHOUSE_SK INTEGER NOT NULL,
W_WAREHOUSE_ID CHAR(16) NOT NULL,
W_WAREHOUSE_NAME VARCHAR(20) UNIQUE DEFERRABLE, -- 事务结束时检查字段是否有重复
W_STREET_NAME VARCHAR(60) DICTIONARY, -- 压缩算法Dictionary
W_SUITE_NUMBER CHAR(10) ,
W_STATE CHAR(2) DEFAULT 'GA', -- 缺省值为'GA'
W_GMT_OFFSET DECIMAL(5,2)
) TABLESPACE tbs1;

创建表示例4:
CREATE UNLOGGED TABLE warehouse_t2 -- 不写入预写日志
(
W_WAREHOUSE_SK INTEGER PRIMARY KEY, -- 主键约束
W_WAREHOUSE_ID CHAR(16) NOT NULL, -- 非空约束
W_WAREHOUSE_NAME VARCHAR(20) UNIQUE, -- 唯一键约束
W_GMT_OFFSET DECIMAL(5,2) ,
CONSTRAINT W_CONSTR_KEY2 CHECK(W_WAREHOUSE_SK > 0 AND W_WAREHOUSE_NAME IS NOT NULL) -- 检查列约束
) WITH(fillfactor=70);

创建表示例5(创建临时表):
CREATE TEMPORARY TABLE warehouse_t3 -- 创建临时表(临时表不能指定schema)
(
W_WAREHOUSE_SK INTEGER NOT NULL,
W_WAREHOUSE_ID CHAR(16) NOT NULL,
PRIMARY KEY(W_WAREHOUSE_SK) -- 主键约束
) ON COMMIT DELETE ROWS;

创建表示例6:
CREATE TABLE warehouse_t4
(
W_WAREHOUSE_SK INTEGER NOT NULL,
W_WAREHOUSE_ID CHAR(16) NOT NULL,
W_WAREHOUSE_NAME VARCHAR(20) UNIQUE USING INDEX TABLESPACE tbs1, -- 指定该列索引存储的表空间
CONSTRAINT W_CSTR_KEY1 PRIMARY KEY(W_WAREHOUSE_SK, W_WAREHOUSE_ID) -- 复合主键约束W_CSTR_KEY1
) COMPRESS;

创建表示例7:
CREATE TABLE warehouse_t5
(
W_WAREHOUSE_SK INTEGER PRIMARY KEY CHECK (W_WAREHOUSE_SK > 0), -- 检查列约束
W_WAREHOUSE_ID CHAR(16) NOT NULL,
W_WAREHOUSE_NAME VARCHAR(20) CHECK (W_WAREHOUSE_NAME IS NOT NULL), -- 检查列约束
W_GMT_OFFSET DECIMAL(5,2) REFERENCES DEPT(DEPTNO) -- 外键约束
);

创建表示例8:
CREATE TABLE warehouse_t6
(
W_WAREHOUSE_SK INTEGER NOT NULL,
W_WAREHOUSE_ID CHAR(16) NOT NULL,
W_WAREHOUSE_NAME VARCHAR(20) ,
W_GMT_OFFSET DECIMAL(5,2),
PARTIAL CLUSTER KEY(W_WAREHOUSE_SK, W_WAREHOUSE_ID) -- 局部聚簇存储
) WITH (ORIENTATION = COLUMN, COMPRESSION=HIGH); -- 带有压缩特性的列存储表(列存储表不支持约束)

修改列属性
alter table emp1 modify sal number(10,2); 

重命名列
alter table emp1 rename column ename to name; 
(5)创建约束
添加主键约束
alter table emp1 add primary key (empno); 

添加check约束
alter table emp1 add constraint chk_dept check (deptno is not null); 

添加外键约束
alter table emp1 add constraint fk_dept foreign key (deptno) references dept(deptno); 

修改列约束条件
alter table emp1 modify sal constraint chk_sal not null; 

重命名约束
alter table emp1 rename constraint chk_dept to chk_deptno; 

设置所属schema
alter table emp1 set schema jack; 

重命名表
alter table jack.emp1 rename to emp2; 

行级访问控制的目的是控制表中行级数据可见性,行访问控制策略针对特定数据库用户、特定SQL操作生效。
create user alice password 'gauss@123';
create table all_data(id int, role varchar(100), data varchar(100));
insert into all_data values(1, 'alice', 'alice data');
insert into all_data values(2, 'bob', 'bob data' );
insert into all_data values(3, 'peter', 'peter data');
grant select on all_data to alice;
alter table all_data enable row level security;
create row level security policy all_data_rls on all_data using(role = current_user);
\c - alice
select * from all_data; -- 仅能看到指定用户的数据,系统管理员不受行访问控制影响
explain select * from public.all_data;
(6)创建索引
创建唯一索引
create unique index t1_fn_idx on t1(relfilenode); 

 创建复合索引
create index t1_owner_tbs_idx on t1(relowner,reltablespace);

创建部分索引
create index t1_lttbs_idx on t1(reltablespace) where reltablespace<20; 

创建函数索引
create index t1_upname_idx on t1(upper(relname)); 

创建分区表的本地索引
create index pt1_id_idx on pt1(id) local; 

创建分区表的全局索引
create index pt1_score_idx on pt1(score) global tablespace tbs1; 

修改索引
alter index t1_fn_idx rename to t1_fn_idx2;
alter index t1_fn_idx2 set tablespace tbs2;
alter index t1_lttbs_idx unusable;
alter index t1_lttbs_idx rebuild;

修改分区索引
alter index pt1_id_idx rebuild partition p1_id_idx;
alter index pt1_id_idx modify partition p1_id_idx unusable;
alter index pt1_id_idx rename partition p1_id_idx to p1_id_idx2;
alter index pt1_id_idx move partition p1_id_idx2 tablespace tbs1;

删除索引
drop index t1_lttbs_idx;

在这里插入图片描述

(7)创建序列
创建序列
create sequence seq01;
create sequence seq02 increment by 1 minvalue 1 maxvalue 99999 cache 1 nocycle;

查看序列
\d t2_id_seq
select * from t2_id_seq;

使用序列
select nextval('seq01');  --递增序列并返回新值
select seq01.nextval;
select currval('seq01');  --最近一次nextval返回的值
select seq01.currval;
select lastval();  --最近一次nextval返回的值
select setval('seq01',1);  --设置序列的当前数值

修改序列属性
alter sequence seq01 maxvalue 99999;
alter sequence seq01 owner to jack;

删除序列
drop sequence seq01;
drop sequence seq02 cascade;

在这里插入图片描述

(8)查询表数据

待更新

(9)插入表数据

待更新

(10)修改表数据

待更新

(11)删除表数据

待更新

5. 数据库权限管理

(1)用户

在这里插入图片描述

创建用户示例1(普通用户):
create user jamy2 identified by 'Abc123456*';

授予用户所有权限(将sysadmin权限赋予指定的角色或者用户)
grant all privileges to jamy2;

在这里插入图片描述

将角色或用户的权限授权给其他角色或用户
grant jamy to jamy5 with admin option;

在这里插入图片描述

创建用户示例2(直接创建带有管理员权限的用户):
create user jamy3 with sysadmin password 'Abc123456*';

在这里插入图片描述

创建用户示例3(普通用户)
create user jamy4 identified by 'Abc123456*';

修改用户权限
alter user jamy4 with CREATEDB;

在这里插入图片描述

创建用户示例4(直接创建带有创建数据库权限的用户)
create role jamy5 with CREATEDB password "Abc123456*";

在这里插入图片描述

创建用户示例5(创建用户带有限制条件:有效期、连接数):
create user jamy6 with VALID BEGIN '2022-11-30 23:59:59' VALID UNTIL '2023-12-01 00:00:00' identified
by 'Abc123456*' CONNECTION LIMIT 100;

在这里插入图片描述

修改用户权限,拥有创建角色的权限
alter user jamy4 with CREATEROLE;

在这里插入图片描述

删除用户
drop user jamy4;

在这里插入图片描述

(2)授权
数据库授权
grant all privileges on database mydb to jamy3;

表空间授权
grant all privileges on tablespace tbs1 to jamy3;

schema授权
grant usage on schema sch1 to jamy3;

函数授权
grant execute on function func_add_sql(int,int) to jamy3;
grant execute on function proc_emp(var_empno int, OUT v_name varchar, OUT v_job varchar) to jamy3;

表授权
grant select (empno,ename,sal),update (comm) on emp TO jamy3;
grant select,insert,update,delete on all tables in schema sch1 to jamy3;
grant all privileges on emp to jamy3 with grant option;

授权jack角色给jamy1用户,且jamy1用户可授权其他用户
grant jack to jamy1 with admin option;
将管理员权限授予给用户jamy
grant all privileges to jamy;

权限回收
revoke jack from jamy1;

6. 图形化客户端

(1)Data Studio客户端

Data Studio是华为openGauss数据库连接的官方图形化客户端,登录只需要做如下两步步操作即可:
(1)编辑postgresql.conf文件

将listen_addresses这一行修改成:
listen_addresses = '*'

(2)编辑pg_hba.conf文件

在# IPv4 local connections这一行下面添加如下内容
host    all    all    0.0.0.0/0            sha256

注意:完成以上两步需要重启数据库
在这里插入图片描述
在这里插入图片描述

(2)navicat客户端

要想使用navicat登录openGauss数据库,需要做如下三步操作
(1)编辑postgresql.conf文件

将listen_addresses这一行修改成:
listen_addresses = '*'
将password_encryption_type这一行修改成:
password_encryption_type = 1

(2)编辑pg_hba.conf文件

在# IPv4 local connections这一行下面添加如下内容
host    all    all    0.0.0.0/0            md5

注意:以上两步步完成后重启数据库
gs_om -t restart
在这里插入图片描述
(3)修改用户登录密码
因为加密方式改变了,所以需要重新设置密码(采用了新的加密方式)

修改密码,新密码不能和原密码一样
alter user jamysong identified by 'Sjm214325*';

在这里插入图片描述
以上三步完成后就可以使用navicat登录openGauss数据库了
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

如何使用轻量应用服务器搭建高颜值的YesPlayMusic网易云播放器

本文介绍了如何使用腾讯云的Lighthouse轻量应用服务器来搭建一个高颜值的第三方网易云播放器。 ​ 项目简介 本文使用的是YesPlayMusic项目&#xff0c;这是一款高颜值的第三方网易云播放器&#xff0c;它完全可以作为网易云官方应用的替代品。而且还拥有一些网易云官方应用没…

react-dnd 拖拽能力教程

前言 近几年来&#xff0c;低代码、零代码的热度在国内逐年递增。“复杂度同力一样不会消失&#xff0c;也不会凭空产生&#xff0c;它总是从一个物体转移到另一个物体或一种形式转为另一种形式”。用户在使用低零代码构建应用程序时&#xff0c;这些能力只是被平台研发人员提…

SQL SERVER 2019卸载和安装

卸载过程删除SQL Server2019包括sql server这个数据库和它的管理工具SQLServer Management Studio以及他们的注册表信息和安装的目录&#xff0c;以上&#xff0c;最重要的是一定要有耐心&#xff0c;一步一步慢慢来。 首先打开一定要把SQL的服务都关掉&#xff0c;这个很重要…

压缩包文件如何设置加密、删除加密?

压缩包是将文件压缩成RAR、ZIP格式文件&#xff0c;将文件压缩成压缩包之后&#xff0c;就更方便转发以及保存&#xff0c;而且压缩包文件可以进行加密&#xff0c;这样也能够起到对文件的保护作用&#xff0c;今天和大家分享如何对压缩包进行加密以及如何删除压缩包密码。 压…

战略,就没一本好书

战略这个词被工商业界引爆&#xff0c;都是1965年的事。想来到现在已经快60年了。但是实话说&#xff0c;战略这么重要的事&#xff0c;其实没几本好书&#xff0c;也就是说&#xff0c;这个领域&#xff0c;实在没什么有效的研究成果。&#xff08;1&#xff09;起点1965年是个…

Vue 进阶二 | 系统性学习 | 无知的我费曼笔记

无知的我正在复盘Vue 该笔记特点是 重新整理了涉及资料的一些语言描述、排版而使用了自己的描述对一些地方做了补充说明。比如解释专有名词、类比说明、对比说明、注意事项提升了总结归纳性。尽可能在每个知识点上都使用一句话 || 关键词概括更注重在实际上怎么应用提出并回答…

数据可视化之卡塔尔世界杯,世界杯8强全部出炉,你看好那支队伍?

2022年下半年可算是集结了众多国际赛事&#xff0c;前有csgo major&#xff0c;英雄联盟总决赛&#xff0c;后有斯诺克英锦赛。当然这些赛事里面最万众瞩目的就是4年一度的卡塔尔世界杯了。本届世界杯开赛前最大的看点就是世界杯的花费&#xff0c;卡塔尔2022年世界杯花费2290亿…

他让我看重采样

周末邓总让我帮忙看下重采样的代码&#xff0c;然后我就用上了自己的神器。我的神器就是Google之后总结了下代码&#xff0c;完整的代码可以往下看&#xff0c;我们平时也会用到重采样&#xff0c;通道转换、交织和非交织的相互转换、给音频重新map等等。这些都是做音频需要搞的…

(红帽系统)redhat7.2 相关服务器配置

远程连接服务器配置 简介 使用SSH可以在本地主机和远程服务器之间进行加密的传输数据&#xff0c;实现数据的安全传输。而OpenSSH是SSH协议的免费开源实现&#xff0c;它采用安全加密的网络连接工具代替了telnet、ftp等 实现步骤 第一步 进入红帽系统 第二步 检查安装系统时…

需求处理的流程及问题挑战

本文主要讲需求的一般处理流程&#xff0c;以及可能存在的问题及挑战。 一、需求处理流程&#xff1a; 1、需求的生命周期&#xff1a; 起点是提需求&#xff0c;终点是拒绝或接受需求。每个人希望自己的需求能被接受或满足&#xff0c;但资源总是有限的。每个需求从产生到实…

SRM系统的国内品牌前五名是哪几家,大概价位是多少?

SRM系统的国内品牌前五名是哪几家&#xff0c;大概价位是多少&#xff1f;SRM系统是采购数字化转型过程中的产物&#xff0c;SRM系统与ERP与SCM系统打通后&#xff0c;能够破除信息壁垒&#xff0c;增加采购部门与业务部门的沟通效率&#xff0c;从而实现企业人、物、财成本的降…

JavaSE——多线程详细

目录 一、多线程 1.1 基本介绍 1.2 进程和线程的关系 1.3 多线程并发概念 二、实现线程的方式 2.1 继承Thread类 2.2 实现java.lang.Runnable接口 2.3 匿名类 2.4 实现Callable接口&#xff08;JDK8新特性&#xff09; 2.5 run和start的区别 2.6 线程声明周期 三、…

双非本科怎么了,照样拿到阿里 offer! 分享阿里技术四面 + 交叉面 +HR 面难忘经历

说一下 java 类加载器的工作机制&#xff1f;类加载在哪个区域进行的&#xff1f; 说一下 java 的线程模型&#xff1f; violate 了解吗&#xff1f;它的原理是什么&#xff1f;violate 是线程安全的吗&#xff1f; 保证线程安全的解决方法有哪些&#xff1f;说一说读写锁吧…

前端高频手写面试题总结

实现字符串的repeat方法 输入字符串s&#xff0c;以及其重复的次数&#xff0c;输出重复的结果&#xff0c;例如输入abc&#xff0c;2&#xff0c;输出abcabc。 function repeat(s, n) {return (new Array(n 1)).join(s); }递归&#xff1a; function repeat(s, n) {return…

通过 JFR 与日志深入探索 JVM - TLAB 原理详解

什么是 TLAB&#xff1f; TLAB&#xff08;Thread Local Allocation Buffer&#xff09;线程本地分配缓存区&#xff0c;这是一个线程专用的内存分配区域。既然是一个内存分配区域&#xff0c;我们就先要搞清楚 Java 内存大概是如何分配的。 我们一般认为 Java 中 new 的对象…

模板模式

文章目录思考模板模式1.模板模式的本质2.何时选用模板模式3.优缺点4.模板方法的结构5.实现思考模板模式 模板模式其实就是抽离共用方法到抽象类中&#xff0c;然后再规定其具体实现步骤 1.模板模式的本质 模板方法模式的本质:固定算法骨架。 模板方法模式主要是通过制定模板&am…

系统集成企业需具备哪些证书?

IT信息化企业&#xff0c;系统集成企业需要做的资质证书有哪些&#xff1f;经常遇到有新成立的系统集成商问智达鑫业小编&#xff0c;该申请哪些企业资质&#xff0c;接下来了小编整理下目前市场上使用频率比较高的一些资质证书&#xff0c;大家可以参考下。 信息系统建设和服务…

A-Level考试常见问题综合解答

关于A Level的Q&A 问&#xff1a;参加A Level的考试与其他考试相比有什么优势吗&#xff1f; 答&#xff1a;A Level考试的门数相较其他国际课程更少&#xff0c;学生有更多的时间花费在每门课上取得更好的GPA和最终成绩。问&#xff1a;就读的学校就直接提供A Level课程&a…

jmeter断言

jmeter断言常用的有响应断言和json断言&#xff1b; 常用的响应断言&#xff1a; 1.字符串&#xff1a;如果响应中包含了指定的字符串&#xff0c;判断为成功&#xff0c;不支持正则表达式&#xff1b;如下图&#xff1a; 2.包括&#xff1a;如果响应中包含了指定的字符串&…

mac清空废纸篓怎么恢复?

众所周知&#xff0c;电脑只要在运行都会产生一些临时文件或者文档&#xff0c;而这些文件会存放在电脑的存储空间里&#xff0c;方便我们后续的使用。当Mac中存储的文件过多时&#xff0c;就会影响到我们的正常使用&#xff0c;只有通过清理电脑文件&#xff0c;来释放更多的存…