欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > 全面探索 KingbaseES 在线数据库平台:从开发到优化的全方位体验

全面探索 KingbaseES 在线数据库平台:从开发到优化的全方位体验

2025/6/18 13:59:24 来源:https://blog.csdn.net/2302_79177254/article/details/148723768  浏览:    关键词:全面探索 KingbaseES 在线数据库平台:从开发到优化的全方位体验

在这里插入图片描述

一、 KindbaseES前期准备

1.1 账号准备

打开官网入口https://kesonline.kingbase.com.cn/,在右上角进行登入操作,其中需要填写邮箱相关信息。注册流程简洁,整个过程耗时不长。

在这里插入图片描述

1.2 体验中心

将鼠标悬停或点击‘服务与支持’按钮,即可查看相关平台内容。此处可以直接进入数据库体验环境。首次使用时,平台会弹出引导提示,建议新用户先查阅‘快速入门’文档。

在这里插入图片描述

选择擅长的语言 - Mysql】

在这里插入图片描述

二、KindbaseES的体验过程

2.1 检查数据库

让大家充分体验数据库的使用过程,感受平台的独特魅力。

数据库模式与选择的模式一致,可继续下一步操作。否则请重新刷新页面,或与管理员联系。

在这里插入图片描述

2.2 模式的创建和管理

在数据库中,模式(Schema)是一个用来组织和管理各种对象(如表、视图、函数等)的逻辑框架。

它不仅为数据库对象提供了命名空间,还具备以下显著优势:

  • 模式可以避免同名对象之间的冲突,允许在不同模式下创建相同名称的对象;
  • 通过为每个模式设置独立的权限,我们可以更有效地进行权限管理和隔离,确保用户或角色仅能访问其授权的模式,从而提升数据库的整体安全性。

2.2.1 创建模式

我们可以使用 CREATE SCHEMA 命令在当前数据库中创建一个新的模式。在执行创建操作时,所指定的模式名称必须是唯一的,不能与现有的任何模式名称重复。

create schema test1;
create schema test2;
create schema test3;

在这里插入图片描述

2.2.2 查看模式列表

我们可以通过查询 sys_namespace 视图来获取当前数据库中所有模式的相关信息。

运行结果如下:

在这里插入图片描述

2.2.3 使用模式

在我们需要在特定模式下创建或访问对象时,必须使用模式名限定的对象名。具体来说,这种命名方式将模式名和对象名通过点号(.)连接起来,以明确指定对象所属的模式。这样做不仅能够避免命名冲突,还能确保我们操作的是正确的对象,特别是在数据库中存在多个模式时。

示例:

1.【在test1下创建db_info表

create table kes01.db_info(id int,name varchar(20) );

2.【向表中插入数据

insert into test.db_info values ('01','test');

3.【查询表中数据

select * from test.db_info;

在这里插入图片描述

在这里插入图片描述

2.2.4 更改模式

在 KingbaseES 中,我们可以通过 ALTER SCHEMA 语句来修改模式的属性。这使得我们能够灵活地调整模式的设置,比如重命名模式、更改模式的所有者等,从而方便我们在数据库管理和维护过程中进行必要的调整。

示例:

1.【将schema test1重新命名为test4

alter schema test1 rename to test4;

2.【查询新模式信息

select * from sys_namespace where nspname='test4';

在这里插入图片描述

2.2.5 删除模式

kingbaseES支持使用 drop schema 命令进行删除。

drop schema test2 cascade ;
drop schema test4 cascade ;

在这里插入图片描述

三、 表

在 KingbaseES 中,表是最基本的操作对象,它代表了一个实体,记录了与该实体相关的重要信息。我们所使用的表类型通常是关系表,这类表由多个列组成,属于最常见和基础的表类型。

表的管理包括多个方面:创建表、修改表结构、删除表等常见操作。同时,我们还需要管理不同类型的表,比如普通表和分区表等。通过这些管理操作,我们能够有效地组织和存储数据,确保数据库的高效运行和灵活扩展。

3.1 创建表

3.1.1 创建表students学生表

CREATE TABLE students (S_ID INT AUTO_INCREMENT PRIMARY KEY,S_NAME VARCHAR(50) NOT NULL,S_AGE INT NOT NULL,S_MAJOR VARCHAR(50) NOT NULL
);

3.1.2 创建成绩表

CREATE TABLE grades (G_ID INT PRIMARY KEY,S_ID INT NOT NULL,C_ID INT NOT NULL,G_SCORE DECIMAL(5,2) NOT NULL,FOREIGN KEY (S_ID) REFERENCES students(S_ID)
);

3.1.3 创建课程表

CREATE TABLE courses (C_ID INT PRIMARY KEY,C_NAME VARCHAR(100) NOT NULL,C_CREDITS INT NOT NULL
);

3.2 修改表结构

使用 ALTER TABLE 语句,给 grades 表添加一个主键。

ALTER TABLE grades ADD CONSTRAINT pk_grades PRIMARY KEY(G_ID);

使用 ALTER TABLE 语句,给 students 表添加一个新的列,记录学生的电子邮件地址。

ALTER TABLE students ADD COLUMN S_EMAIL VARCHAR(100);

3.3 插入示例数据

</使用 INSERT 命令可以向表中插入数据。

1.【向 students 表中插入数据】

INSERT INTO students (S_NAME, S_AGE, S_MAJOR) VALUES
('John Doe', 20, 'Computer Science'),
('Jane Smith', 21, 'Mathematics'),
('Alice Johnson', 19, 'Physics'),
('Bob Brown', 22, 'Biology'),
('Charlie Davis', 20, 'Chemistry'),
('Diana White', 21, 'Engineering'),
('Ethan Green', 19, 'Mathematics'),
('Frances King', 22, 'Philosophy'),
('George Miller', 20, 'History'),
('Helen Scott', 21, 'Psychology');

2.【向 courses 表中插入数据】

INSERT INTO courses (C_ID, C_NAME, C_CREDITS) VALUES
('1', 'Mathematics', 3),
('2', 'Physics', 4),
('3', 'Chemistry', 3),
('4', 'Computer Science', 5),
('5', 'Biology', 3),
('6', 'English', 2),
('7', 'History', 3),
('8', 'Philosophy', 2),
('9', 'Art', 2),
('10', 'Music', 2);

3.【向 grades 表中插入数据】

INSERT INTO grades (G_ID, S_ID, C_ID, G_SCORE) VALUES
('1', 1, 1, 90.50),
('2', 2, 2, 85.30),
('3', 3, 3, 92.00),
('4', 4, 4, 88.10),
('5', 5, 5, 76.75),
('6', 6, 6, 80.00),
('7', 7, 7, 95.20),
('8', 8, 8, 87.90),
('9', 9, 9, 78.60),
('10', 10, 10, 85.40);

3.4 查看示例数据

1.【查看 students 表信息】

SELECT * FROM students;

2.【查看 courses 表信息】

SELECT * FROM courses;

3.【查看 grades 表信息】

SELECT * FROM grades;

在这里插入图片描述

四、索引概述

在数据库中,索引是为了提高数据检索效率而创建的特殊数据结构。通过在表的一列或多列上创建索引,可以为查询提供快速的检索路径。索引是独立于表数据的,通常在范围查询或指定行查询时提高性能。KingbaseES自动管理索引,优化器根据统计信息决定是否使用索引,以此来提升数据库查询的效率。

索引分为不同类型,其中最常见的是 B-tree 索引。索引对数据的管理和优化至关重要,但创建过多的索引也可能影响写入性能,因此必须根据应用的实际需求来平衡。

4.1 创建索引

在 KingbaseES 中,我们通过 CREATE INDEX 语句来创建索引。以下是一些实际的索引创建示例,结合了我们之前创建的 studentsgradescourses 表的数据。

示例 1: 【在 students 表的 S_NAME 列上创建索引】

假设我们有一个 students 表,包含学生的姓名,我们可以通过以下语句在 S_NAME 列上创建索引,从而加速基于学生姓名的查询:

CREATE INDEX indx_s_name ON students(S_NAME);

示例 2:【 在 grades 表的 G_SCORE 列上创建索引】

如果我们经常需要根据成绩查询学生的信息,可以在 grades 表的 G_SCORE 列上创建索引,来优化此类查询:

CREATE INDEX indx_g_score ON grades(G_SCORE);

示例 3: 【在 courses 表的 C_NAME 列上创建索引】

假设 courses 表中存储了课程的名称,我们可以在 C_NAME 列上创建索引,加速基于课程名称的查询:

CREATE INDEX indx_c_name ON courses(C_NAME);

示例 4: 【在 grades 表的 S_IDC_ID 列上创建组合索引】

若频繁需要基于学生ID和课程ID查询成绩,可以在 grades 表中创建复合索引:

CREATE INDEX idx_s_c_id ON grades(S_ID, C_ID);

4.2 查看索引

要查看数据库中的索引信息,可以查询 pg_indexes 视图。例如,查询当前数据库中所有表的索引:

SELECT * FROM pg_indexes WHERE schemaname = 'public';

此语句将返回所有 public 模式下的索引,帮助我们了解现有索引的结构。

在这里插入图片描述

4.3 修改索引

有时,我们需要修改现有的索引。KingbaseES 提供了 ALTER INDEX 语句来进行这些修改。

示例 1: 【重命名索引】

如果我们希望重命名已存在的索引(例如,将 indx_s_name 改为 indx_student_name),可以使用以下命令:

ALTER INDEX indx_s_name RENAME TO indx_student_name;

示例 2: 【设置索引的填充因子】

调整索引的填充因子可以影响其存储密度,进而影响查询性能。以下命令设置 indx_student_name 索引的填充因子为 70:

ALTER INDEX indx_student_name SET (fillfactor = 70);

4.4 重建索引

当索引的数据结构出现问题,或者查询性能下降时,我们可以使用 REINDEX 命令来重建索引。

示例 1: 【重建单个索引】

假设我们需要重建 indx_s_name 索引,可以执行以下命令:

REINDEX INDEX indx_s_name;

示例 2: 【重建整个表的索引】

如果表中的多个索引都需要重建,可以使用 REINDEX TABLE 命令:

REINDEX TABLE grades;

4.5 删除索引

如果某个索引不再需要,可以通过 DROP INDEX 命令将其删除。删除索引不会影响表数据,只是删除了索引本身。

DROP INDEX indx_student_name;

索引是提高数据库查询性能的一个重要工具。通过创建合适的索引,我们可以显著提高数据检索效率,尤其是在大数据量的表中。

KingbaseES 提供了强大的索引管理功能,可以灵活创建、修改、重建和删除索引。然而,索引的使用需要谨慎,过多的索引会影响插入、更新和删除操作的性能。因此,在设计数据库时,应合理规划索引的使用。

五、视图

视图是一个或多个表的逻辑表示形式。与表不同,视图既不分配存储空间,也不包含数据,而是通过定义的查询,从它所引用的基表中提取或派生出数据。视图的数据来自它所依赖的基表,基表可以是表或其他视图。在视图上执行的所有操作实际上都指向基表。

5.1 视图创建

通过CREATE VIEW命令来进行创建视图,示例如下:学生成绩汇总视图

功能:按学科汇总学生的平均成绩。

CREATE OR REPLACE VIEW student_grades AS
SELECT s.S_NAME,c.C_NAME,g.G_SCORE
FROM students s
JOIN grades g ON s.S_ID = g.S_ID
JOIN courses c ON g.C_ID = c.C_ID;

学生平均成绩视图

功能:展示每个学生平均成绩记录。

CREATE OR REPLACE VIEW student_average_grades AS
SELECT s.S_NAME,AVG(g.G_SCORE) AS average_score
FROM students s
JOIN grades g ON s.S_ID = g.S_ID
GROUP BY s.S_NAME;

5.2 视图查询

查询学生成绩视图

SELECT * FROM student_grades;

查询学生平均成绩视图

SELECT * FROM student_average_grades;

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

5.3 视图信息查询

通过使用select语句查询系统视图sys_views查看所有视图信息:

SELECT * FROM sys_views WHERE schemaname='public';

在这里插入图片描述

5.4 删除视图

通过DROP VIEW命令删除视图对象:

DROP VIEW student_score_summary;

这样就根据学生、学科和成绩的信息创建了相关的视图,供查询和管理使用。

六、函数

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

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

创建函数:计算学生的平均成绩

-- 创建计算学生平均成绩的函数
CREATE OR REPLACE FUNCTION calculate_average_score(_s_id INT)
RETURNS DECIMAL(5,2) AS $$
DECLAREavg_score DECIMAL(5,2);
BEGIN-- 计算指定学生的平均成绩SELECT AVG(G_SCORE) INTO avg_scoreFROM gradesWHERE S_ID = _s_id;-- 返回平均成绩RETURN avg_score;
END$$
LANGUAGE plpgsql;

在这里插入图片描述

七、触发器

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

创建触发器:插入成绩时自动更新学生成绩平均值

每当成绩表插入新记录时,触发器会自动更新该学生的平均成绩。

CREATE TRIGGER update_avg_score_after_insert
AFTER INSERT ON grades
FOR EACH ROW
EXECUTE FUNCTION update_avg_score_after_insert();

在这里插入图片描述

八 、总结

我对整个过程进行了深入体验,整体效果相当不错。通过模拟电商业务场景,从数据库模式的构建、表设计,到索引优化、视图、函数和触发器的应用,全面感受到了 KingbaseES 在线平台的强大功能。平台涵盖了数据库开发的全流程,支持常见的数据库语法,兼容性强,且开发上手十分简便,极大地方便了开发者的工作。对于数据库的设计、操作、优化等方面,KingbaseES 提供了丰富的支持,使得我能够更好地完成各种开发任务,并实现了系统性能和效率的提升。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词