SQL开发的智能助手:通义灵码在IntelliJ IDEA中的应用
SQL 是一种至关重要的数据库操作语言,尽管其语法与通用编程语言有所不同,但因其在众多应用中的广泛使用,大多数程序员都具备一定的 SQL 编写能力。然而,当面对复杂的 SQL 语句或优化需求时,往往需要专业数据库开发工程师的协助。如今,通义灵码的出现为这一问题提供了全新的解决方案——通过 AI 技术辅助 SQL 脚本的编写和优化。
注意,本文介绍的 AI 介入是 SQL 脚本编写过程,而不是 SQLshell!
SQL 脚本的编写工具有很多,VSCode 和 JetBrains 系列的 IDE 都提供了 SQL 脚本编写的支持,本文以 IntelliJ IDEA 作为案例进行介绍!
一、通义灵码简介
通义灵码是阿里云技术团队精心打造的智能编码助手,它基于强大的通义大模型,具备以下实用功能:
-
**代码续写和优化 :**能够根据现有代码上下文,智能生成行级或函数级的代码建议,帮助程序员快速完成代码编写,并对代码进行优化,提高代码质量和执行效率。
-
**自然语言描述生成代码 :**程序员可以通过自然语言描述需求,通义灵码能够将其转化为相应的代码,大大简化了代码编写过程,尤其适用于复杂功能的实现。
-
**注释生成和代码解释 :**自动生成代码注释,方便程序员及团队成员更好地理解代码逻辑和功能;同时,能够对代码进行详细解释,包括数据库表结构分析、SQL 查询过程解析等,有助于代码的维护和优化。
-
**单元测试生成 :**根据代码自动生成单元测试用例,确保代码的可靠性和稳定性,提高测试效率。
-
**研发智能问答 :**作为基础和核心功能,程序员可以通过与通义灵码的问答对话,获取所需的技术支持和解决方案,就像拥有一位智能的编程助手。
-
**代码问题修复 :**能够识别代码中的潜在问题,并提供修复建议,帮助程序员及时解决代码错误和漏洞。
通义灵码支持多种开发环境,包括 JetBrains IDEs、++Visual Studio Code++、Visual Studio,以及远程开发场景(Remote SSH、++Docker++、WSL、Web IDE)。安装后登录账号即可开始使用。
- 通义灵码官网:https://tongyi.aliyun.com/lingma/
二、安装步骤
以 IntelliJ IDEA 为例,介绍通义灵码的安装方法:
IntelliJ IDEA 的插件商店提供了通义灵码的插件,我们可以直接在插件商店下载:
-
点击顶部菜单栏的 File -> Settings(在 macOS 上为 IntelliJ IDEA -> Preferences)。
-
在设置窗口的左侧菜单中选择 Plugins,然后点击 Marketplace。
-
在搜索框中输入 “通义灵码”,找到插件后点击 Install 按钮进行安装。

- 安装完成后,重启 IntelliJ IDEA 以完成插件的加载。
详细IDEA安装通义灵码教程请查看IntelliJ IDEA 中安装和使用通义灵码 AI 编程助手教程。
三、登录操作
重启 IDEA 后,在右侧工具栏会看到 通义灵码 的图标。点击图标进入插件界面。

注意:
首次使用时,需要点击登录按钮,浏览器会自动打开阿里云登录页面,完成登录后即可返回 IDEA 使用通义灵码。
四、功能演示
(一)代码续写
通义灵码提供行级和函数级的代码补全功能。在 IDE 编辑器区编写代码时,开启自动云端生成模式,它会根据当前代码文件及相关代码文件的上下文,自动生成代码建议。

如果在代码开发过程中没有出现如上图所示的代码提示,可以通过快捷键 ⌥+P手动触发生成代码建议。
程序员可以使用以下快捷键进行操作:
| 操作 | macOS | Windows |
|---|---|---|
| 接受行间代码建议 | Tab | Tab |
| 废弃行间代码建议 | esc | esc |
| 查看上一个行间推荐结果 | ⌥(option) + [ | Alt+[ |
| 查看下一个行间推荐结果 | ⌥(option)+] | Alt+] |
| 手动触发行间代码建议 | ⌥(option)+P | Alt+P |
如果某些文件不需要代码续写功能,可以参考++禁用行间生成++进行配置。
(二)代码注释
通义灵码能够根据代码生成对应的注释,方便代码阅读和维护。
使用时,先选中需要注释的代码,在右键菜单中找到通义灵码的代码注释选项,点击后右侧对话栏会生成带注释的代码,可直接合并到原文件或复制后自行操作。

也可以使用快捷键 Shift + Alt + V 快速使用该功能。
注释结果会在右侧显示

通过通义灵码返回的代码块右上角的按钮,可进行插入、复制、新建和合并(diff)等操作。
通常,注释是使用插入来把原代码替换成有注释的代码。
(三)代码解释
通义灵码提供了代码解释功能,该功能可用于分析数据库的表结构。

也可以用来分析SQL查询的过程。

帮助程序员深入理解数据库操作和优化查询性能。

测试用例代码一般是复制到一个专门的测试用例文件中,方便后续测试。

也可以用新建文件功能,让通义灵码帮你创建一个测试用例文件。

例如,在分析 SQL 查询过程时,通义灵码可以提供查询执行计划、索引使用情况等详细信息,为优化 SQL 语句提供有力支持。
(四)代码优化
通义灵码能够识别选中代码可能存在的问题,并进行优化。

它会根据代码的逻辑结构、性能瓶颈等方面提出优化建议,如改进算法、调整 SQL 语句结构、增加索引等,从而提高代码的执行效率和质量。
(五)智能问答
智能问答是通义灵码的基础和核心功能。程序员可以通过与通义灵码进行问答对话,获取关于 SQL 编程、数据库设计、代码优化等多方面的技术支持和解决方案。
例如,在遇到复杂的 SQL 查询问题时,可以直接向通义灵码提问,它会根据问题提供详细的解答和示例代码,就像一位经验丰富的数据库专家在旁边指导。

(六)会话创建和清理
AI 会根据之前的对话来继续跟进与你的对话,也就是说,AI 会记住你之前的提问,这让 AI 变得更加聪明,但有时候我们需要适时结束会话。
此时可以用创建新会话或者清理会话来实现这个功能。
为了更好地管理与通义灵码的对话,可以使用以下功能:
-
**清理会话:**在对话框中输入
/clearContext,然后点击确定,即可清除之前的对话记录,让 AI 重新开始对话。 -
**创建新会话:**点击右上角的加号(
+),可以创建新的会话,用于讨论不同的技术问题或项目内容。

(七)AI程序员
通义灵码的 AI 程序员功能使 AI 能够像专业程序员一样协助进行代码的修改。
在项目开发中,面对多个 SQL 文件,AI 程序员可以辅助进行代码的检查、优化和修改。
例如,可以让 AI 程序员检查 SQL 脚本的语法错误、性能问题等,并根据检查结果进行相应的修改;

也可以根据已有的 schema 文件,生成测试数据,为项目的测试工作提供便利。

通义灵码作为一款智能编码助手,为 SQL 开发人员提供了全方位的辅助功能,从代码编写、注释、优化到智能问答,都能有效提高开发效率和代码质量。随着 AI 技术的不断发展,相信通义灵码会在未来的数据库开发领域发挥更加重要的作用。
相关文章:
SQL开发的智能助手:通义灵码在IntelliJ IDEA中的应用
SQL 是一种至关重要的数据库操作语言,尽管其语法与通用编程语言有所不同,但因其在众多应用中的广泛使用,大多数程序员都具备一定的 SQL 编写能力。然而,当面对复杂的 SQL 语句或优化需求时,往往需要专业数据库开发工程…...
基于 Q - learning 算法的迷宫导航
这段 Python 代码实现了一个基于 Q - learning 算法的迷宫导航系统。代码通过定义迷宫环境、实现 Q - learning 算法来训练智能体,使其能够在迷宫中找到从起点到终点的最优路径,同时利用训练好的 Q 表来测试智能体的导航能力。 在这个代码实现的迷宫环境…...
解决:AttributeError: module ‘cv2‘ has no attribute ‘COLOR_BGR2RGB‘
opencv AttributeError: module ‘cv2’ has no attribute ‘warpFrame’ 或者 opencv 没有 rgbd 解决上述问题的方法是: 卸载重装。 但是一定要卸载干净,仅仅卸载opencv-python是不行的。无限重复都报这个错。 使用pip list | grep opencv查看相关的…...
NutriJarvis:AI慧眼识餐,精准营养触手可及!—— 基于深度学习的菜品识别与营养计算系统
NutriJarvis:AI慧眼识餐,精准营养触手可及!—— 基于深度学习的菜品识别与营养计算系统 NutriJarvis 是一个基于深度学习的菜品识别与营养计算系统,旨在通过计算机视觉技术自动识别餐盘中的食物,并估算其营养成分&…...
作为一名java技术博主如何突围
作为一位Java开发和技术博主,想要在抖音上快速提升粉丝数量和视频播放量,可以结合以下策略进行优化: 1. 明确目标受众与技术方向 细分领域:技术领域广泛,可以专注于Java开发、算法、框架解析(如Spring Boo…...
【LaTeX】
基本使用 \documentclass 类型:文章(article)、报告(report)、书(book) 中文的文章是ctexart,中文字体是UTF8 \documentclass[UTF8]{ctexart} []说明可以省略不写的意思…...
细说STM32单片机FreeRTOS任务管理相关函数及多任务编程的实现方法
目录 一、FreeRTOS任务管理相关函数 1、FreeRTOS函数 2、FreeRTOS宏函数 3、主要函数功能说明 (1)创建任务osThreadNew() (2)删除任务vTaskDelete() (3)挂起任务vTaskSuspend() (4&…...
uniapp微信小程序基于wu-input二次封装TInput组件(支持点击下拉选择、支持整数、电话、小数、身份证、小数点位数控制功能)
一、 最终效果 二、实现了功能 1、支持输入正整数---设置specifyTypeinteger 2、支持输入数字(含小数点)---设置specifyTypedecimal,可设置decimalLimit来调整小数点位数 3、支持输入手机号--设置specifyTypephone 4、支持输入身份证号---设…...
VLM-R1GRPO微调,强化学习训练, 实战训练教程(2)
https://www.dong-blog.fun/post/2013 VLM-R1GRPO微调, 实战训练教程(1): https://www.dong-blog.fun/post/1961 本博客这次使用多图进行GRPO。 官方git项目:https://github.com/om-ai-lab/VLM-R1?tabreadme-ov-f…...
系统弹出消息功能,且保证用户只能获取弹出一次消息
要实现系统弹出消息功能,且保证用户只能获取弹出一次消息,你可以借助 Redis 来达成。基本思路是:把消息存于 Redis 的列表中,同时用 Redis 的集合记录用户是否已接收过该消息。下面是一个示例工具类,其中包含推送消息和…...
Python代码解释
文章目录 代码解析执行过程等价写法其他类似操作 这段代码使用了 Python 的 map() 函数和 lambda 表达式来对列表中的每个元素进行平方运算。让我详细解释一下: 代码解析 numbers [1, 2, 3, 4] squared list(map(lambda x: x**2, numbers))numbers [1, 2, 3, …...
GPIO_ReadInputData和GPIO_ReadInputDataBit区别
目录 1、GPIO_ReadInputData: 2、GPIO_ReadInputDataBit: 总结 GPIO_ReadInputData 和 GPIO_ReadInputDataBit 是两个函数,通常用于读取微控制器GPIO(通用输入输出)引脚的输入状态,特别是在STM32系列微控制器中。它们之间的主要…...
MySQL数据库编程总结
MySQL数据库编程总结 一、数据库概述 数据库定义 • 数据库是管理数据的软件系统,用于高效存储、管理和检索数据,减少冗余。 • 核心功能:通过SQL语言定义、操作数据,维护完整性和安全性。 常见数据库 • MySQL、Oracle、SQL Ser…...
leetcode-419.棋盘上的战舰
leetcode-419.棋盘上的战舰 文章目录 leetcode-419.棋盘上的战舰一.题目描述二.第一次代码提交三.第二次代码提交 一.题目描述 二.第一次代码提交 class Solution { public:int countBattleships(vector<vector<char>>& board) {int m board.size(); //列数i…...
使用uglifyjs对静态引入的js文件进行压缩
前言 因为有时候js文件没有npm包,或者需要修改,只能引入静态的js,那么这个时候就可以对js进行压缩了。我其实想通过vite、webpack等插件进行压缩的,可是他都不能定位到public目录下面的文件,所以我只能自己压缩了。编…...
ecovadis评分要求,如何提高ecovadis分数,未来展望
EcoVadis评分要求、提升方法及未来展望 1. EcoVadis评分概述 EcoVadis是全球领先的企业可持续发展评级平台,评估企业在环境(E)、劳工与人权(L)、商业道德(B)、可持续采购(S&#x…...
程序加壳脱壳原理和实现
理论 一个可运行的执行文件,至少会有一个代码段,程序的入口点指向代码段,程序运行的时候,从入口点开始执行代码段指令 为了将一个正常的程序进行加壳保护,至少要三部分逻辑配合 1、待加壳保护的程序 2、加壳逻辑 3…...
【数据分析实战】使用 Matplotlib 绘制折线图
1、简述 在日常的数据分析、科研报告、项目可视化展示中,折线图是一种非常常见且直观的数据可视化方式。本文将带你快速上手 Matplotlib,并通过几个实际例子掌握折线图的绘制方法。 Matplotlib 是 Python 中最常用的数据可视化库之一,它能够…...
数据仓库标准库模型架构相关概念浅讲
数据仓库与模型体系及相关概念 数据仓库与数据库的区别可参考:数据库与数据仓库的区别及关系_数据仓库和数据库-CSDN博客 总之,数据库是为捕获数据而设计,数据仓库是为分析数据而设计 数据仓库集成工具 在一些大厂中,其会有自…...
亚洲区域健康人群免疫细胞marker
最近发现一篇文献,作者来自新加坡基因研究所,这篇文章大概是整理了619个亚洲人群的免疫多样性图集(AIDA),跨越了7个国家,最终使用了1,265,624个免疫细胞的单细胞数据,并最终确定了8种主要的免疫…...
tree-sitter的grammar.js解惑
❓问题1:grammar.js 不是用正则表达式 /.../ 吗?为什么有 print 这样的字符串? ✅ 回答: grammar.js 分成两类“终结符”表示法: 表达方式含义xxx直接匹配该字符串字面量/regex/匹配符合正则的文本 💡 …...
三极管以及mos管
三极管与mos管的高低电平导通判断 (1)三极管的高低电平导通判断 三极管中有2个PN结,分别称为发射结和集电极结,按材料划分为硅材料三极管(硅管),锗材料三极管(锗管)&am…...
第十七天 - Jenkins API集成 - 流水线自动化 - 练习:CI/CD流程优化
前言 在DevOps实践中,持续集成与持续交付(CI/CD)是现代软件工程的核心支柱。作为业界使用最广泛的自动化服务器,Jenkins凭借其强大的插件生态和灵活的流水线配置能力,成为企业级CI/CD落地的首选工具。本文将深入解析J…...
PPT模板之--个人简历
还在为制作 PPT 时毫无头绪、对着空白页面抓耳挠腮而烦恼吗?别担心,这里就是你的 PPT 灵感补给站!在这个快节奏的信息时代,一份吸睛又高效的 PPT 至关重要,它能在商务汇报中助你赢得先机,在课堂展示时让你脱…...
【远程工具】1.1 时间处理设计与实现(datetime库lib.rs)
一、设计原理与决策 时间单位选择 采用**秒(s)**作为基准单位,基于以下考虑: 国际单位制(SI)基本时间单位 整数秒(i64)方案优势: 精确无误差(相比浮点数&am…...
Nginx常用工具
Nginx常用工具 Nginx常用工具vscode配置Nginx插件在线生成Nginx配置文件Nginx可视化配置工具 Nginx常用工具 编写Nginx配置时,使用VSCodeNginx插件,能实现自动补全格式化配置. vscode配置Nginx插件 Nginx代码高亮插件: nginx-formatter Nginx代码格式化插件&#…...
应用安全系列之四十五:日志伪造(Log_Forging)之三
1、简介 针对Java的日志系统有多种,本文主要描述如何通过修改配置文件来解决logback和log4j的日志伪造问题。 2、logback 2.1、系统提供的解决方案 在logback.xml中配置编码器自动转义特殊字符: 复制 <configuration><appender name"C…...
springboot--页面的国际化
今天来实现页面中的国际化 首先,需要创建一个新的spring boot项目,导入前端模板,在我的博客中可以找到,然后将HTML文件放在templates包下,将其他的静态资源放在statics包下,如下图结构 页面的国际化主要在首…...
前端学习10—Ajax
1 AJAX 简介 AJAX 全称为 Asynchronous JavaScript And XML,就是异步的 JS 和 XML 通过 AJAX 可以在浏览器中向服务器发送异步请求,最大优势为:无刷新获取数据 AJAX 不是新的编程语言,而是一种将现有的标准组合在一起使用的新方…...
list的常见接口使用
今天,我们来讲解一下C关于STL标准库中的一个容器list的常见接口。 在我们之前c语言数据结构中,我们已经了解过了关于链表的知识点了,那么对于现在理解它也是相对来说比较容易的了。 数据结构--双向循环链表-CSDN博客 1. 定义与包含头文件 …...
