KingbaseES聚焦产品上线

KingbaseES聚焦产品上线:金仓数据库在线体验平台上线,开启数据库实践新征程

KingbaseES 在线体验平台是为数据库使用者、开发者、架构师及 DBA 打造的轻量化实践平台,无需本地安装数据库环境,通过浏览器即可快速上手,降低技术探索门槛,加速对金仓数据库功能特性的验证与学习,助力技术预研、选型验证及新手能力提升 。

KingbaseES在线体验平台注册

1、注册KingbaseES官方账户

2、手机号注册即可

3、服务与支持-KingbaseES在线体验平台

4、即可完成在线体验

KingbaseES在线体验平台体验

索引

索引是一种与表相关联的数据结构,是为了提高数据检索的性能而建立的。KingbaseES索引为表数据提供快速存取路径。索引适用于一范围的行查询或指定行的查询。索引可建立在一个表的一列或多列上,一旦建立,将由 KingbaseES 数据库自动维护和使用,对用户是完全透明的,系统的优化器会根据统计信息确定是否使用索引来提高系统性能。索引逻辑和物理上都独立于与其相关联的表数据。因此,可以删除或创建索引,但不会对索引表产生影响。

创建索引

kingbaseES使用 create index 语句来创建普通b-tree索引

示例:在customers表的c_name列上创建索引

mysql 复制代码
create index indx_c_name on customers(c_name);

在itms分区表中的i_price列上创建本地索引

sql 复制代码
 create index indx_i_price  on items (i_price) local;

在order表的o_id和o_date列上创建组合索引

sql 复制代码
create index idx_o_i_d on orders (o_id, o_date);

使用create unique index语句在orders表中为o_id列创建唯一索引

sql 复制代码
create unique index  o_u_id on  orders (o_id);
查看索引

通过使用select语句查询sys_indexes视图查看相关索引索引

示例:sql复制

sql 复制代码
select * from sys_indexes where schemaname='public';
修改索引

使用alter index语句可以o_u_id索引的相关属性信息

示例:使用alter index语句将o_u_id索引重命名为indx_rename_u_id

sql 复制代码
alter index o_u_id rename to indx_rename_u_id;

使用alter index语句将indx_rename_u_id设置索引填充因子

sql 复制代码
alter index indx_rename_u_id set (fillfactor = 60);
重建索引

使用reindex index语句重建indx_i_price索引:

sql 复制代码
reindex index indx_c_name;

使用reindex table语句重建表上所有索引:

sql 复制代码
reindex table orders;
删除索引

使用 drop index 语句删除索引

sql 复制代码
drop index indx_rename_u_id;

查询

查询是从一个或多个表或视图中检索数据的操作。顶级SELECT语句称为查询,嵌套在另一个SQL语句中的查询称为子查询。本节描述一些查询与子查询类型以及如何使用它们。

SELECT 命令的一般语法是:

mysql 复制代码
[WITH with_queries] SELECT select_list FROM table_expression [sort_specification]
示例查询
  • 简单查询

查询所有订单信息

sql 复制代码
SELECT O_ID, O_DATE, C_ID, I_ID, O_QUANTITY, O_TOTAL_PRICE FROM orders;
  • 关联查询

查询客户的姓名和他们下的订单总数

sql 复制代码
SELECT I_NAME, I_STOCK FROM items GROUP BY I_NAME, I_STOCK;
  • 分组查询

查询每个商品的库存情况(按价格分类)

sql 复制代码
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;
  • 子查询

查询订单金额大于 500 的订单信息

sql 复制代码
SELECT * FROM orders WHERE O_TOTAL_PRICE > ( SELECT AVG(O_TOTAL_PRICE) FROM orders);
  • with子句

计算每个客户的总消费金额,并筛选出消费金额最高的前5名客户

sql 复制代码
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 view命令来进行创建视图,示例如下

  • 销售统计视图

功能:按日期汇总订单金额和数量

sql 复制代码
CREATE 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);
  • 库存预警视图

功能:监控库存量低于 10 的商品

sql 复制代码
CREATE VIEW low_stock_items AS
SELECT 
    i.I_ID,
    i.I_NAME,
    i.I_STOCK
FROM items i
WHERE i.I_STOCK < 60;
  • 客户消费记录视图

功能:展示客户的订单历史和总消费金额

sql 复制代码
CREATE 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;
视图查询
  • 查询销售统计视图
sql 复制代码
SELECT * FROM sales_summary  WHERE order_date = '2023-10-01';
  • 查询库存预警视图
sql 复制代码
SELECT * FROM low_stock_items;
  • 查询Alice Smith的订单历史和总消费金额
sql 复制代码
SELECT * FROM customer_purchase_history  WHERE C_NAME = 'Alice Smith';
视图信息查询

通过使用select语句查询sys_views视图查看相关索引索引

mysql 复制代码
select * from sys_views where schemaname='public';
删除视图

通过drop view命令来进行删除视图对象

mysql 复制代码
drop view customer_purchase_history;

函数

SQL函数在KingbaseES数据库中作为内置组件存在,适用于多种SQL语句,需注意区分于由PL/SQL编写的用户自定义函数

调用这些SQL函数时,若参数类型不符,KingbaseES会自动将其转换为函数所需的数据类型,确保执行无碍

创建函数

示例:计算订单的折扣金额

sql 复制代码
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;

查看订单ID=1的原价

sql 复制代码
SELECT * from orders where o_id=1; 

查看订单 ID=1 的折扣金额

sql 复制代码
SELECT calculate_discount_amount(1) AS discount_amount; 

2599.98*0.1=259.9980,符合预期

触发器

触发器通过在数据操作时自动执行任务,强化了数据完整性和系统的自动化能力。合理设计和使用触发器,可以提升应用的效率、可靠性和安全性,但在开发和维护过程中需综合考虑性能影响和复杂性问题。

下面已一个简单示例来说明

创建触发器

示例

  • 插入触发器

功能:每当插入一条新订单时,触发器会从商品表中减去相应数量的商品库存

sql 复制代码
\set SQLTERM /
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;
/

查看当前库存情况

sql 复制代码
select * from items;

商品编号为1的库存为50

往order订单表中插入一条数据

sql 复制代码
INSERT INTO orders VALUES('11','2023-11-01', 1, 1, 1, 200),  

再试试查看订单情况

sql 复制代码
select * from items;

商品编号为1的库存为49,证明触发器生效了

删除触发器
sql 复制代码
drop trigger update_stock_AFTER_INSERT;

总结

KingbaseES 中,索引作为提升数据检索性能的数据结构,可通过CREATE INDEX建立 B-Tree、组合或唯一索引等,并支持查看、修改、重建及删除操作;查询操作涵盖简单查询、关联查询、分组查询、子查询及 WITH 子句等类型,能从表或视图中高效检索数据;视图是基表的逻辑映射,不存储实际数据,可通过CREATE VIEW创建销售统计、库存预警等视图以简化复杂查询;函数通过 PL/pgSQL 编写,如calculate_discount_amount函数可计算订单折扣金额;触发器在数据操作时自动执行,例如插入订单时触发库存更新,通过CREATE TRIGGER创建后可通过DROP TRIGGER删除,这些功能共同强化了数据库的性能、安全性与自动化能力。

相关推荐
AI浩3 小时前
Redis中的RPOP、BRPOP、LPOP 和 BLPOP
数据库·chrome·redis
数据和云4 小时前
从Databricks和Supabase看AI时代的中国数据库启示
数据库·人工智能
我科绝伦(Huanhuan Zhou)4 小时前
Oracle ADRCI工具全面使用指南:从基础到故障诊断实战
数据库·oracle
数据库生产实战4 小时前
Oracle LOB使用入门和简单使用,提供学习用的测试用例!
数据库·学习·oracle
武子康4 小时前
Java-144 深入浅出 MongoDB BSON详解:MongoDB核心存储格式与JSON的区别与应用场景
java·开发语言·数据库·mongodb·性能优化·json·bjson
Raymond运维4 小时前
MySQL包安装 -- SUSE系列(SUSE资源库安装MySQL)
linux·运维·数据库·mysql
高山上有一只小老虎4 小时前
如何在DBeaver中配置高斯数据库的连接
数据库
云飞云共享云桌面4 小时前
东莞精密机械制造工厂如何10个SolidWorks共用一台服务器资源
java·运维·服务器·网络·数据库·电脑·制造
ActionTech4 小时前
2025 年 9 月《大模型 SQL 能力排行榜》发布,新增 Kimi K2 最新版测评!
数据库·sql·ai·oracle