gaussdb 基础管理 数据库 表 用户 模式 权限 存储过程

数据库database

#创建数据库,指定字符集UTF8,缺省情况下新数据库将通过复制标准系统数据库template0来创建,且仅支持使用template0来创建。

CREATE DATABASE devdb ENCODING 'UTF8' template = template0;

CREATE DATABASE testdb;

标识符的命名需要遵守如下规范:

* 标识符需要为字母(a-z)、下划线(_)、数字(0-9)或美元符号($)。

* 标识符必须以字母(a-z)或下划线(_)开头。

ENCODING = 'encoding' 可选。指定数据库使用的字符编码

TEMPLATE = template可选。模板名。即从哪一个模板创建新数据库。GaussDB采用从模板数据库复制的方式来创建新的数据库。

#修改数据库搜索路径

ALTER DATABASE testdb SET search_path TO pa_catalog,public;

#查询搜索路径

show search_path;

#查询数据库

SELECT datname FROM pg_database;

\l

#切回切换回默认数据库postgres

\c postgres

#重命名数据库

ALTER DATABASE testdb RENAME TO testdb1

表table

#行存表

CREATE TABLE PART ( P_PARTKEY BIGINT NOT NULL, P_NAME VARCHAR(55) NOT NULL, P_MFGR CHAR(25) NOT NULL, P_BRAND CHAR(10) NOT NULL, P_TYPE VARCHAR(25) NOT NULL, P_SIZE BIGINT NOT NULL, P_CONTAINER CHAR(10) NOT NULL, P_RETAILPRICE DECIMAL(15,2) NOT NULL, P_COMMENT VARCHAR(23) NOT NULL ) WITH (ORIENTATION = ROW);

#列存表

CREATE TABLE PART1 ( P_PARTKEY BIGINT NOT NULL, P_NAME VARCHAR(55) NOT NULL, P_MFGR CHAR(25) NOT NULL, P_BRAND CHAR(10) NOT NULL, P_TYPE VARCHAR(25) NOT NULL, P_SIZE BIGINT NOT NULL, P_CONTAINER CHAR(10) NOT NULL, P_RETAILPRICE DECIMAL(15,2) NOT NULL, P_COMMENT VARCHAR(23) NOT NULL ) WITH (ORIENTATION = COLUMN);

#查看表信息

\d

#增加列

ALTER TABLE part ADD COLUMN p_col1 bigint;

#增加列默认值

ALTER TABLE part ALTER COLUMN p_col1 SET DEFAULT 1;

#删除列默认值

ALTER TABLE part ALTER COLUMN p_col1 drop DEFAULT ;

#修改列数据类型

ALTER TABLE part MODIFY p_col1 INT;

#修改列名称

ALTER TABLE part RENAME p_col1 to p_col;

#查看表结构

\d part

#添加约束

CREATE UNIQUE INDEX bmsql_oorder_idx1 ON bmsql_oorder USING btree (o_w_id, o_d_id, o_carrier_id, o_id);

#添加索引

create index bmsql_customer_idx1 on bmsql_customer (c_w_id, c_d_id, c_last, c_first);

#查看索引

\di bmsql_customer_idx1

用户user

#创建用户

CREATE USER hccdp SYSADMIN IDENTIFIED BY "NHY^7ujm";

CREATE USER jim PASSWORD 'Gaussdb@123';

CREATE USER dim CREATEDB PASSWORD 'Gaussdb@123';

#修改密码

ALTER USER jim IDENTIFIED BY 'Abcd@123' REPLACE 'Gaussdb@123';

#添加权限

ALTER USER jim CREATEROLE;

#锁定用户 解锁用户

ALTER USER jim ACCOUNT LOCK;

ALTER USER jim ACCOUNT UNLOCK;

#删除用户

DROP USER jim? CASCADE;

#查看角色

\du jim

#查看用户列表

SELECT * FROM pg_user;

模式Schema

#创建模式 在数据库创建用户时,系统会自动帮助用户创建一个同名Schema

CREATE SCHEMA ds;

#更改模式名

ALTER SCHEMA ds RENAME TO ds_new;

#修改模式的所有者

ALTER SCHEMA ds_new OWNER TO jack;

#查看模式的所有者

SELECT s.nspname,u.usename AS nspowner FROM pg_namespace s, pg_user u WHERE s.nspowner = u.usesysid;

#查看模式

\dn

权限

#sysadmin权限授权给他

CREATE USER joe PASSWORD 'Gaussdb@123';

ALTER USER joe with sysadmin;

#查看用户权限变化

\du

#撤回权限

ALTER USER joe with nosysadmin;

#使用schema权限

GRANT USAGE ON SCHEMA tpcds TO joe;

#表所有权限

GRANT ALL PRIVILEGES ON tpcds.reason TO joe;

#列的权限

GRANT select (r_reason_sk,r_reason_id,r_reason_desc),update (r_reason_desc) ON tpcds.reason TO joe;

#数据库连接权限 创建schema 且允许joe将此权限授权给其他用户

GRANT create,connect on database postgres TO joe WITH GRANT OPTION;

#创建角色

CREATE ROLE tpcds_manager PASSWORD 'Gaussdb@123';

#赋予权限给角色

GRANT USAGE,CREATE ON SCHEMA tpcds TO tpcds_manager;

存储过程示例

#创建表 插入数据

CREATE TABLE employee (id varchar(100),name varchar(100),salary int);

CREATE TABLE ep_grade (id varchar(100),grade varchar(100),flag int);

Insert into employee values(1,'张三',5000);

Insert into employee values(2,'李四',5000);

Insert into employee values(3,'王五',5000);

Insert into employee values(4,'赵六',5000);

Insert into employee values(5,'太一',5000);

Insert into employee values(6,'太二',5000);

Insert into employee values(7,'太三',5000);

Insert into employee values(8,'太四',5000);

Insert into ep_grade values(1,'A',2022);

Insert into ep_grade values(2,'S',2021);

Insert into ep_grade values(3,'B',2021);

Insert into ep_grade values(4,'B',2021);

Insert into ep_grade values(5,'A',2021);

Insert into ep_grade values(6,'C',2022);

Insert into ep_grade values(7,'C',2021);

Insert into ep_grade values(8,'B',2022);

#创建存储过程

CREATE OR REPLACE PROCEDURE proc_emp()

AS

DECLARE

EP_ID VARCHAR(100);

GRADE VARCHAR(10);

SALARY INT;

CURSOR C1 IS select distinct id,grade FROM ep_grade where Flag = 2021;

BEGIN

OPEN C1;

LOOP

FETCH C1 INTO EP_ID,GRADE;

EXIT WHEN C1%NOTFOUND;

Case GRADE

when 'S'

then update employee set salary = salary+1000 where id=EP_ID ;

when 'A'

then update employee set salary = salary+500 where id=EP_ID ;

when 'B'

then update employee set salary = salary+100 where id=EP_ID;

when 'C'

then update employee set salary = salary-200 where id=EP_ID;

END Case;

DBE_OUTPUT.PRINT_LINE('ID: '||EP_ID||', Grade: '||GRADE||', updated.');

END LOOP;

CLOSE C1;

END;

/

#调用存储过程

call proc_emp();

相关推荐
奈斯先生Vector7 分钟前
从 127.0.0.1:3080 到插件运行时:DeepSeek Harness 远程开发与版本治理实战
linux·运维·人工智能·ubuntu·aigc
Android系统攻城狮39 分钟前
Linux PipeWire深度解析之pw_stream_new调用流程与实战(七十八)
linux·运维·服务器·音频进阶·pipewire音频实战进阶
@insist1232 小时前
系统集成项目管理工程师-信息和文档管理
网络·数据库·软考·系统集成项目管理工程师·软考中项·软件水平考试
东莞和裕包装3 小时前
如何管控广州定制纸箱生产中的啤切精度与印刷色差质量问题
大数据·运维·网络·人工智能
残 风3 小时前
PostgreSQL 存储机制详解
数据库·postgresql·开源·数据库开发
小飞侠在吗4 小时前
Windows 下 Nginx 访问 127.0.0.1 报 50x 错误:根因是路径里 \t 被当成 Tab
运维·windows·nginx
JacksonMx4 小时前
Java CompletableFuture 异步编程实战:从入门到架构师避坑指南
linux·数据库·python
tachibana24 小时前
性能指标的口径选择
数据库·人工智能·架构·大模型·llm
九硕智慧建筑一体化厂家5 小时前
楼宇自控|智慧建筑核心引擎!楼宇自控系统,赋能建筑高效低碳运维
运维·人工智能·笔记·智慧城市
90后小陈老师5 小时前
Google账号申诉处理建议
运维