快速上手 KSQL:轻松与数据库交互的利器
上次我们通过 Docker 安装了 KingbaseES 数据库,今天我们将开始学习并快速上手使用 KSQL。简单来说,KSQL 本质上是一个客户端工具,用于与数据库进行交互。启动后,我们可以像使用普通的 SQL 一样执行查询和操作,这将是一个很好的练习机会。
同时,我们也可以借此机会探索 KSQL 是否有一些特别的功能或使用方式,了解它与传统 SQL 工具的不同之处。
Ksql快速启动
连接目标数据库
使用命令 ksql -p 54321 -d test,你就可以直接进入名为 test 的数据库。通过更改命令中的数据库名称参数,你可以轻松切换并进入任何其他数据库,只需替换 -d 后面的数据库名称即可。这种方式非常灵活,方便用户在多个数据库之间进行快速切换和操作。

基本命令
建表
这里我们使用的是标准的建表语句,创建表的过程与传统的 SQL 语法完全一致。
create table todo_info(
id number primary key,
todo_info varchar(1000) not null,
todo_Date date not null,
done boolean not null default false
)

查看表结构
Ksql也有查看表结构的命令如下:\d todo_info

变量
KSQL 支持在会话中动态添加变量,采用的是键值对(Key-Value)结构。这意味着用户可以在会话期间定义和修改变量,并在查询和操作中灵活地使用这些变量。
\set flag 爱吃饭
\echo :flag

当然,这不仅仅包括常规的变量,也同样适用于SQL语句中的变量。接下来,我们将具体演示如何在SQL操作中使用这些变量。
insert into todo_info(id,todo_info,todo_date) values(1,:'flag',sysdate);

变量的使用可以显著节省你编写重复代码或值所浪费的时间,通过使用变量,你能够避免冗余操作,极大地提升开发效率。
SQL脚本
KSQL 同样支持执行 SQL 脚本,这是其强大的功能之一。接下来,我们将通过一个实际的示例来进行测试。首先,我们需要进入 Docker 容器环境,并确保在当前用户的工作目录下编辑一个测试脚本。
需要注意的是,你也可以根据需要,编辑并使用你自己的 SQL 脚本。为了帮助你快速入门,下面展示的是一个简单的测试脚本内容:
CREATE TABLE t1
(
a int,
b int
);INSERT INTO t1 VALUES(1,1);
INSERT INTO t1 VALUES(2,2);SELECT * FROM t1;

保存后,我们可以在Ksql窗口内直接执行命令:\i text.sql

这也是一个对于开发人员方便的命令。
生成HTML
我们可以将查询得到的结果转换为HTML格式,以便更好地进行可视化展示。考虑到你的数据库工具无法直接连接到生产数据库,而生产数据库的管理权限通常仅限于DBA(数据库管理员),因此可以让DBA导出查询结果为HTML文件供我们查看。
这样不仅能够实现数据的可视化,也能更直观地分析和展示结果。我们不妨尝试一下这个方法。
\H
执行命令后,我们看下查询结果。

浏览器直接就可以打开查看。

如果想要还原回去,记得在执行这个命令:\a

统计 SQL 执行时间
在生产环境中,SQL执行时间是最常用的性能监控指标之一,通过这个指标,我们可以迅速识别出是否存在慢查询的潜在隐患。特别是在上线新版本或新功能时,分析SQL执行时间能够帮助我们及时发现性能问题,避免对系统的响应速度和稳定性产生负面影响。
接下来,我们将一起来看看如何开启这一监控功能。
\timing on

开启成功,这样就可以直接在上线前就可以隐藏掉慢查询的隐患。
执行计划
另一个在生产环境中不可或缺的优化工具是执行计划。执行计划能够揭示SQL查询在执行过程中是否有效利用了索引,尤其在新表刚上线时,虽然SQL的执行时间较短,但随着数据量的增长和查询频次的增加,问题可能会逐渐暴露。
因此,提前通过执行计划分析潜在的性能瓶颈,可以有效避免后期的查询性能下降。接下来,我们就来试一下如何查看和分析执行计划。
explain sql;

这是预期的执行计划。如果你希望查看实际执行过程中的真实效果,可以使用以下命令来获取更详细的执行情况和性能分析。
explain analyze sql;
这个命令如果你想要执行,切记在执行之前开启事务,以确保在测试过程中不会对数据库产生实际的修改或影响。执行完毕后,请务必回滚事务,以恢复数据的原始状态,从而避免对数据库环境造成任何不可预见的变化或损害。
退出Ksql
如果需要退出Ksql命令行,输入 \q 即可

总结
通过今天的学习,我们已经对 KSQL 工具有了初步的了解,并掌握了基本的操作技巧。我们从连接数据库、创建表结构到执行 SQL 脚本,再到灵活运用变量和进行性能优化等方面,逐步熟悉了 KSQL 的强大功能。与传统的 SQL 工具相比,KSQL 提供了更高效的工作流,尤其是在处理数据库查询和调试时,灵活的命令行操作和可视化功能为开发者节省了大量的时间和精力。
此外,KSQL 还支持实时执行 SQL 查询并生成 HTML 格式的结果,极大地方便了数据的可视化展示。通过引入执行计划和 SQL 执行时间的监控,我们可以及时识别潜在的性能问题,确保系统在生产环境中的稳定性。
总之,KSQL 是一个功能强大且易于上手的数据库客户端工具,尤其适合需要频繁与数据库进行交互的开发人员和数据库管理员。希望通过今天的实践,大家能更好地掌握 KSQL,并将其应用到实际项目中,提高工作效率和系统性能。
我是努力的小雨,一名 Java 服务端码农,潜心研究着 AI 技术的奥秘。我热爱技术交流与分享,对开源社区充满热情。同时也是一位腾讯云创作之星、阿里云专家博主、华为云云享专家、掘金优秀作者。
我将不吝分享我在技术道路上的个人探索与经验,希望能为你的学习与成长带来一些启发与帮助。
欢迎关注努力的小雨!
快速上手 KSQL:轻松与数据库交互的利器的更多相关文章
- WebAPI调用笔记 ASP.NET CORE 学习之自定义异常处理 MySQL数据库查询优化建议 .NET操作XML文件之泛型集合的序列化与反序列化 Asp.Net Core 轻松学-多线程之Task快速上手 Asp.Net Core 轻松学-多线程之Task(补充)
WebAPI调用笔记 前言 即时通信项目中初次调用OA接口遇到了一些问题,因为本人从业后几乎一直做CS端项目,一个简单的WebAPI调用居然浪费了不少时间,特此记录. 接口描述 首先说明一下,基于 ...
- windows环境30分钟从0开始快速搭建第一个docker项目(带数据库交互)
前言 小白直接上手 docker 构建我们的第一个项目,简单粗暴,后续各种概念边写边了解,各种概念性的内容就不展开,没了解过的点击 Docker 教程 进行初步了解. Docker 是一个开源的应用 ...
- python对接常用数据库,快速上手!
python对接常用数据库,快速上手! 很多同学在使用python进行自动化测试的时候,会涉及到数据库数据校验的问题,因为不知道如何在python中如何对数据库,这个时候会一脸茫然,今天在这里给大家汇 ...
- 10分钟系列:NetCore3.1+EFCore三步快速完成数据库交互
前言 做程序开发,不管是什么语言什么数据库,其中的ORM(对象关系映射)是必不可少的,但是不管选择哪一种ORM,都需要了解其中的运行机制,配置帮助类等等. 所以很多ORM都开始进行升级封装,我们只需要 ...
- python 对接各大数据库,快速上手!
1.mysql 安装pymysql pip intsall pymysql 快速上手 import pymysql # 第一步:连接到数据库 con = pymysql.connect(host= ...
- 【Python五篇慢慢弹】快速上手学python
快速上手学python 作者:白宁超 2016年10月4日19:59:39 摘要:python语言俨然不算新技术,七八年前甚至更早已有很多人研习,只是没有现在流行罢了.之所以当下如此盛行,我想肯定是多 ...
- 【图文详解】scrapy安装与真的快速上手——爬取豆瓣9分榜单
写在开头 现在scrapy的安装教程都明显过时了,随便一搜都是要你安装一大堆的依赖,什么装python(如果别人连python都没装,为什么要学scrapy….)wisted, zope interf ...
- 新手学习Linux之快速上手分析
一.起步 首先,应该为自己创造一个学习linux的环境--在电脑上装一个linux或unix 问题1:版本的选择 北美用redhat,欧洲用SuSE,桌面mandrake较多,而debian是技术最先 ...
- Flask入门和快速上手
目录 Flask入门和快速上手 python三大主流框架对比 Flask安装 依赖 可选依赖 创建flask项目 flask最小应用--hello word 非法导入名称 调试模式 路由 唯一的 UR ...
- Requests快速上手
发送请求 使用 Requests 发送网络请求非常简单. 一开始要导入 Requests 模块: >>> import requests 然后,尝试获取某个网页.本例子中,我们来获取 ...
随机推荐
- 零基础学习人工智能—Python—Pytorch学习(八)
前言 本文介绍卷积神经网络的上半部分. 其实,学习还是需要老师的,因为我自己写文章的时候,就会想当然,比如下面的滑动窗口,我就会想当然的认为所有人都能理解,而实际上,我们在学习的过程中之所以卡顿的点多 ...
- DASCTF 2024暑期挑战赛 RE
DASCTF 2024暑期挑战赛 DosSnake 使用ghidra看反汇编 发现有XOR操作 在ida里面看汇编跟一下 字符DASCTF地址往下6个存放的数据与DASCTF字符串进行异或 A=[0x ...
- 一场 Kafka CRC 异常引发的血案
一.问题概述 客户的生产环境突然在近期间歇式的收到了Kafka CRC的相关异常,异常内容如下 Record batch for partition skywalking-traces-0 at of ...
- 每天5分钟复习OpenStack(十五)Ceph与Bcache结合
上一章我们成功部署了bcache,这一章我们将Ceph与Bcache结合来使用,使用Bcache来为ceph的数据盘提速. 1 ceph 架构 一个标准的ceph集群可能是如下的架构,SSD/NVME ...
- Docker镜像源地址
Docker镜像源地址(1)官方镜像:https://registry.docker-cn.com(2)网易镜像:http://hub-mirror.c.163.com(3)清华大学:https:// ...
- 小tips:CSS实现0.5px的边框的两种方式
方式一 <style> .border { width: 200px; height: 200px; position: relative; } .border::before { con ...
- EF Core – Soft Delete 实现
前言 在 SQL Server – Soft Delete 中, 讲到了如果在 SQL Server 实现 Soft Delete. 这篇来说说, EF Core 在中间扮演的角色. 主要参考 Ent ...
- Qt连连看(三)非核心功能实现
主要的界面设计好后,我们来看下非核心功能的实现.由于这块不需要用到稍微复杂的算法,解决起来相对来说容易许多,于是我们选择先实现这部分非核心功能,这块几乎不涉及游戏的核心逻辑. 游戏界面如下: 这时我们 ...
- Blazor开发框架Known-V2.0.11
Known今天发布了V2.0.11版本,本次版本添加了系统WebApi在线测试,系统菜单样式配置,表格支持用户设置栏位显隐和顺序,系统上下文支持静态组件与后端交互,以及对PgSQL进行了详细的测试,修 ...
- 【赵渝强老师】在Spark SQL中读取JSON文件
Spark SQL是Spark用来处理结构化数据的一个模块,它提供了一个编程抽象叫做DataFrame并且作为分布式SQL查询引擎的作用.为什么要学习Spark SQL?如果大家了解Hive的话,应该 ...