[数据库] 一步到位掌握 KingbaseES—Oracle 兼容数据库的在线实操教程【实战】

94 0
Honkers 2025-9-9 15:17:00 | 显示全部楼层 |阅读模式

KingbaseES 在线体验平台:零门槛学习 Oracle 兼容数据库的全基础功能实践指南

KingbaseES 是一款兼容 Oracle 的关系型数据库,提供功能完备的在线体验平台,让用户无需安装即可立即上手。本文带你从基础操作开始,逐步覆盖模式管理、表与分区、索引、查询、视图、函数到触发器等核心功能,适合数据库初学者与 Oracle 使用者轻松过渡。

什么是 KingbaseES 在线体验平台?

KingbaseES 在线体验平台是中国国产关系型数据库 KingbaseES 提供的一种云端免费试用环境,用户无需安装、配置数据库,即可通过网页或平台控制台快速上手,全面体验其各项功能。以下是该平台的核心特点:


✅ 1. 即开即用,零门槛体验

  • 免安装:无需自行下载安装包或进行配置,所有必要的实例、数据库引擎已部署在云端。
  • 一键启动:通过控制台界面即可启动或重启实例,适合快速试验 SQL 语法、功能开发、性能调优等场景。

🔄 2. 完整的 Oracle 兼容环境

  • 支持超过 97% 的 Oracle 语法,平台内建 Oracle 模式确保 SQL、函数、PL/SQL 脚本可无缝运行。
  • 对于熟悉 Oracle 的用户而言,几乎无需改写代码即可快速迁移与验证兼容性([marketplace.huaweicloud.com][1], [hop.apache.org][2])。

KingbaseES 在线体验平台为用户提供了一个“零门槛、有 Oracle 相似度的数据库实验环境”。无需安装,即可体验核心功能、验证兼容性、操作关系模型、调优实践、脚本开发等,非常适合:

  • 想快速试用 KingbaseES 的新用户;
  • 需要验证 Oracle—KingbaseES 迁移兼容的场景;
  • 学习关系型数据库设计、调优与管理的初学者。

🚀 一、准备工作:启动平台 & 查看环境

  1. 登录体验平台

访问 KingbaseES 在线体验平台,输入账号密码后进入控制台,无需本地安装,一键体验。

  1. 检查数据库版本与服务状态
show database_mode

确保服务正常、版本兼容 Oracle,即可开始练习。


二、模式(Schema)管理:逻辑组织与权限隔离

为什么用模式?

  • 避免命名冲突:多个 schema 中可使用相同对象名。
  • 权限隔离:基于模式赋予用户不同访问权限,提升安全性。

常用操作

✔️ 创建模式
CREATE SCHEMA kes01; CREATE SCHEMA db02;

✔️ 查看当前模式列表
SELECT * FROM sys_namespace;

✔️ 使用模式
CREATE TABLE kes01.db_info ( id INT, name VARCHAR(20) ); INSERT INTO kes01.db_info VALUES (1, 'kingbase'); SELECT * FROM kes01.db_info;


✔️ 修改模式名称
ALTER SCHEMA db01 RENAME TO db02; SELECT * FROM sys_namespace WHERE nspname = 'db02';

✔️ 删除模式
DROP SCHEMA db02 CASCADE;

三、表与分区:实体建模与性能优化

🛠 创建关系表

CREATE TABLE customers ( C_ID INT AUTO_INCREMENT PRIMARY KEY, C_NAME VARCHAR(50) NOT NULL, C_ADDRESS TEXT NOT NULL, C_PHONE VARCHAR(15) NOT NULL );

👉 分区表示例:商品表(items)

CREATE TABLE items ( I_ID INT PRIMARY KEY, I_NAME VARCHAR(100) NOT NULL, I_PRICE DECIMAL(10,2) NOT NULL, I_STOCK INT NOT NULL ) PARTITION BY RANGE (I_PRICE) ( PARTITION p_low VALUES LESS THAN (200), PARTITION p_medium VALUES LESS THAN (500), PARTITION p_high VALUES LESS THAN (1000), PARTITION p_high_price VALUES LESS THAN (MAXVALUE) );

📦 订单表及外键关联

CREATE TABLE orders ( O_ID INT, O_DATE DATE NOT NULL, C_ID INT NOT NULL, I_ID INT NOT NULL, O_QUANTITY INT NOT NULL, O_TOTAL_PRICE DECIMAL(10,2) NOT NULL, FOREIGN KEY (C_ID) REFERENCES customers(C_ID), FOREIGN KEY (I_ID) REFERENCES items(I_ID) );

🔧 修改表结构

ALTER TABLE orders ADD CONSTRAINT pk_orders PRIMARY KEY (O_ID); ALTER TABLE orders ADD COLUMN comment VARCHAR(20);

提示:

  • 使用 AUTO_INCREMENT 或 序列 实现自增主键;
  • 分区表适用于大数据量、性能优化场景。

四、示例数据:插入 & 查看

插入业务测试数据

  • customers
  • items
  • orders
INSERT INTO customers (...) VALUES (...); -- 10 条示例 INSERT INTO items (...) VALUES (...); INSERT INTO orders (...) VALUES (...);

查看数据

SELECT * FROM customers; SELECT * FROM items; SELECT * FROM orders;


五、索引:查询性能提升器

常用索引操作

✔️ 创建索引
CREATE INDEX idx_c_name ON customers (C_NAME); CREATE INDEX idx_i_price ON items (I_PRICE) LOCAL; CREATE INDEX idx_o_i_d ON orders (O_ID, O_DATE); CREATE UNIQUE INDEX o_u_id ON orders (O_ID);

📊 查看索引
SELECT * FROM sys_indexes WHERE schemaname = 'public';

🛠 修改索引
ALTER INDEX o_u_id RENAME TO indx_rename_u_id; ALTER INDEX indx_rename_u_id SET (fillfactor = 60);

🔄 重建索引
REINDEX INDEX idx_c_name; REINDEX TABLE orders;

❌ 删除索引
DROP INDEX indx_rename_u_id;

六、查询:SELECT、GROUP BY、JOIN、子查询、WITH

-- 简单查询 SELECT * FROM orders; -- 聚合与分组 SELECT I_NAME, I_STOCK FROM items GROUP BY I_NAME, I_STOCK; -- JOIN 查询 SELECT c.C_NAME, COUNT(o.O_ID) AS order_count FROM customers c JOIN orders o ON c.C_ID = o.C_ID GROUP BY c.C_NAME; -- 子查询 SELECT * FROM orders WHERE O_TOTAL_PRICE > ( SELECT AVG(O_TOTAL_PRICE) FROM orders ); -- WITH 子句(临时视图) WITH customer_total_amount AS ( SELECT c.C_NAME, SUM(o.O_TOTAL_PRICE) AS total_amount FROM customers c JOIN orders o ON c.C_ID = o.C_ID GROUP BY c.C_NAME ) SELECT * FROM customer_total_amount ORDER BY total_amount DESC LIMIT 5;



七、视图:逻辑封装与重复查询重用

创建示例视图

CREATE OR REPLACE VIEW sales_summary AS SELECT DATE(o.O_DATE) AS order_date, COUNT(o.O_ID) AS order_count, SUM(o.O_TOTAL_PRICE) AS total_sales FROM orders o GROUP BY DATE(o.O_DATE); CREATE OR REPLACE VIEW low_stock_items AS SELECT i.I_ID, i.I_NAME, i.I_STOCK FROM items i WHERE i.I_STOCK < 60; CREATE OR REPLACE VIEW customer_purchase_history AS SELECT c.C_NAME, o.O_DATE, i.I_NAME, o.O_QUANTITY, o.O_TOTAL_PRICE FROM customers c JOIN orders o ON c.C_ID = o.C_ID JOIN items i ON o.I_ID = i.I_ID;

查询与查看

SELECT * FROM sales_summary WHERE order_date = '2023-10-01'; SELECT * FROM low_stock_items; SELECT * FROM customer_purchase_history WHERE C_NAME = 'Alice Smith'; SELECT * FROM sys_views WHERE schemaname = 'public';

删除视图

DROP VIEW customer_purchase_history;

八、函数:封装逻辑与复用

CREATE OR REPLACE FUNCTION calculate_discount_amount(_o_id INT) RETURNS DECIMAL(8,2) AS $$ DECLARE total_price DECIMAL(8,2); BEGIN SELECT O_TOTAL_PRICE INTO total_price FROM orders WHERE O_ID = _o_id; RETURN total_price * 0.10; END$$ LANGUAGE plpgsql; SELECT O_TOTAL_PRICE FROM orders WHERE O_ID = 1; SELECT calculate_discount_amount(1) AS discount_amount;

九、触发器:自动化 & 数据完整性

示例:订单插入后自动扣库存

CREATE TRIGGER update_stock_AFTER_INSERT AFTER INSERT ON orders FOR EACH ROW BEGIN UPDATE items SET I_STOCK = I_STOCK - NEW.O_QUANTITY WHERE I_ID = NEW.I_ID; END; -- 测试触发器 INSERT INTO orders VALUES (11, '2023-11-01', 1, 1, 1, 200); SELECT * FROM items WHERE I_ID = 1; -- 库存应减:49

删除触发器

DROP TRIGGER update_stock_AFTER_INSERT;

✅ 结语:搭好“全栈”数据库技能体系

从模式、表、分区、索引、查询到视图、函数、触发器,本文展示了 KingbaseES 在 Oracle 兼容路径上的核心能力。借助其在线体验平台,你可以:

  • 零门槛练习 SQL 基础语法与高级功能;
  • 熟悉分区与索引等性能优化;
  • 掌握视图、函数与触发器的架构设计;
  • 为 Oracle 用户提供无缝迁移体验。

欢迎体验平台,逐步实战上述示例,构建自己的数据库项目! 🎉

🎯 总结

KingbaseES 在线体验平台为用户提供了一个“零门槛、有 Oracle 相似度的数据库实验环境”。无需安装,即可体验核心功能、验证兼容性、操作关系模型、调优实践、脚本开发等,非常适合:

想快速试用 KingbaseES 的新用户;

需要验证 Oracle—KingbaseES 迁移兼容的场景;

学习关系型数据库设计、调优与管理的初学者。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

中国红客联盟公众号

联系站长QQ:5520533

admin@chnhonker.com
Copyright © 2001-2025 Discuz Team. Powered by Discuz! X3.5 ( 粤ICP备13060014号 )|天天打卡 本站已运行