金仓数据库麒麟环境SQL终端使用入门实践(增删改查篇)

适用环境:麒麟 V10 + 金仓数据库 KingbaseES V8

目标:通过 ksql 终端完成数据库的增、删、改、查基本操作

前言

很多初次接触金仓数据库的朋友,在麒麟操作系统上常常卡在"怎么连接""怎么执行SQL"这些基础步骤上。本文基于真实项目中的操作记录,整理了一套完整的入门实践,从防火墙放行 、用户切换 ,到连接数据库 ,再到增删改查,逐一手把手演示。所有命令均已在实际环境中验证,放心跟着做即可。

1. 环境准备(防火墙 & 用户)

1.1. 放行数据库端口

金仓数据库默认端口为 54321,如果服务器开启了防火墙,需要先放行该端口:

bash 复制代码
sudo firewall-cmd --permanent --add-port=54321/tcp
sudo firewall-cmd --reload
sudo firewall-cmd --list-ports   # 确认已生效

1.2. 切换到数据库管理员用户

金仓的 ksql 客户端命令通常只对 kingbase 用户或 root 用户可用,但 推荐切换到 kingbase 用户进行操作:

bash 复制代码
sudo -i          # 切换至 root
su - kingbase    # 再切换至 kingbase 专属用户

⚠️ 注意 :若直接在普通用户下执行 ksql,可能报错 command not found,因为环境变量未加载。

2. 连接数据库(ksql 登录)

2.1. 基本连接语法

bash 复制代码
ksql -h <主机IP> -p <端口> -U <用户名> -d <数据库名>

例如,使用 ahxny 用户连接 ahxny 数据库:

bash 复制代码
ksql -h 10.235.58.128 -p 54321 -U ahxny -d ahxny

2.2. 本地免密登录(已切换至 kingbase 用户)

如果只在本机操作,且当前用户为 kingbase,可以直接简写:

bash 复制代码
ksql -U system -p 54321            # 使用 system 用户
ksql -U ahxny -p 54321             # 使用普通业务用户

若省略 -d,默认连接到与用户名同名的数据库(如 ahxny 默认连接 ahxny 库)。

2.3. 测试连通性

在连接之前,可以用 telnet 测试端口是否可达:

bash 复制代码
telnet 10.235.58.128 54321

3. 数据库与表的基本查看

登录成功后,会进入 ksql 交互界面,提示符为 数据库名=> 或 数据库名=#。

3.1. 查看所有数据库

sql 复制代码
\l

输出示例(节选):

复制代码
              Name               | Owner  | Encoding 
---------------------------------+--------+----------
 ahxny                           | ahxny  | UTF8
 tianyuan_multistation_dazhong   | ahxny  | UTF8
 ...

3.2. 切换数据库

sql 复制代码
\c 数据库名

例如:

sql 复制代码
\c tianyuan_multistation_dazhong

3.3. 查看当前数据库的所有表

sql 复制代码
\dt

3.4. 查看表结构

sql 复制代码
\d 表名

例如:

sql 复制代码
\d sys_estimateelectricity

4. 增删改查(CRUD)实战

接下来,我们以 forecast_pvarray 表为例,演示完整的增删改查操作。

4.1. 查询(SELECT)

  • 查询全部数据:
sql 复制代码
SELECT * FROM forecast_pvarray;
  • 条件查询:
sql 复制代码
SELECT id, pdc0, pvsys FROM forecast_pvarray WHERE pvsys = 2;
  • 统计行数:
sql 复制代码
SELECT COUNT(*) FROM forecast_pvarray;

4.2. 插入(INSERT)

日志未直接给出插入示例,但这里补充标准语法

sql 复制代码
INSERT INTO forecast_pvarray (id, creatorid, createtime, deleted, pdc0, gamma_pdc, temp_ref, surface_tilt, surface_azimuth, pvsys, enterpriseid)
VALUES ('4', 'Amin', now(), 'f', 60000, -0.0034, 25.0, 2.06, 180.0, 3, '32a6060f');

💡 提示:now() 函数获取当前时间戳。

4.3. 更新(UPDATE)

根据日志,我们将所有记录的 enterpriseid 更新为指定的企业ID:

sql 复制代码
UPDATE forecast_pvarray 
SET enterpriseid = '32a6060f';

也可以带条件更新:

sql 复制代码
UPDATE forecast_pvarray 
SET pdc0 = 50000 
WHERE id = '1';

更新后再次查询验证:

sql 复制代码
SELECT * FROM forecast_pvarray;

4.4. 删除(DELETE)

删除表中所有数据(谨慎操作):

sql 复制代码
DELETE FROM sys_weathergrid24hours;

删除后立即查看行数,确认已清空:

sql 复制代码
SELECT COUNT(*) FROM sys_weathergrid24hours;   -- 返回 0

若只删除部分数据,加上 WHERE 条件:

sql 复制代码
DELETE FROM forecast_pvarray WHERE pvsys = 3;

5. 提交事务(COMMIT)

金仓默认是自动提交模式(每条SQL执行后自动提交),但如果显式开启了事务,需要手动提交。

若出现 WARNING: there is no transaction in progress,则表示当前没有事务,无需提交。

sql 复制代码
COMMIT;

6. 常见错误与避坑指南

错误1:ksql: command not found

原因 :未切换到 kingbase 用户,或环境变量未设置。

解决 :执行 su - kingbase 切换到金仓专用用户。

错误2:在 ksql 提示符下又输入 ksql ...

示例:

复制代码
ahxny=> ksql -U tianyuan -p 54321

原因 :已经把 ksql 当成了 SQL 语句执行。

解决 :ksql 是外部命令 ,只能在操作系统 shell 中执行;进入 ksql 交互界面后,只能输入 SQL 或元命令(以 \ 开头)。

错误3:表名或字段名大小写问题

金仓(基于 PostgreSQL)默认对未加双引号的对象名会转为小写。若建表时使用了双引号保留了大写,则查询时也必须加双引号。建议统一使用小写命名。

7. 扩展小技巧

7.1. 查看当前连接信息

sql 复制代码
\conninfo

7.2. 修改用户密码(管理员操作)

sql 复制代码
ALTER USER ahxny ENCRYPTED PASSWORD '新密码';

7.3. 创建数据库(管理员操作)

sql 复制代码
CREATE DATABASE tianyuan_base_dazhong;

7.4. 给表添加注释(便于维护)

sql 复制代码
COMMENT ON COLUMN forecast_pvarray.enterpriseid IS '企业Id';

8. 总结

通过本文,您已经掌握了在麒麟环境下使用金仓数据库 ksql 终端进行基本操作的完整流程:

  • ✅ 防火墙配置与用户切换
  • ✅ 多种方式的连接登录
  • ✅ 查看数据库、表结构
  • ✅ SELECT、INSERT、UPDATE、DELETE 增删改查
  • ✅ 常见错误处理

金仓数据库的 ksql 与 PostgreSQL 的 psql 高度相似,熟悉之后可以平滑迁移。建议将常用命令整理成笔记,多加练习,就能快速上手。

祝您使用顺利!如有疑问,欢迎留言交流。

相关推荐
非优秀程序员2 小时前
第02章 杭电的英语老师与一台服务器|《互联网产品恩仇录》
数据库·node.js·代码规范
SelectDB7 小时前
SelectDB 是哪个公司的?是国产数据库吗?一篇讲清飞轮科技与 Apache Doris 的关系
数据库
这个DBA有点耶7 小时前
库内计算推理:一条SQL背后的算子融合,和外挂方案差了几次网络往返
数据库·人工智能·sql
这个DBA有点耶9 小时前
函数索引的“完全一致”有多苛刻:写法、字符集、类型,差一处就失效
数据库·mysql·代码规范
星恒随风9 小时前
MySQL 从零入门(三):表的约束详解
linux·服务器·数据库·笔记·mysql
Alluxio10 小时前
Alluxio + OCI:为 AI 工作负载实现亚毫秒访问延迟与可扩展吞吐
运维·数据库·人工智能·分布式·缓存·ai·语言模型
数据库急诊室_阿哲14 小时前
一次加索引建议的复核记录:从报告到签字
数据库·ai数据库
青瓦梦滋15 小时前
Redis主从复制
服务器·数据库·redis·缓存·bootstrap
慧都小妮子15 小时前
Wyn商业智能国产数据库适配:数据接入、分析缓存与审计日志验证清单
数据库·数据分析·数据可视化·审计日志·商业智能
Joy T16 小时前
Redis Lua 原子限流:Lua 脚本、竞态条件与并发控制
数据库·redis·lua·限流·竞态条件·redis scripting