金仓数据库麒麟环境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 高度相似,熟悉之后可以平滑迁移。建议将常用命令整理成笔记,多加练习,就能快速上手。

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

相关推荐
m0_715674431 小时前
2026年医疗行业数据库风险监测产品综合能力排名分析
网络·数据库
渣渣灰飞2 小时前
MySQL 系统学习 第四阶段:MySQL 高级 第一节:索引(Index)
数据库·学习·mysql
山峰哥2 小时前
数据库工程与SQL优化实战指南‌
数据库·sql·oracle·深度优先·宽度优先
Quincy_Freak3 小时前
Python 轻量化数据存储实践:国产化环境下SQLite高效管理方案
数据库·sqlite·数据库管理·大数据分析·sqlitego
SelectDB技术团队4 小时前
Agent 场景动态 JSON 性能拆解:Apache Doris 比 ClickHouse 快 7 倍、比 Elasticsearch 快 2 倍
数据库·clickhouse·elasticsearch·json·apache·日志分析·apache doris
greasyfork4 小时前
多种数据库管理混乱?Navicat Premium 17 for Mac 统一解决
数据库·mysql·macos·mac
Dream_fly_iboy4 小时前
系统架构设计师之数据库
数据库
风和先行4 小时前
Android 数据库相关学习总结
android·数据库·学习
宠友信息5 小时前
Spring Boot与异步审核构建仿小红书源码内容发布全流程
java·数据库·spring boot·redis·mysql·oracle·uni-app