Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何在金仓数据库KingbaseES中新建一个数据库?新建一个表?给表添加一个字段?

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

作者头像
猫头虎
发布于 2025-05-09 00:37:31
发布于 2025-05-09 00:37:31
34000
代码可运行
举报
运行总次数:0
代码可运行

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

摘要

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

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

1. 问题

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

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

2. 概述

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


3. 数据库属性

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

  • sys_database:列出实例中所有数据库名称、所有者、编码等信息。
  • sys_database_size(‘dbname’):返回指定数据库所占磁盘空间大小。
  • 模板库template0template1,用于在创建新库时复制初始结构。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
-- 查看已有数据库列表
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. 在左侧导航树中,右键点击 “数据库” 节点,选择 “新建数据库”
在这里插入图片描述
在这里插入图片描述
  1. 在弹出的向导中,按页填写信息:
    • 基本属性页
      • 名称:指定新数据库名,不得与现有库重复。
      • 属主:默认当前用户,可更改为其他已存在角色。
      • 编码:默认为 UTF8,可选 ASCII、GBK、GB18030。
    • 权限页:为其他用户/角色分配 CONNECT、CREATE 等权限。
    • DDL 页:查看最终生成的 CREATE DATABASE 语句。
  2. 点击 确定 完成创建。

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

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
-- 仅指定库名,默认属主为当前连接用户
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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 使用默认参数,以当前系统用户名创建同名数据库
$ 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 客户端中执行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
-- 示例:创建用户表
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 客户端中执行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
-- 为 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 NULLDEFAULTCHECK 等约束

查看修改结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
-- 再次查看表结构
\d+ public.users;

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

7. 结论

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

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-05-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
如何完美解决 `safetensors_rust.SafetensorError: Error while deserializing header: HeaderTooLarge`
在使用 Rust 语言进行机器学习模型处理时,safetensors_rust.SafetensorError: Error while deserializing header: HeaderTooLarge 是一个常见的错误。本文将详细介绍该错误的成因、解决方案以及相关代码示例。通过本文的学习,读者可以全面了解该错误的来龙去脉,进而有效避免和解决此类问题。本教程适合各类读者,无论是初学者还是资深开发者,都能从中受益。
猫头虎
2024/06/15
1.9K0
如何完美解决ERROR: safetensors_rust.SafetensorError: Error while deserializing header: HeaderTooLarge
在处理机器学习模型或序列化模型时,可能会遇到 safetensors_rust.SafetensorError: Error while deserializing header: HeaderTooLarge 的错误。这个问题出现在使用 safetensors 序列化库进行模型保存或加载时,特别是在 Rust 实现中遇到该问题。本文将详细探讨该错误的原因、解决方案以及预防措施,并为 Python 和 Rust 两种场景下的开发者提供完整的代码示例和调试指南。
猫头虎
2024/05/08
16.7K0
内存不足:解决大模型训练时的CUDA Out of Memory错误
大家好,我是默语,擅长全栈开发、运维和人工智能技术。今天我将和大家分享在大模型训练时如何解决CUDA Out of Memory错误的解决方案。这个问题在深度学习领域非常常见,尤其是在处理大型数据集和复杂模型时。希望这篇文章能帮助大家更好地解决这一问题,提高模型训练的效率和稳定性。
默 语
2024/11/22
1.5K0
ERROR 1146 (42S02): Table ‘database.table‘ Doesn‘t Exist:完美解决方法
大家好,我是默语!在今天的技术博客中,我们将探讨 MySQL 数据库中遇到的 ERROR 1146 (42S02): Table 'database.table' doesn't exist 错误。这个错误通常发生在执行 SQL 查询时,表 database.table 无法找到。在本文中,我们将详细分析导致这一问题的原因,提供详细的诊断和解决方法,并讨论一些最佳实践。通过代码示例和深入的技术讲解,帮助您迅速解决这一常见的数据库问题。🔍
默 语
2024/11/22
7520
Rust到底值不值得学--Rust对比、特色和理念
其实我一直弄不明白一点,那就是计算机技术的发展,是让这个世界变得简单了,还是变得更复杂了。 当然这只是一个玩笑,可别把这个问题当真。
俺踏月色而来
2019/10/14
2.8K0
All in Rust,如何重构原 Java 技术栈的项目?| ArchSummit
Rust 作为一门备受关注的新编程语言,它在保持使用 JavaScript 等语言进行开发时所拥有的内存安全性的同时,还能够实现不亚于 C 的性能。不过大多数公司还没有大量应用它。白海科技作为国内唯数几个“All in Rust”的公司,最近正在进行由 Java 向 Rust 的全方位重构。
深度学习与Python
2022/06/11
8310
All in Rust,如何重构原 Java 技术栈的项目?| ArchSummit
rust 1.87.0来了!最新版本全解析,揭开性能与安全新高度
2025年5月16日,备受关注的Rust编程语言迎来了全新稳定版本——Rust 1.87.0!作为业界最领先、最安全且性能卓越的系统级语言,Rust不断通过版本升级推动开发体验和底层技术革新。本次1.87.0版本迭代,带来了多项重要的新功能和稳定性改进,涵盖语言核心特性、编译器优化、库功能升级、平台支持调整、Cargo包管理更新等。今天,我们将为你深度解析Rust 1.87.0所有亮点变化,助你玩转Rust生态,拥抱未来五年的编程新浪潮!
福大大架构师每日一题
2025/05/17
4570
rust 1.87.0来了!最新版本全解析,揭开性能与安全新高度
猫头虎分享疑难杂Bug:error: subprocess-exited-with-error 解决方案
error: subprocess-exited-with-error 是 Python 开发过程中常见的错误之一。本篇博客将详细介绍这一错误的成因、解决方法,以及常见的相关问题。通过清晰的代码案例和操作命令,帮助读者彻底掌握解决这一问题的技巧。
猫头虎
2024/08/09
2.2K0
猫头虎分享如何解决Error:The gateway did not receive a timely response from the upstream server or application
在这篇文章中,我们将详细探讨如何解决“The gateway did not receive a timely response from the upstream server or application.(code:0-5-31.07)”这一错误。本文适合所有技术水平的读者,通过深入分析错误的原因,提供详细的解决方案和代码示例,帮助大家快速解决这一问题,提升系统的稳定性和性能。
猫头虎
2025/06/01
860
猫头虎分享如何解决Error:The gateway did not receive a timely response from the upstream server or application
如何完美解决 Nginx出现 404 Not Found nginx/1.23.4 解决方案
在Nginx配置过程中,404 Not Found错误是一个常见问题。本文将详细解析Nginx 404 Not Found的原因及解决方案,确保您能够轻松解决这一问题。通过本篇文章,您将了解Nginx配置的细节,掌握快速定位和修复404错误的方法,提升服务器的稳定性和用户体验。
猫头虎
2024/05/24
9.8K0
ZeroDivisionError: division by zero 完美解决方法
在Python编程中,ZeroDivisionError: division by zero 是一个常见但容易避免的错误。这个错误通常发生在程序试图用零作为除数时,导致程序无法继续运行。本文将深入探讨导致此错误的常见原因,提供详细的解决方案,并通过代码示例展示如何在不同场景中预防和处理这一错误。
默 语
2024/11/22
1.8K0
Rust 视界周刊 Week 5 | 驳 “Rust 等内存安全语言的安全性并不优于C++”
FOSDEM 2023[1] 是软件开发人员见面、分享想法和协作的免费活动。每年,来自世界各地的数千名自由和开源软件开发人员齐聚布鲁塞尔。你不需要注册。只需出现并加入!
张汉东
2023/03/06
1K0
Rust 视界周刊 Week 5 | 驳 “Rust 等内存安全语言的安全性并不优于C++”
【Rust日报】2024-03-26 Rust target 目录的磁盘空间问题讨论
一位 Reddit 用户在反映,在他们的 1TB 机器上,一个 target 目录占用了高达 165GB 的空间,总共有近 500GB 的 target 目录空间被占用。
MikeLoveRust
2024/04/01
3490
【Rust日报】2024-03-26 Rust target 目录的磁盘空间问题讨论
Rust与Python:为什么Rust可以取代Python
在本指南中,我们将比较 Rust 和 Python 编程语言。我们将讨论每种情况下的适用用例,回顾使用 Rust 与 Python 的优缺点,并说明为什么 Rust 可能会取代 Python。
张张
2021/02/26
3.2K0
Rust与Python:为什么Rust可以取代Python
Rustacean 原则 与 Rust 之魂
Rustacean 是对Rust 编程语言[1]的用户的称呼。所以,「Rustacean 原则」可以看作是 Rust 官方团队站在 Rust 语言用户角度上创造 Rust 语言时所参考的原则。
张汉东
2022/12/08
1.5K0
Rustacean 原则 与 Rust 之魂
【java报错已解决】“Array Out of Bounds“
在软件开发中,遇到 “Array Out of Bounds” 报错是一种常见情况。这种错误通常发生在程序试图访问数组中超出有效索引范围的位置时。本文将深入探讨如何识别和解决这一问题。
鸽芷咕
2025/05/20
1120
「转自 InfoQ」Rust:一个不再有 C/C++ 的,实现安全实时软件的未来
Rust 作为新兴编程语言深受 Haskell 和 OCaml 等函数式编程语言的影响,使得它在语法上与 C++ 类似,但在语义上则完全不同。Rust 是静态类型语言,同时具有完整类型推断,而不是 C++ 的部分类型推断,它在速度上可与 C++ 媲美的同时,也保证了内存安全。
MikeLoveRust
2019/10/15
1.3K0
「转自 InfoQ」Rust:一个不再有 C/C++ 的,实现安全实时软件的未来
亲测有效!解决java.lang.IncompatibleClassChangeError异常的正确方法
在这篇博客中,我们将深入探讨java.lang.IncompatibleClassChangeError异常的原因,并提供亲测有效的解决办法。作为一名经验丰富的开发者,我将分享如何通过重新编译类、检查类加载器以及审查字节码操作来解决这个问题。希望这篇文章能够帮助你快速解决该异常,提升开发效率。
默 语
2024/11/20
5950
一起长锈:2 什么神器能确保Rust构建稳定可靠?(从Java与C++转Rust之旅)
上回的故事里,我们的Java程序员赵可菲和C++程序员席双嘉,在Rust大神贾克强的指导下,一起掌握了rustup工具链的用法。
程序员吾真本
2024/04/26
3540
一起长锈:2 什么神器能确保Rust构建稳定可靠?(从Java与C++转Rust之旅)
深入浅出HTTP请求头错误解析:Tomcat中的“Request Header is too Large”Error parsing HTTP request header问题
Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level. java.lang.IllegalArgumentException: Request header is too large
猫头虎
2024/04/17
2.8K0
深入浅出HTTP请求头错误解析:Tomcat中的“Request Header is too Large”Error parsing HTTP request header问题
推荐阅读
如何完美解决 `safetensors_rust.SafetensorError: Error while deserializing header: HeaderTooLarge`
1.9K0
如何完美解决ERROR: safetensors_rust.SafetensorError: Error while deserializing header: HeaderTooLarge
16.7K0
内存不足:解决大模型训练时的CUDA Out of Memory错误
1.5K0
ERROR 1146 (42S02): Table ‘database.table‘ Doesn‘t Exist:完美解决方法
7520
Rust到底值不值得学--Rust对比、特色和理念
2.8K0
All in Rust,如何重构原 Java 技术栈的项目?| ArchSummit
8310
rust 1.87.0来了!最新版本全解析,揭开性能与安全新高度
4570
猫头虎分享疑难杂Bug:error: subprocess-exited-with-error 解决方案
2.2K0
猫头虎分享如何解决Error:The gateway did not receive a timely response from the upstream server or application
860
如何完美解决 Nginx出现 404 Not Found nginx/1.23.4 解决方案
9.8K0
ZeroDivisionError: division by zero 完美解决方法
1.8K0
Rust 视界周刊 Week 5 | 驳 “Rust 等内存安全语言的安全性并不优于C++”
1K0
【Rust日报】2024-03-26 Rust target 目录的磁盘空间问题讨论
3490
Rust与Python:为什么Rust可以取代Python
3.2K0
Rustacean 原则 与 Rust 之魂
1.5K0
【java报错已解决】“Array Out of Bounds“
1120
「转自 InfoQ」Rust:一个不再有 C/C++ 的,实现安全实时软件的未来
1.3K0
亲测有效!解决java.lang.IncompatibleClassChangeError异常的正确方法
5950
一起长锈:2 什么神器能确保Rust构建稳定可靠?(从Java与C++转Rust之旅)
3540
深入浅出HTTP请求头错误解析:Tomcat中的“Request Header is too Large”Error parsing HTTP request header问题
2.8K0
相关推荐
如何完美解决 `safetensors_rust.SafetensorError: Error while deserializing header: HeaderTooLarge`
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验