> 技术文档 > Oracle 用户必看:3 小时上手 KingbaseES 实战教程

Oracle 用户必看:3 小时上手 KingbaseES 实战教程



Oracle 用户必看:3 小时上手 KingbaseES 实战教程


Oracle 用户必看:3 小时上手 KingbaseES 实战教程

文章目录

    • 一、连接和断开数据库
      • 认识ksql工具
      • 连接数据库步骤
      • 断开数据库连接
    • 二、创建和管理数据库
      • 创建数据库
      • 查看数据库列表
      • 切换数据库
      • 删除数据库
    • 三、创建和管理表空间
      • 表空间的作用
      • 创建表空间
      • 使用表空间
      • 查询表空间
      • 修改和删除表空间
    • 四、创建和管理模式
      • 模式的作用
      • 创建模式
      • 查看模式列表
      • 模式的搜索路径
      • 权限控制
    • 五、创建和管理表
      • 创建表
      • 修改表结构
      • 表数据操作
      • 删除表
    • 六、创建和管理索引
      • 索引的作用
      • 创建索引
      • 查看和维护索引
    • 七、创建和管理视图
      • 视图的特点
      • 创建视图
      • 查询和使用视图
      • 修改和删除视图
    • 八、创建和管理用户
      • 创建用户
      • 修改用户
      • 权限管理
      • 查看和删除用户
    • 九、启动和管理事务
      • 事务的概念
      • 事务控制命令
      • 事务示例
    • 学习资源与实践建议

在如今这个数据驱动的时代,数据库的性能和兼容性对于企业的重要性不言而喻。KingbaseES 作为国产数据库里的“扛把子”之一,和Oracle的兼容性那叫一个强,在政务、金融这些领域用得相当广泛,给企业的数据系统迁移和搭建提供了超靠谱的选择。

接下来,咱就直奔主题,讲讲怎么快速上手这KingbaseES。这教程主要围绕数据库连接、管理,还有核心对象操作这些方面,步骤简单明了,再配上点实例,让你能快速掌握它的基本用法。

一、连接和断开数据库

认识ksql工具

ksql这玩意儿,就是个命令行连接工具,本地连接(也就是在同一台计算机上操作)和远程连接(通过网络访问其他计算机上的数据库)它都支持。说实在的,这工具用起来挺顺手,很多老运维都爱用它,方便快捷,效率高。

连接数据库步骤

  1. 获取服务端口
    KingbaseES默认端口号为54321,不过最好确认一下实际配置:

    • Windows平台:执行findstr /R \"^\\s*port\" C:\\kb_install\\data\\kingbase.conf(记得替换为你的数据文件路径)
    • Linux平台:执行grep ^\\s*port /test/kb_install/data/kingbase.conf(路径根据实际安装位置调整)

    小贴士:如果是默认安装,配置文件通常在安装目录的data文件夹下,但自定义安装时可能会更改路径。

  2. 使用ksql连接

    • 指定端口号连接:ksql -h 10.11.0.11 -p 54321 -d kingbase -U Alice
      (10.11.0.11是服务器IP,54321是端口,kingbase是数据库名,Alice是用户名;本地连接可省略-h参数)
    • 默认端口连接:ksql -h localhost -d kingbase -U Alice

断开数据库连接

想断开连接的时候,也简单,在ksql里输入\\q或者QUIT,就跟咱关电脑上的软件一样,点个关闭按钮就完事,轻松搞定。

二、创建和管理数据库

创建数据库

有两种常用方式,根据你的习惯选择:

  1. SQL语句创建:CREATE DATABASE temp_db;(可以加参数指定字符集、所有者等,例如CREATE DATABASE temp_db WITH ENCODING \'UTF8\' OWNER test;
  2. 命令行工具:createdb temp_db(需要在操作系统命令行执行,不是ksql里面)

注意:创建数据库的用户需要有CREATEDB权限,普通用户默认没有这个权限。

查看数据库列表

  • 执行SQL:SELECT datname FROM sys_database;(sys_database是系统表,存储数据库信息)
  • ksql快捷命令:\\l(这个命令在ksql里非常实用,能直观看到所有数据库)

Oracle 用户必看:3 小时上手 KingbaseES 实战教程

切换数据库

连接后用\\c命令切换,例如\\c test就切换到test数据库了,和Oracle的conn命令类似。

删除数据库

  • SQL语句:DROP DATABASE IF EXISTS temp_db;(加IF EXISTS可以避免数据库不存在时报错)
  • 命令行工具:dropdb temp_db

警告:删除数据库会永久删除所有数据,操作前一定要确认!

三、创建和管理表空间

表空间的作用

表空间这东西,就像是数据库里的“储物间”,你可以指定数据库对象存储在哪个“储物间”里。比如说,把经常要用的数据放在“靠近门口”(快速存储介质)的“储物间”,能大大提升数据库读写性能。不过得注意,这创建表空间的事儿,一般只有超级用户才有这权限,就像公司里只有大领导才有资格分配重要资源一样。

创建表空间

一般只有超级用户能创建表空间,语法如下:
CREATE TABLESPACE tablespace_name LOCATION \'directory\';
例如:CREATE TABLESPACE dbspace LOCATION \'/data/dbs\';

关键注意点:

  1. 目录路径必须是绝对路径
  2. 目录必须提前创建好
  3. KingbaseES操作系统用户(通常是kingbase)要有该目录的读写权限

使用表空间

创建对象时指定表空间:

  • 直接指定:CREATE TABLE t1(i int) TABLESPACE dbspace;
  • 设置默认表空间:SET default_tablespace = \'dbspace\'; CREATE TABLE t2(i int);(这样后续创建的表默认都用这个表空间)

查询表空间

  • SQL查询:SELECT spcname FROM sys_tablespace;
  • ksql命令:\\db(能看到表空间名称、位置和大小)
    Oracle 用户必看:3 小时上手 KingbaseES 实战教程

修改和删除表空间

  • 重命名:ALTER TABLESPACE dbspace RENAME TO newdbspace;
  • 删除:DROP TABLESPACE newdbspace;(删除前必须确保表空间里没有任何对象,否则会失败)

四、创建和管理模式

模式的作用

模式这玩意儿,就像是数据库里的“分类文件夹”,把表、视图、函数这些数据库对象都组织管理起来。它最大的好处就是能避免命名冲突,比如说不同部门的表可能名字一样,放在不同模式里就不会乱套了。而且在权限管理上也特别方便,不同模式可以设置不同的访问权限,安全又高效。

创建模式

语法:CREATE SCHEMA [schema_name] AUTHORIZATION owner;
例如:

  • 创建自己的模式:CREATE SCHEMA myschema;(默认所有者是当前用户)
  • 给其他用户创建模式:CREATE SCHEMA myschema AUTHORIZATION test;(指定test为所有者)

注意:模式名不能以SYS_开头,这是系统模式的保留前缀。

查看模式列表

  • SQL查询:SELECT nspname FROM sys_namespace;
  • ksql命令:\\dn
    Oracle 用户必看:3 小时上手 KingbaseES 实战教程

模式的搜索路径

搜索路径决定了系统查找对象的顺序,就像操作系统的PATH环境变量。

  • 查看当前路径:SHOW SEARCH_PATH;(默认通常是\"$user\", public)
  • 设置路径:SET SEARCH_PATH TO myschema, public;(先搜索myschema,再搜索public)

实用技巧:如果经常使用某个模式,可以把它加入搜索路径,这样查询表时就不用写schema.表名了。

权限控制

默认情况下,用户只能访问自己的模式。要访问别人的模式,需要授权:
GRANT USAGE ON SCHEMA myschema TO u1;(授予u1访问myschema的权限)
建议收回普通用户在public模式的创建权限,避免混乱:
REVOKE CREATE ON SCHEMA public FROM PUBLIC;

五、创建和管理表

创建表

基本语法:CREATE TABLE table_name (column_name data_type, ..., constraints);
例如创建订单表:

CREATE TABLE orders( order_id INT PRIMARY KEY, customer_name VARCHAR(50) NOT NULL, employee_id INT, order_date DATE DEFAULT CURRENT_DATE, total_amount NUMERIC(10,2) CHECK (total_amount >= 0));

(这里加了主键约束、非空约束、默认值和检查约束,实际使用时根据业务需求设计)

修改表结构

ALTER TABLE语句,常见操作:

  • 重命名表:ALTER TABLE orders RENAME TO orders_new;
  • 添加列:ALTER TABLE orders ADD COLUMN status VARCHAR(20);
  • 修改列类型:ALTER TABLE orders ALTER COLUMN customer_name TYPE VARCHAR(100);

表数据操作

  • 插入数据:INSERT INTO orders VALUES(101, \'RDJC\', 1, \'1999-03-20\', 1500.00);(可以只插部分字段,需指定列名)
  • 更新数据:UPDATE orders SET employee_id = 3 WHERE order_id = 104;(千万别忘了WHERE条件,否则会更新所有行!)
  • 删除数据:DELETE FROM orders WHERE order_id = 103;(同样注意WHERE条件)
  • 查询数据:SELECT * FROM orders WHERE order_date > \'1999-01-01\';(可以加各种条件过滤)
    Oracle 用户必看:3 小时上手 KingbaseES 实战教程

删除表

DROP TABLE orders_new;(删除表会同时删除表上的索引和约束,谨慎操作!)

六、创建和管理索引

索引的作用

索引能加快查询速度,但会减慢插入、更新和删除操作,就像书的目录,查起来快,但增减内容时目录也要跟着更新。所以要合理创建索引,不是越多越好。

创建索引

常见索引类型:

  • 普通索引:CREATE INDEX idx_employee ON orders(employee_id);(加速按employee_id查询)
  • 组合索引:CREATE INDEX idx_orders ON orders(order_id, order_date);(适合多字段查询)
  • 唯一索引:CREATE UNIQUE INDEX uid_order ON orders(order_id);(确保字段值唯一,和主键约束类似但可以为NULL)

经验之谈:在经常作为查询条件、连接条件或排序的字段上创建索引效果最好。

查看和维护索引

  • 查看索引:\\di(ksql命令)或SELECT * FROM sys_indexes WHERE indrelid = \'orders\'::regclass;
  • 重建索引:REINDEX INDEX idx_employee;(索引使用久了可能会碎片化,重建能提升性能)
  • 删除索引:DROP INDEX idx_employeeid;

七、创建和管理视图

视图的特点

视图是虚拟表,不存实际数据,只保存查询语句。适合把复杂查询封装起来,或者给不同用户展示不同的数据子集。

创建视图

语法:CREATE [OR REPLACE] VIEW view_name AS query;
例如:CREATE OR REPLACE VIEW orders_info AS SELECT order_id, customer_name, order_date FROM orders WHERE total_amount > 1000;

好处:用OR REPLACE可以直接更新视图定义,不用先删除再创建。

查询和使用视图

  • 查询视图:SELECT * FROM orders_info;(和查普通表一样)
  • 查看视图定义:\\sv orders_info(ksql命令)或SELECT definition FROM sys_views WHERE viewname = \'orders_info\';

修改和删除视图

  • 重命名:ALTER VIEW orders_info RENAME TO orders_high_value;
  • 删除:DROP VIEW orders_info;

八、创建和管理用户

创建用户

  • SQL语句:CREATE USER test WITH PASSWORD \'123456\';(超级用户或有CREATEROLE权限的用户才能创建)
  • 命令行工具:createuser rdjc(在操作系统命令行执行)

安全提示:密码最好包含大小写字母、数字和特殊符号,避免简单密码。

修改用户

  • 修改密码:ALTER USER test PASSWORD \'654321\';
  • 限制连接数:ALTER USER test CONNECTION LIMIT 10;(防止单个用户占满连接)
  • 授予权限:ALTER USER test CREATEDB;(允许用户创建数据库)

权限管理

  • 授权:GRANT SELECT, INSERT ON orders TO test;(授予test用户对orders表的查询和插入权限)
  • 撤权:REVOKE INSERT ON orders FROM test;

查看和删除用户

  • 查看用户:\\du(ksql命令)或SELECT usename FROM sys_user;
  • 删除用户:DROP USER test;(如果用户有对象,需要先删除对象或用CASCADE选项)

九、启动和管理事务

事务的概念

事务是一组SQL语句的执行单元,要么全成功,要么全失败。比如转账操作,扣钱和加钱必须同时成功,否则就回滚。

事务控制命令

  • 开始事务:BEGIN;START TRANSACTION;
  • 提交事务:COMMIT;(所有操作生效)
  • 回滚事务:ROLLBACK;(取消所有操作,回到事务开始前状态)

事务示例

BEGIN;INSERT INTO orders VALUES(107, \'RDJC\', 5, \'1999-03-20\', 2000.00);-- 如果上面的插入成功,继续执行下面的更新UPDATE inventory SET stock = stock - 1 WHERE product_id = 1001;-- 确认没问题后提交COMMIT;-- 如果中间出错,执行ROLLBACK;

重要:KingbaseES默认是自动提交模式,每条SQL执行后自动COMMIT。用BEGIN显式开启事务后,需要手动COMMIT或ROLLBACK。

学习资源与实践建议

通过本教程,你已经掌握了KingbaseES的基本操作。但数据库技术博大精深,建议结合实际场景深入学习:

  1. 官方文档:《KingbaseES数据库管理员指南》和《KingbaseES数据库概念》是权威资料,详细讲解了底层原理和高级功能。

  2. 实践建议

    • 在测试环境多动手操作,比如创建复杂表结构、模拟并发事务
    • 遇到问题时查看数据库日志(通常在data目录的log文件夹)
    • 关注金仓官方技术社区,里面有很多实际案例和解决方案
  3. 进阶方向:性能优化、高可用部署、数据迁移工具使用等,这些都是企业应用中的关键技能。

数据库管理需要理论和实践结合,刚开始可能会遇到各种问题,但只要多操作、多总结,很快就能熟练掌握KingbaseES的使用。祝你在数据库学习之路上越走越远!