热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

QL语言参考2查询

查询(Queries)官方文档https:codeql.github.comdocsql-language-referencequeries查询是QL程序的输出,它们计算成组的结果

查询(Queries)

官方文档

https://codeql.github.com/docs/ql-language-reference/queries/

查询是 QL 程序的输出,它们计算成组的结果。

有两种查询方式:



  • 使用select字句进行查询。如果存在select模块,在该模块中定义。

  • 使用query谓词进行查询。该模块的谓词命名空间中的任何查询谓词。也就是说,它们可以在模块本身中定义,或者从不同的模块中导入。


Select 字句

在编写查询模块时,可以包含以下格式的 select 子句(通常位于文件的末尾) :

from /* ... variable declarations ... */
where /* ... logical formula ... */
select /* ... expressions ... */

fromwhere 部分是可选的。

除了“表达式”中描述的表达式之外,还可以包括:



  • as 关键字,后跟名称。这为结果列提供了一个“标签”,并允许您在后续的选择表达式中使用它们。

  • order by关键字,后面跟着结果列的名称,还可以选择关键字 asc 或 desc。这决定了显示结果的顺序。

例如:

from int x, int y
where x = 3 and y in [0 .. 2]
select x, y, x * y as product, "product: " + product

select 语句输出的结果































xyproduct
300product: 0
313product: 3
326product: 6

还可以在 select 子句的末尾添加order by y desc 实现排序。现在根据 y 列中的值按降序排列结果:

from int x, int y
where x = 3 and y in [0 .. 2]
select x, y, x * y as product, "product: " + product order by y desc






























xyproduct
326product: 6
313product: 3
300product: 0

Query 谓词

查询谓词是带有查询注释非成员谓词。它返回谓词计算得到的所有元组。

query int getProduct(int x, int y) {
x = 3 and
y in [0 .. 2] and
result = x * y
}






























序号xyresult
1313
2300
3326

编写Query查询谓词而不是Select选择子句的一个好处是,您也可以在代码的其他部分调用谓词。例如,你可以在类的主体中调用 getProduct:

class MultipleOfThree extends int {
MultipleOfThree() { this = getProduct(_, _) }
}

相比之下,select 子句就像一个匿名谓词,因此您不能在以后调用它。

在调试代码时向谓词添加查询注释也很有帮助。这样,就可以显式地看到谓词计算得到的元组集。



推荐阅读
  • Python安全实践:Web安全与SQL注入防御
    本文旨在介绍Web安全的基础知识,特别是如何使用Python和相关工具来识别和防止SQL注入攻击。通过实际案例分析,帮助读者理解SQL注入的危害,并掌握有效的防御策略。 ... [详细]
  • 深入理解SAP Fiori及其核心概念
    本文详细介绍了SAP Fiori的基本概念、发展历程、核心特性、应用类型、运行环境以及开发工具等,旨在帮助读者全面了解SAP Fiori的技术框架和应用场景。 ... [详细]
  • 深入解析 Git 代码提交流程及常见问题处理
    本文详细阐述了使用 Git 进行代码提交的具体步骤,并提供了遇到常见问题时的解决方案,旨在帮助开发者更加高效地管理代码。 ... [详细]
  • 本文介绍了如何使用 Git 命令来忽略那些已经提交或者从远程仓库拉取但在本地进行了修改的文件,避免这些文件在不必要的时候被再次提交。 ... [详细]
  • 本文介绍了如何通过源码编译和PECL命令来升级Swoole扩展,详细记录了可能遇到的问题及解决方案。 ... [详细]
  • 图神经网络模型综述
    本文综述了图神经网络(Graph Neural Networks, GNN)的发展,从传统的数据存储模型转向图和动态模型,探讨了模型中的显性和隐性结构,并详细介绍了GNN的关键组件及其应用。 ... [详细]
  • 本文旨在为初学者提供一个详细的指南,从零开始学习如何使用 ASP.NET MVC5 和 Entity Framework 6 (EF6) 搭建项目。通过逐步指导,帮助读者理解 MVC 架构的核心概念,并掌握基本的操作方法。 ... [详细]
  • 本文提供了详细的步骤,指导用户如何下载并安装 Git 的中文语言包,以提升用户体验。 ... [详细]
  • 本文探讨了在Qt框架下实现TCP多线程服务器端的方法,解决了一个常见的问题:服务器端仅能与最后一个连接的客户端通信。通过继承QThread类并利用socketDescriptor标识符,实现了多个客户端与服务器端的同时通信。 ... [详细]
  • 本文介绍了如何利用snownlp库对微博内容进行情感分析,包括安装、基本使用以及如何自定义训练模型以提高分析准确性。 ... [详细]
  • 抽象工厂模式 c++
    抽象工厂模式包含如下角色:AbstractFactory:抽象工厂ConcreteFactory:具体工厂AbstractProduct:抽象产品Product:具体产品https ... [详细]
  • 解决Win7中BAT文件无法设置管理员权限的问题
    本文介绍了一种通过创建快捷方式并使用其高级属性中的“以管理员身份运行”选项来解决Windows 7系统下BAT文件无法直接设置为管理员权限的方法。 ... [详细]
  • 重新审视Kubernetes的必要性
    近期,我注意到不少人误以为我是Kubernetes的推广者。实际上,我只是分享了一些适合用Kubernetes解决的案例。本文旨在探讨Kubernetes的适用场景,并提供一些替代方案。 ... [详细]
  • UMPlatForm.NET 5.1 版本数据字典管理功能解析
    本文介绍了 UMPlatForm.NET 5.1 版本中的数据字典管理模块,探讨了该模块如何支持平台的数据共享与管理,以及如何通过用户和角色权限来增强系统的安全性。 ... [详细]
  • 酷家乐 Serverless FaaS 产品实践探索
    本文探讨了酷家乐在 Serverless FaaS 领域的实践与经验,重点介绍了 FaaS 平台的构建、业务收益及未来发展方向。 ... [详细]
author-avatar
fuvogsda99363818
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有