文章目录
创建高斯数据库 gaussDB(DWS)
在正式开始前需要提前创建一下 VPC,位置入口如下所示。

在打开的页面配置如下信息,然后创建即可。

其中首要进行的修改是 基本名称 和 子网名称
创建完毕之后的结果如下所示:

接下来就可以配置高斯数据库 DWS 了,功能入口地址为 大数据->数据仓库服务 GaussDB(DWS)

这里按照华为云提示输入即可,请注意购买一个公网 IP,否则后续实践不好操作。
虚拟私有云选择前文配置内容即可。

创建之后需要等 10 分钟所有的初始化实践,然后出现 可用 状态后,表示创建成功。

连接 gaussDB(DWS)
首先下载链接工具,下载完毕在 Download 目录对文件进行解压与链接操作。

- unzip dws_client_8.1.x_redhat_x64.zip
- source gsql_env.sh
复制代码 去 DWS 详情页拿到外网 IP,接下来就可以使用下述命令行进行连接。
- gsql -d gaussdb -h <DWS的公网IP> -U dbadmin -p 8000 -r -W <用户dbadmin密码>;
复制代码 使用公网 IP 和密码登录之后,进入到 DWS 操作界面。

其中与 gaussdb=> 对应的还有一个 gaussdb->,表示为换行,一般当你的命令没有结尾时,即未出现分号 (;),会出现该输入状态。
连接到 DWS 之后,就可以进行命令学习了。
GaussDB (DWS) 命令学习
首先使用万能命令 help,得到下图所示内容。

其中出现了很多关键信息
- You are using gsql, the command-line interface to gaussdb.
- Type: \copyright for distribution terms
- \h for help with SQL commands
- \? for help with gsql commands
- \g or terminate with semicolon to execute query
- \q to quit
复制代码 使用 \h 得到 SQL 命令,具体如下,省略了部分结果,其中涉及的内容与 MySQL 关键字基本一致,例如 Alter,Create,Drop 等内容。
- ABORT CREATE TEXT SEARCH CONFIGURATION
- ALTER APP WORKLOAD GROUP CREATE TEXT SEARCH DICTIONARY
- ALTER APP WORKLOAD GROUP MAPPING CREATE TRIGGER
- ALTER DATA SOURCE CREATE TYPE
- ALTER DATABASE CREATE USER
- ALTER DEFAULT PRIVILEGES CREATE VIEW
- ALTER DIRECTORY CREATE WORKLOAD GROUP
- ...skipping 1 line
- ALTER SESSION DROP NODE GROUP
- ALTER SYNONYM DROP OWNED
- ALTER SYSTEM KILL SESSION DROP PROCEDURE
- ALTER TABLE DROP REDACTION POLICY
- ALTER TABLE PARTITION DROP RESOURCE POOL
- ...skipping 1 line
- CREATE TABLE TRUNCATE
- CREATE TABLE AS UPDATE
- CREATE TABLE PARTITION VACUUM
- CREATE TABLESPACE VALUES
复制代码 使用 \? 得到的是 gsql 命令,这些是需要我们仔细学习的内容。
\copyright 获取的是版权信息,得到内容如下所示:
- GaussDB Database Management System
- Copyright (c) Huawei Technologies Co., Ltd. 2018. All rights reserved.`
复制代码 首先记住 \q 是退出,但是如果一口气把所有命令都记住是不可能的,因为编程属于熟能生巧的技术工种,所以死记硬背效果不大。
我们先看一下基本 gsql 命令。
\l: 列出所有数据库

\c 数据库名 :切换数据库
使用 \c 可以切换数据库,例如下述命令:
使用之后会要求再次输入密码:
- assword for user dbadmin:
- SSL connection (protocol: TLSv1.3, cipher: TLS_AES_128_GCM_SHA256, bits: 128)
- You are now connected to database "postgres" as user "dbadmin".
复制代码 切换成功之后,会发现输入状态提示位置已经切换到新的数据库中。
此时我们可以用 \d 查看当前数据库下的表。

如果该数据库下没有表,则提示下述无关系。
创建一个表
为了后续测试,我们需要创建一个数据表,使用命令与 MySQL 一致,具体如下:
- CREATE TABLE customer_t1
- (
- c_customer_sk integer,
- c_customer_id char(5),
- c_first_name char(6),
- c_last_name char(8)
- )
- with (orientation = column,compression=middle)
- distribute by hash (c_last_name);
复制代码 代码复制之后的结果如下所示,注意 => 和 ->:

然后回车运行建表脚本,得到下述内容,表示表创建完毕。
此时再使用 \d 就能得到刚刚建立的数据表了。

表的字段名:c_customer_sk 、c_customer_id、c_first_name 和 c_last_name 是,integer、char(5)、char(6)和 char(8)是这四字段名称的类型。
表创建完毕,就可以对数据进行管理了,常见的操作是插入,更新,删除。
维护数据
插入数据
- INSERT INTO customer_t1(c_customer_sk, c_customer_id, c_first_name) VALUES (5566, 'hello', '橡皮擦');
复制代码 插入上述数据,由于 橡皮擦 超过了数据长度,所以出现下述异常。
- ERROR: value too long for type character(6)
- CONTEXT: referenced column: c_first_name
复制代码 修改之后,插入成功:
- INSERT INTO customer_t1(c_customer_sk, c_customer_id, c_first_name) VALUES (5566, 'hello', '???');
复制代码 提示信息:
此时可以用 \d+ 命令查看表的属性
得到的结果如下所示:

查询命令
- select * from customer_t1;
复制代码
其余的查询语句参考 MySQL 的 SELECT 语法即可。
更新与删除表数据
更新与删除语句与 MySQL 一致,可以互相参考学习。
创建和管理 schema
在 GaussDB DWS 中有一个新概念的出现,叫做 Schema ,即模式。
通过管理 schema,允许多个用户使用同一数据库而不相互干扰,可以将数据库对象组织成易于管理的逻辑组,同时便于将第三方应用添加到相应的 schema 下而不引起冲突。
有一些注意事项,抄录自官网手册:
- 数据库集群包含一个或多个已命名数据库。用户和用户组在整个集群范围内是共享的,但是其数据并不共享。任何与服务器连接的用户都只能访问连接请求里声明的那个数据库。
- 一个数据库可以包含一个或多个已命名的 schema,schema 又包含表及其他数据库对象,包括数据类型、函数、操作符等。同一对象名可以在不同的 schema 中使用而不会引起冲突。例如,schema1 和 schema2 都可以包含一个名为 mytable 的表。
使用 \dn 可以查看所有 schema:

使用 SHOW search_path;,可以显示当前使用的 schema,效果如下:

模式相关命令
查看数据库当前模式

设置当前数据库模式
- set current_schema=my_schema;
复制代码 创建 schema 并指定 owner
- create schema my_schema authorization dlpuser;
复制代码 关于 schema 更多命令,可以在实战用继续学习。
其余命令
使用 show server_encoding; 可以查看数据库编码。

查看数据库用户

查看当前数据库拥有的表

总结
本篇博客从 DWS 初始化入手,为大家重点介绍了最常用的 Gaussdb 命令,其中 SQL 部分参考 MySQL 知识点即可,gsql 可以着重学习一下,当然 DWS 还有更多的技能栈,例如 分区,索引,视图,序列,定时任务,我们下篇博客见~
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |