KingbaseES 在线平台深度实测:从电商业务模拟到数据库全流程掌控_电商 模拟数据库
目录
一、KingbaseES的注册
1、快速注册入口与账号创建
2、 登录平台
3、在线体验该服务
4、选择自己擅长的语言,点击开始体验
二、KingbaseES的体验
1、检查数据库版本及服务状态
2、模式的创建和管理
3、表
4、索引
5、查询
6、视图
7、函数
8、触发器
三、用我们工作中经常使用的例子来测试
2、模式内操作:隔离业务数据
3、模式修改与删除
四、最后总结一下这次体验
一、KingbaseES的注册
1、快速注册入口与账号创建
打开测试入口https://bbs.kingbase.com.cn/index
,点击 “注册” 按钮后,需填写邮箱、设置密码并完成人机验证。注册流程简洁,整个过程耗时不超过 1 分钟,平台支持邮箱激活验证,安全性设计较为完善。注册成功后系统自动跳转至登录页面,输入账号密码即可进入平台首页。
直接用手机号进行注册就行了
2、 登录平台
3、在线体验该服务
登录后首页清晰展示 “在线体验” 模块,点击进入数据库体验环境。平台界面采用典型的数据库管理工具布局,左侧为对象资源管理器,右侧为 SQL 编辑区,顶部工具栏提供执行、保存脚本等功能,整体交互逻辑符合数据库开发者使用习惯。首次使用时,平台会弹出引导提示,建议新手先查看 “快速入门” 文档。
4、选择自己擅长的语言,点击开始体验
二、KingbaseES的体验
这部分先测试官方示例:官方用例可以更好的感受和使用KingbaseES平台提供给我们的一个服务。让我们先通过他们给的体验平台进行体验。
1、检查数据库版本及服务状态
在体验数据库功能前,请先查看当前数据库兼容模式。
查看当前数据库兼容模式,使用如下语句:
show database_mode
数据库模式与选择的模式一致,可继续下一步操作。否则请重新刷新页面,或与管理员联系。
2、模式的创建和管理
模式又被称为schema,它是用于组织和命名数据库对象(如表、视图、函数等)的逻辑容器。模式是数据库中组织和管理数据库对象的重要机制,它提供了一种逻辑上的命名空间,具备如下优点: 可以避免命名冲突,允许在同一数据库中的不同模式下创建同名对象。 便于权限管理和隔离,每个模式分配不同的访问权限,以此控制用户或角色对特定模式中对象的访问权限,提高数据库的安全性。
下面将介绍模式常见的使用方式:
创建模式
CREATE SCHEMA 用于在当前数据库中创建模式,创建模式时指定的模式名必须与当前数据库中任何现有模式的名称不同。
示例: 创建两个数据库模式kes01,db02。
create schema kes01;create schema db01;
查看模式列表
可以通过查看sys_namespace视图查看当前数据库的模式信息。
select * from sys_namespace where nspname in (\'kes01\',\'db01\');
使用模式
若要在指定模式下创建对象或者访问指定模式下的对象,需要使用模式名限定的对象名。该名称包含模式名以及对象名,他们之间用 . 号分开。
示例:
在kes01下创建db_info表。
create table kes01.db_info(id int,name varchar(20) );
向表中插入数据。
insert into kes01.db_info values (\'01\',\'kingbase\');
查询表中数据。
select * from kes01.db_info;
更改模式
kingbaseES支持使用 alter schema 语句可以更改模式的相关属性。
示例:
将schema db01重新命名为db02。
alter schema db01 rename to db02;
查询新模式信息
select * from sys_namespace where nspname=\'db02\';
删除模式
kingbaseES支持使用 drop schema 命令进行删除。
drop schema db02 cascade ;drop schema kes01 cascade ;
3、表
表是KingbaseES数据库中最基本的操作对象。一个表描述了一个实体对象,它记录了实体对象的重要信息。KingbaseES数据库表对象类型是关系表,关系表由简单的列组成,是最常见的表类型。
表的管理包括创建表、修改表和删除表等操作,以及普通表、分区表等的管理。
创建表
创建表customers客户表
我之前创建过了,所以提示已经有了
创建分区表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));
创建orders订单表表
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语句,给订单表添加一个主键。
ALTER TABLE orders ADD CONSTRAINT pk_orders PRIMARY KEY(O_ID);
使用ALTER TABLE语句,给订单表添加一个列comment列。
alter table orders add column comment varchar(20);
插入示例数据
使用INSERT 命令用于向表中插入数据。
示例
向customers表中插入数据。
INSERT INTO customers (C_NAME, C_ADDRESS, C_PHONE) VALUES(\'Alice Smith\', \'123 Main St, City A\', \'123-456-7890\'),(\'Bob Johnson\', \'456 Oak Ave, City B\', \'234-567-8901\'),(\'Charlie Brown\', \'789 Pine Rd, City C\', \'345-678-9012\'),(\'Diana White\', \'321 Elm St, City D\', \'456-789-0123\'),(\'Edward Green\', \'654 Birch Dr, City E\', \'567-890-1234\'),(\'Frances Hill\', \'987 Maple Ln, City F\', \'678-901-2345\'),(\'George Wright\', \'432 Cedar Rd, City G\', \'789-012-3456\'),(\'Helen King\', \'135 Willow St, City H\', \'890-123-4567\'),(\'Ian Miller\', \'246 Oak Dr, City I\', \'901-234-5678\'),(\'Judy Davis\', \'368 Pine Ave, City J\', \'012-345-6789\');
向items表中插入数据。
INSERT INTO items (I_ID, I_NAME, I_PRICE, I_STOCK) VALUES(\'1\',\'Laptop\', 1299.99, 50),(\'2\',\'Phone\', 699.99, 75),(\'3\',\'Tablet\', 299.99, 30),(\'4\',\'Monitor\', 199.99, 100),(\'5\',\'Keyboard\', 79.99, 80),(\'6\',\'Mouse\', 49.99, 100),(\'7\',\'Speaker\', 129.99, 40),(\'8\',\'Headphones\', 159.99, 60),(\'9\',\'Printer\', 239.99, 30),(\'10\',\'Scanner\', 179.99, 40);
向custimers表中插入数据。
INSERT INTO orders (O_ID, O_DATE, C_ID, I_ID, O_QUANTITY, O_TOTAL_PRICE) VALUES(\'1\',\'2023-10-01\', 1, 1, 2, 2599.98), (\'2\',\'2023-10-02\', 2, 2, 1, 699.99), (\'3\',\'2023-10-03\', 3, 3, 3, 899.97), (\'4\',\'2023-10-04\', 4, 4, 5, 999.95), (\'5\',\'2023-10-05\', 5, 5, 4, 319.96), (\'6\',\'2023-10-06\', 6, 6, 2, 99.98), (\'7\',\'2023-10-07\', 7, 7, 1, 129.99), (\'8\',\'2023-10-08\', 8, 8, 3, 479.97), (\'9\',\'2023-10-09\', 9, 9, 1, 239.99), (\'10\',\'2023-10-10\', 10, 10, 5, 899.95);
查看示例数据
查看customers客户表信息
select * from customers;
查看items商品表信息
select * from items;
查看orders订单表信息
select * from orders;
4、索引
确认表是否存在
先执行查询表的语句,检查 customers
表实际情况,比如在 Kingbase 中可用:
SELECT * FROM information_schema.tables WHERE table_name = \'customers\';
若查询无结果,说明表确实不存在,需先创建 customers
表(若业务需要该表)。
创建 customers
表(假设表结构符合示例需求)
比如简单创建含 c_name
字段的表:
CREATE TABLE customers ( c_name VARCHAR(255) -- 字段类型等可根据实际业务调整);
执行上述建表语句成功后,再重新运行创建索引的语句 create index indx_c_name on customers(c_name);
,一般就能正常创建索引。
索引是一种与表相关联的数据结构,是为了提高数据检索的性能而建立的。KingbaseES索引为表数据提供快速存取路径。索引适用于一范围的行查询或指定行的查询。索引可建立在一个表的一列或多列上,一旦建立,将由 KingbaseES 数据库自动维护和使用,对用户是完全透明的,系统的优化器会根据统计信息确定是否使用索引来提高系统性能。索引逻辑和物理上都独立于与其相关联的表数据。因此,可以删除或创建索引,但不会对索引表产生影响。
创建索引
kingbaseES使用 create index 语句来创建普通b-tree索引。
示例
在customers表的c_name列上创建索引。
create index indx_c_name on customers(c_name);
查看索引
通过使用select语句查询sys_indexes视图查看相关索引索引。
示例
5、查询
查询是从一个或多个表或视图中检索数据的操作。顶级SELECT语句称为查询,嵌套在另一个SQL语句中的查询称为子查询。本节描述一些查询与子查询类型以及如何使用它们。
SELECT 命令的一般语法是:
[WITH with_queries] SELECT select_list FROM table_expression [sort_specification]
6、视图
视图是一个或多个表的逻辑表示形式。与表不同,视图既不分配存储空间,也不包含数据,而是通过定义的一个查询,从它所引用的基表中提取或派生出数据。视图的数据来自它所依赖基表,基表可以是表或其他视图。在视图上执行的所有操作实际上都指向基表。
视图创建
通过create view命令来进行创建视图,示例如下
- 销售统计视图
功能:按日期汇总订单金额和数量。
CREATE OR REPLACE VIEW sales_summary ASSELECT DATE(o.O_DATE) AS order_date, COUNT(o.O_ID) AS order_count, SUM(o.O_TOTAL_PRICE) AS total_salesFROM orders oGROUP BY DATE(o.O_DATE);
7、函数
SQL函数在KingbaseES数据库中作为内置组件存在,适用于多种SQL语句,需注意区分于由PL/SQL编写的用户自定义函数。
调用这些SQL函数时,若参数类型不符,KingbaseES会自动将其转换为函数所需的数据类型,确保执行无碍。
创建函数
示例
计算订单的折扣金额。
CREATE OR REPLACE FUNCTION calculate_discount_amount(_o_id INT)RETURNS DECIMAL(8,2) AS $$DECLARE total_price DECIMAL(8,2);BEGIN -- 从 orders 表中获取订单的总价 SELECT O_TOTAL_PRICE INTO total_price FROM orders WHERE O_ID = _o_id; -- 假设折扣率为 10% RETURN total_price * 0.10;END$$LANGUAGE plpgsql;
8、触发器
触发器通过在数据操作时自动执行任务,强化了数据完整性和系统的自动化能力。合理设计和使用触发器,可以提升应用的效率、可靠性和安全性,但在开发和维护过程中需综合考虑性能影响和复杂性问题。
下面已一个简单示例来说明。
创建触发器
示例
- 插入触发器
功能:每当插入一条新订单时,触发器会从商品表中减去相应数量的商品库存。
CREATE TRIGGER update_stock_AFTER_INSERT AFTER INSERT ON ordersFOR EACH ROWBEGIN UPDATE items SET I_STOCK = I_STOCK - NEW.O_QUANTITY WHERE I_ID = NEW.I_ID;END;
三、用我们工作中经常使用的例子来测试
进行真实场景模拟测试。
此部分使用的是自己的创建语句,没用官方提供的,测试一下是否可行。
1、体验一下数据库的创建
实际业务中,为区分不同业务线数据,创建电商业务相关模式:
CREATE SCHEMA ecom_order; -- 订单业务模式CREATE SCHEMA ecom_product; -- 商品业务模式
完全可行
执行后,通过查询
sys_namespace
视图验证:
可看到新创建的模式,确保命名无冲突,为后续业务对象划分做好准备 。
2、模式内操作:隔离业务数据
在 ecom_product
模式下创建商品表,模拟电商商品信息存储:
CREATE TABLE ecom_product.product_info ( prod_id INT PRIMARY KEY, prod_name VARCHAR(100) NOT NULL, prod_price DECIMAL(10,2) NOT NULL, prod_stock INT NOT NULL);
插入测试商品数据:
INSERT INTO ecom_product.product_info VALUES (1, \'无线蓝牙耳机\', 199.99, 50), (2, \'智能运动手表\', 399.99, 30);
查询数据验证:
SELECT * FROM ecom_product.product_info;
清晰看到模式隔离下,商品数据独立存储,避免与其他业务数据混淆 。
测试结果可行
3、模式修改与删除
若业务调整,需修改模式名,比如将 ecom_order
改名为 ecom_sales
:
ALTER SCHEMA ecom_order RENAME TO ecom_sales;
查询确认:
SELECT nspname FROM sys_namespace WHERE nspname = \'ecom_sales\';
业务下线后,删除无用模式(需先处理模式内对象,这里假设已清理):
DROP SCHEMA ecom_sales CASCADE;DROP SCHEMA ecom_product CASCADE;
通过实际业务场景操作,体会模式对数据组织和权限管理的作用 。
四、最后总结一下这次体验
总体来说还不错,通过模拟电商业务场景,从模式构建、表设计,到索引优化、视图函数及触发器应用,深度体验 KingbaseES 在线平台。其功能覆盖数据库开发全流程,兼容常用语法,便于开发者上手。作为国产数据库,在数据管理、性能优化等方面表现成熟,适合国产化替代需求,也为技术探索提供了便捷环境。建议数据库从业者、技术爱好者亲身实践,挖掘更多实用功能,助力业务与技术发展 。