如何在金仓数据库KingbaseES中新建一个数据库?新建一个表?给表添加一个字段?

如何在KingbaseES(金仓数据库)中新建一个数据库?新建一个表?给表添加一个字段?

摘要

KingbaseES(金仓数据库)新建数据库、创建表、添加字段全流程实战指南,涵盖 KES 数据库属性、sys_database 系统表查询、sys_database_size 磁盘空间监控;基于图形界面快速创建数据库、表及字段;SQL 语句详解:CREATE DATABASE、createdb、CREATE TABLE、ALTER TABLE ADD COLUMN;模板库(template0/template1)、编码(UTF8/GBK/GB18030)、表空间管理、权限配置、DDL 脚本生成;适用于 ksql/psql 客户端、命令行工具和可视化管理工具的数据库对象管理与数据定义语言(DDL)最佳实践。

目录

  1. 问题
  2. 文档概述
  3. 数据库属性
  4. 创建一个KES数据库
    1. 基于图形界面创建一个KES数据库
    2. [通过 CREATE DATABASE 创建一个KES数据库](#通过 CREATE DATABASE 创建一个KES数据库)
    3. [通过 createdb 创建一个KES数据库](#通过 createdb 创建一个KES数据库)
  5. 新建一个表
    1. 基于图形界面新建一个表
    2. [通过 CREATE TABLE 新建一个表](#通过 CREATE TABLE 新建一个表)
  6. 给表添加一个字段
    1. 基于图形界面给表添加字段
    2. [通过 ALTER TABLE 给表添加字段](#通过 ALTER TABLE 给表添加字段)

1. 问题

如何在 KingbaseES(金仓数据库)中:

  • 新建一个数据库?
  • 在该数据库中新建一个表?
  • 给已有表添加一个字段?

2. 概述

本文将从 KingbaseES 的基本概念与属性入手,详细介绍三种方式创建数据库,并演示如何通过图形界面与 SQL 语句完成表的创建和字段的添加。阅读完本文,您将掌握在 KingbaseES 中进行常见 DDL(数据定义语言)操作的全流程。


3. 数据库属性

在 KingbaseES 中,数据库 (Database)是多个数据库对象(表、索引、序列、视图等)的命名集合。一个实例(Instance)中可以包含多个数据库。每个数据库内的对象相互隔离,但可以通过系统表如 sys_database 和 sys_schema 查看和管理。

  • sys_database:列出实例中所有数据库名称、所有者、编码等信息。
  • sys_database_size('dbname'):返回指定数据库所占磁盘空间大小。
  • 模板库 :template0、template1,用于在创建新库时复制初始结构。
sql 复制代码
-- 查看已有数据库列表
SELECT datname, datdba, encoding, datcollate, datctype
  FROM sys_database;
  
-- 查看 test 库大小
SELECT sys_database_size('test');

4. 创建一个KES数据库

在 KingbaseES 中,常见的创建数据库方式有三种:

  1. 基于图形界面
  2. 通过 SQL 语句 CREATE DATABASE
  3. 通过命令行工具 createdb

4.1. 基于图形界面创建一个KES数据库

  1. 启动 KingbaseES 管理客户端,连接到目标实例。

  2. 在左侧导航树中,右键点击 "数据库" 节点,选择 "新建数据库" 。

  3. 在弹出的向导中,按页填写信息:

    • 基本属性页 :
      • 名称:指定新数据库名,不得与现有库重复。
      • 属主:默认当前用户,可更改为其他已存在角色。
      • 编码:默认为 UTF8,可选 ASCII、GBK、GB18030。
    • 权限页:为其他用户/角色分配 CONNECT、CREATE 等权限。
    • DDL 页 :查看最终生成的 CREATE DATABASE 语句。
  4. 点击 确定 完成创建。

在向导中,可随时切换到 DDL 页,复制生成的 SQL,便于后续脚本化部署。

4.2. 通过 CREATE DATABASE 创建一个KES数据库

使用 SQL 语句直接在客户端(如 ksql、psql)中执行:

sql 复制代码
-- 仅指定库名,默认属主为当前连接用户
CREATE DATABASE mydb;

-- 指定属主和编码
CREATE DATABASE mydb
  WITH
    OWNER = dbuser
    ENCODING = 'UTF8'
    TEMPLATE = template1
    TABLESPACE = pg_default;

注意事项

  1. 数据库名必须符合标识符规则,避免使用保留字。
  2. 普通用户只能创建属于自己的数据库;若要创建其他属主的库,需使用超级用户 system。

4.3. 通过 createdb 创建一个KES数据库

createdb 是 KingbaseES 提供的命令行辅助工具,本质上会登录实例并执行 CREATE DATABASE。

bash 复制代码
# 使用默认参数,以当前系统用户名创建同名数据库
$ createdb demo

# 指定端口、主机、属主等
$ createdb -h 127.0.0.1 -p 54321 -U system -O dbuser -T template1 demo
  • -h:服务器地址
  • -p:端口号
  • -U:连接用户名
  • -O:新库属主
  • -T:指定模板库

5. 新建一个表

创建完数据库后,需要在其中定义表结构。KingbaseES 的表创建方式也有两种:图形界面与 SQL 语句。

5.1. 基于图形界面新建一个表

  1. 在管理客户端中,连接到目标数据库 mydb。
  2. 展开左侧树形结构至 "模式(Schemas)" → "public" → "表(Tables)"。
  3. 右键 "表" ,选择 "新建表"。
  4. 在向导中填写:
    • 表名 、表空间
    • 列定义:逐行添加列名、数据类型、长度、是否可空、默认值等。
    • 主键/索引:在相关页签定义主键或其他索引。
  5. 查看生成的 CREATE TABLE DDL,点击确认完成。

5.2. 通过 CREATE TABLE 新建一个表

在 SQL 客户端中执行:

sql 复制代码
-- 示例:创建用户表
CREATE TABLE public.users (
  id        BIGSERIAL PRIMARY KEY,
  username  VARCHAR(50) NOT NULL UNIQUE,
  email     VARCHAR(100),
  created_at TIMESTAMP WITHOUT TIME ZONE DEFAULT CURRENT_TIMESTAMP
);

-- 查看表结构
\d+ public.users;
  • BIGSERIAL:自增主键
  • VARCHAR(n):变长字符
  • NOT NULL:非空约束
  • UNIQUE:唯一约束
  • DEFAULT:默认值

6. 给表添加一个字段

当业务需求变化时,可能需要在已有表中增加新字段。KingbaseES 支持在图形界面或通过 ALTER TABLE 完成。

6.1. 基于图形界面给表添加字段

  1. 在管理客户端中,连接到 mydb,找到目标表 public.users。
  2. 右键点击该表,选择 "修改表"。
  3. 在 "列" 页签点击 "添加",输入新列名、类型、默认值、约束等。
  4. 确认后,客户端会执行相应的 ALTER TABLE 语句。

6.2. 通过 ALTER TABLE 给表添加字段

在 SQL 客户端中执行:

sql 复制代码
-- 为 users 表新增 last_login 字段
ALTER TABLE public.users
  ADD COLUMN last_login TIMESTAMP WITHOUT TIME ZONE;

-- 带默认值且非空
ALTER TABLE public.users
  ADD COLUMN status VARCHAR(20) NOT NULL DEFAULT 'active';
  • ADD COLUMN:添加新列
  • 可同时指定 NOT NULL、DEFAULT、CHECK 等约束

查看修改结果:

sql 复制代码
-- 再次查看表结构
\d+ public.users;

通过以上步骤,您已掌握 KingbaseES 中创建数据库、建表与扩展表结构的核心操作。建议在生产环境中,将这些 DDL 操作纳入版本控制,并在测试库演练后,再应用到线上数据库,以确保安全无误。祝您使用愉快!

7. 结论

通过本文的介绍,您已经全面掌握了在 KingbaseES(金仓数据库)中创建数据库、建表以及给表添加字段的三种主流方法:图形界面操作、SQL DDL 语句(CREATE DATABASE/CREATE TABLE/ALTER TABLE)和命令行工具(createdb)。在实际应用中,建议您:

  • 结合版本控制:将所有 DDL 脚本纳入 Git 等版本管理系统,便于回滚与审计。
  • 规范命名与编码:统一数据库、表、字段命名规则,确保字符集(UTF8、GBK、GB18030)与排序规则一致。
  • 权限与安全:合理分配属主与访问权限,使用最小权限原则保障数据安全。
  • 测试与演练:在测试环境中演练所有操作后,再推送至生产环境,降低因脚本错误带来的风险。

掌握这些核心操作与最佳实践,将助您在 KingbaseES 中高效、可靠地管理数据库架构,提升开发与运维的自动化与可维护性。如需进一步深入,请查阅官方文档或探索更多高级特性,例如表分区、并行查询与逻辑复制。祝您数据库管理之旅顺利!

相关推荐
周小董7 分钟前
[1369]Windows上安装PostgreSQL
数据库·windows·postgresql
一只积极向上的小咸鱼2 小时前
第一性原理思考:从拆解问题到用实验检验答案
数据库
这个DBA有点耶3 小时前
时序数据库InfluxDB高基数问题深度拆解:内存索引膨胀机制与OOM完整链路
数据库·架构·dba
加油yx3 小时前
MySQL数据类型
数据库·mysql
蓝胖的四次元口袋3 小时前
Redis知识梳理(1)
数据库·redis·缓存
夜雪一千3 小时前
MySQL 数据加密实战:从传输、存储到字段级加密,分清场景不踩坑
数据库·mysql
wefg14 小时前
【Redis】C++ 自定义客户端
数据库·redis·缓存
这个DBA有点耶4 小时前
为什么UPDATE比SELECT危险得多?锁范围等于扫描行数
数据库·架构·代码规范
天国梦5 小时前
国密门禁品牌怎么选?2026年最新3个避坑要点
运维·服务器·数据库·python
DB哥讲数据库5 小时前
【达梦数据库安装教程】超详细图文讲解-附达梦安装包
数据库·oracle