文章目录
-
- 创建高斯数据库 gaussDB(DWS)
- 连接 gaussDB(DWS)
- GaussDB (DWS) 命令学习
-
- `\l`: 列出所有数据库
- `\c 数据库名` :切换数据库
- 创建一个表
- 维护数据
- 创建和管理 schema
- 其余命令
- 总结
创建高斯数据库 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
可以切换数据库,例如下述命令:
\c postgres
使用之后会要求再次输入密码:
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".
切换成功之后,会发现输入状态提示位置已经切换到新的数据库中。
postgres=> \d
此时我们可以用 \d
查看当前数据库下的表。
如果该数据库下没有表,则提示下述无关系。
No relations found.
创建一个表
为了后续测试,我们需要创建一个数据表,使用命令与 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);
代码复制之后的结果如下所示,注意 =>
和 ->
:
然后回车运行建表脚本,得到下述内容,表示表创建完毕。
CREATE TABLE
此时再使用 \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', '???');
提示信息:
INSERT 0 1
此时可以用 \d+
命令查看表的属性
\d+ customer_t1;
得到的结果如下所示:
查询命令
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,效果如下:
模式相关命令
查看数据库当前模式
select current_schema;
设置当前数据库模式
set current_schema=my_schema;
创建 schema 并指定 owner
create schema my_schema authorization dlpuser;
关于 schema 更多命令,可以在实战用继续学习。
其余命令
使用 show server_encoding;
可以查看数据库编码。
查看数据库用户
select * from pg_user;
查看当前数据库拥有的表
select * from pg_tables;
总结
本篇博客从 DWS 初始化入手,为大家重点介绍了最常用的 Gaussdb 命令,其中 SQL 部分参考 MySQL 知识点即可,gsql 可以着重学习一下,当然 DWS 还有更多的技能栈,例如 分区,索引,视图,序列,定时任务,我们下篇博客见~