华为高斯GaussDB入门教程:数据库实例、gsql客户端与建表示例解析【华为根技术】

举报
柠檬味拥抱 发表于 2025/08/30 12:44:54 2025/08/30
【摘要】 GaussDB作为华为自研的高性能分布式关系型数据库,凭借其高可靠性、强扩展性和安全性,在金融、电信及政企等关键业务场景中广泛应用。对于初学者而言,掌握从实例创建、ECS环境配置、gsql客户端连接到建表操作的完整流程,是顺利使用GaussDB的第一步。通过本文的示例操作,用户不仅可以快速上手,还能理解数据库设计中的字符集、排序规则、主键与外键约束等关键概念,为后续的数据库开发与管理打下坚实基础。

华为高斯GaussDB入门教程:数据库实例、gsql客户端与建表示例解析【华为根技术】

一、前言

GaussDB 是华为自研的分布式关系型数据库,具备高可靠性、强扩展性和高安全性,广泛应用于金融、电信、政企等关键业务场景。对于初学者来说,掌握 如何创建GaussDB实例并通过gsql客户端进行连接,是入门GaussDB的第一步。本文将带你从零开始,完成实例的创建与连接操作。


在这里插入图片描述

二、整体操作流程

使用GaussDB的标准流程如下:

  1. 创建数据库实例:在管理控制台申请GaussDB实例。
  2. 创建ECS云服务器:作为客户端环境,安装并运行gsql工具。
  3. 下载驱动包:获取对应版本的客户端工具。
  4. 使用gsql连接数据库:完成非SSL或SSL模式下的数据库连接。

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

三、创建GaussDB实例

1. 登录管理控制台

进入华为云 实例管理页面,单击 创建数据库实例
在这里插入图片描述

2. 配置实例信息

在创建数据库时,可以配置以下关键参数:

  • 数据库名(Database Name)
    用户自定义的新数据库名称。

  • 字符集(Encoding)
    数据库支持以下 4 种字符集:

    • UTF8
    • GBK
    • LATIN1
    • SQL_ASCII
  • 模板(Template)
    新数据库是通过复制模板数据库生成的。

    • 系统默认包含 template0template1 两个模板,以及一个默认用户数据库 gaussdb
    • 默认情况下,系统会基于 template1 创建新数据库。
    • 注意:不能指定 gaussdb 作为模板。
  • 排序规则(Collation)
    定义字符串比较的规则,默认值为 en_US.utf8

    • 例如,在 en_US.utf8 下:

      SELECT 'a' > 'A';  -- 结果为 false
      
    • 而在 C 排序规则下:

      SELECT 'a' > 'A';  -- 结果为 true
      
    • 若从 Oracle 迁移数据到 GaussDB(DWS),建议选择 C 排序规则以保持一致的比较结果。

    • 支持的排序规则可通过系统表 pg_collation 查询。

  • 字符分类(Ctype)
    控制字符的分类方式(LC_CTYPE),影响大小写和数字的识别。
    默认继承所选模板数据库的字符分类。

  • 兼容模式(DBCOMPATIBILITY)
    指定新数据库的兼容模式,可选值包括:

    • MySQL
    • TD(Teradata)
    • Oracle

在这里插入图片描述

四、创建ECS云服务器

GaussDB的命令行工具 gsql 需要运行在ECS上。

  1. 在管理控制台选择 计算 > 弹性云服务器

  2. 配置基础信息:

    • 企业项目:与GaussDB实例保持一致。
    • 可用区:保持一致。
    • 镜像:选择公共镜像,如 EulerOS
    • VPC、网卡、安全组:与GaussDB实例一致。
  3. 不使用弹性公网IP(通过内网访问数据库)。

  4. 点击 立即申请,完成ECS创建。


五、获取并安装gsql客户端

  1. 在管理控制台下载驱动包,上传到ECS的 /tmp/tools 目录。

  2. 解压并配置环境变量:

    mkdir /tmp/tools
    cd /tmp/tools
    tar -zxvf gsql_driver.tar.gz
    cp GaussDB-Kernel_***_EULER_64bit-Gsql.tar.gz /tmp/tools
    tar -zxvf GaussDB-Kernel_***_EULER_64bit-Gsql.tar.gz
    
    # 配置环境变量
    echo 'export PATH=/tmp/tools/bin:$PATH' >> ~/.bashrc
    echo 'export LD_LIBRARY_PATH=/tmp/tools/lib:$LD_LIBRARY_PATH' >> ~/.bashrc
    source ~/.bashrc
    

六、连接数据库

1. 非SSL连接

使用如下命令连接数据库:

gsql -d postgres -h 10.0.0.0 -U root -p 8000

参数说明:

  • -d postgres:数据库名称,默认是 postgres
  • -h 10.0.0.0:实例的内网IP。
  • -U root:数据库用户。
  • -p 8000:数据库端口号。

系统提示输入密码后,即可进入数据库交互界面。


在这里插入图片描述

2. SSL连接

如果需要安全连接,需要额外配置证书。

  1. 下载根证书并上传至ECS。

  2. 配置环境变量:

    export PGSSLMODE="verify-ca"
    export PGSSLROOTCERT="/home/user/ca.pem"
    gsql -h 10.0.0.0 -p 8000 -d postgres -U root
    
  3. 输入密码后,如果提示如下信息,说明SSL连接成功:

    SSL connection (cipher: DHE-RSA-AES256-GCM-SHA384, bits: 256)
    

七、建表

创建员工表示例

我们可以使用以下 SQL 语句在 GaussDB 中创建一个 EMPLOYEE(员工)表

CREATE TABLE EMPLOYEE (
    ID INT PRIMARY KEY NOT NULL,       -- 员工ID,主键且不能为空
    DEPT_ID INT NOT NULL,              -- 部门ID,不能为空
    NAME TEXT NOT NULL,                -- 员工姓名,不能为空
    AGE INT NOT NULL,                  -- 员工年龄,不能为空
    ADDRESS CHAR(50),                  -- 员工地址,固定长度50字符,可为空
    SALARY REAL                        -- 员工薪水,浮点类型,可为空
);

字段说明

字段名 数据类型 约束条件 说明
ID INT PRIMARY KEY NOT NULL 员工唯一标识,主键
DEPT_ID INT NOT NULL 员工所属部门ID
NAME TEXT NOT NULL 员工姓名
AGE INT NOT NULL 员工年龄
ADDRESS CHAR(50) 可为空 员工地址,固定长度50字符
SALARY REAL 可为空 员工薪资

说明

  1. 主键约束(PRIMARY KEY)

    • ID 字段作为员工表的唯一标识。
    • GaussDB 会自动为主键创建唯一索引。
  2. 数据类型选择

    • INT:整数类型,用于ID或年龄。
    • TEXT:变长文本,用于存储姓名。
    • CHAR(n):固定长度字符,适合存储长度固定的字段,如地址。
    • REAL:单精度浮点数,用于存储薪水或小数数据。
  3. NOT NULL约束

    • 强制字段必须填写,避免出现空值。

在这里插入图片描述

创建部门表示例

CREATE TABLE DEPARTMENT (
    ID INT PRIMARY KEY NOT NULL,      -- 部门ID,主键且不能为空
    DEPT CHAR(50) NOT NULL            -- 部门名称,固定长度50字符,不能为空
);

字段说明

字段名 数据类型 约束条件 说明
ID INT PRIMARY KEY NOT NULL 部门唯一标识,主键
DEPT CHAR(50) NOT NULL 部门名称

说明

  1. 主键约束

    • ID 字段作为部门的唯一标识,保证部门不会重复。
  2. 字符类型

    • CHAR(50):固定长度字符,适合存储部门名称。
  3. NOT NULL约束

    • 确保每个部门都有名称。

在员工表中建立外键约束

为了保证数据完整性,我们可以让员工表的 DEPT_ID 字段引用部门表的 ID 字段:

ALTER TABLE EMPLOYEE
ADD CONSTRAINT fk_employee_dept
FOREIGN KEY (DEPT_ID) REFERENCES DEPARTMENT(ID);

这样可以确保 每个员工的部门ID必须存在于部门表中


在这里插入图片描述

总结

GaussDB作为华为自研的高性能分布式关系型数据库,凭借其高可靠性、强扩展性和安全性,在金融、电信及政企等关键业务场景中广泛应用。对于初学者而言,掌握从实例创建、ECS环境配置、gsql客户端连接到建表操作的完整流程,是顺利使用GaussDB的第一步。通过本文的示例操作,用户不仅可以快速上手,还能理解数据库设计中的字符集、排序规则、主键与外键约束等关键概念,为后续的数据库开发与管理打下坚实基础。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。