博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
GQL 参考
阅读量:2188 次
发布时间:2019-05-02

本文共 1733 字,大约阅读时间需要 5 分钟。

官网参考文档:

GQL 是一种类似于 SQL 的语言,用于从 App Engine 可扩展数据库检索数据实体。虽然 GQL 的功能与用于传统关系数据库的查询语言的功能不同,但 GQL 语法类似 SQL 的语法。

GQL 语法可以总结如下:

SELECT * FROM 
[WHERE
[AND
...]] [ORDER BY
[ASC | DESC] [,
[ASC | DESC] ...]] [LIMIT [
,]
] [OFFSET
]
:=
{< | <= | > | >= | = | != }
:=
IN
:= ANCESTOR IS

与使用 SQL 一样,GQL 关键字不区分大小写。类型和属性名称区分大小写。

GQL 查询返回零个或更多请求的类型的数据实体,如同类型的 Model 类实例。结果始终是完整的实体,所以每个 GQL 查询始终以 SELECT * FROM 开头,后面带有类型的名称。(类似于 SQL 的字段指定符始终是*。保留了 SQL 语法便于用户熟悉。)GQL 查询无法执行类似 SQL 的 [join] 查询。

可选 WHERE 子句对结果集进行过滤以得出符合一个或多个条件的实体。每个条件都使用比较运算符将实体的属性与值进行比较。如果用 AND 关键字指定了多个条件,则实体必须符合所有条件才能由查询返回。GQL 没有 OR 运算符。但是,它具有 IN 运算符,该运算符可提供一种受限形式的 OR

IN 运算符将属性的值与列表中的每一项进行比较。IN 运算符等同于许多 = 查询(每个值一个)一起进行 OR 运算。查询可以返回指定属性的值等于列表中的任何值的实体。

注意:IN!= 运算符在后台使用多个查询。例如,IN 运算符对于列表中的每一项都执行单独的基层数据库查询。返回的实体是所有基层数据库查询的交叉产物的结果,并且消除了重复项。对于任一 GQL 查询,最多允许 30 个数据库查询。

条件还可以使用 ANCESTOR IS 操作符测试实体是否采用指定的实体作为祖先。值为祖先实体的 Model 实例或 。有关祖先的详细信息,请参阅。

属性名称始终位于比较的左侧。右侧可以是以下内容之一(对应于属性的数据类型):

  • str 常量,形式为单引号括起的字符串。字符串中的单引号字符必须转义为 ''。例如:'Joe''s Diner'
  • 整数或浮点数常量。例如:42.7
  • 布尔常量,如 TRUEFALSE
  • 绑定参数值。在查询字符串中,位置参数按数字引用:title = :1 关键字参数按名称引用:title = :mytitle

绑定参数可以绑定为传递到或的位置参数或关键字参数。必须使用参数绑定来指定没有对应值常量语法的属性数据类型,包括列表数据类型。可以在 实例的生命周期中使用 方法用新值重新绑定参数绑定(例如为了有效地重复使用查询)。

可选的 ORDER BY 子句指示应按照指定属性进行排序,以升序 (ASC) 或降序 (DESC) 返回结果。如果未指定方向,其默认为ASCORDER BY 子句可以用逗号分隔列表的形式指定多个排序顺序,从左到右进行评估。

可选的 LIMIT 子句使查询在前 count 个实体后停止返回结果。LIMIT 还可以包括offset 以跳过许多结果以便找到要返回的第一个结果。如果不使用 LIMIT 子句,可选的 OFFSET 子句可以指定offset

注意:LIMIT 子句最大为 1000。如果指定了大于最大值的限制,则将使用最大值。该最大值也适用于 GqlQuery 类的 方法。

注意:与 方法的 offset 参数类似,GQL 查询字符串中的 OFFSET 不会减少从数据库抓取的实体数。它仅影响 fetch() 方法返回哪些结果。具有偏移的查询具有与偏移大小成线性关系的执行特性。

有关执行 GQL 查询、绑定参数和访问结果的信息,请参阅 类和 类方法。

转载地址:http://ngwub.baihongyu.com/

你可能感兴趣的文章
Leetcode C++《热题 Hot 100-21》581.最短无序连续子数组
查看>>
Leetcode C++《热题 Hot 100-22》2.两数相加
查看>>
Leetcode C++《热题 Hot 100-23》3.无重复字符的最长子串
查看>>
Leetcode C++《热题 Hot 100-24》5.最长回文子串
查看>>
Leetcode C++《热题 Hot 100-26》15.三数之和
查看>>
Leetcode C++《热题 Hot 100-28》19.删除链表的倒数第N个节点
查看>>
Leetcode C++《热题 Hot 100-29》22.括号生成
查看>>
Leetcode C++《热题 Hot 100-44》102.二叉树的层次遍历
查看>>
Leetcode C++《热题 Hot 100-47》236.二叉树的最近公共祖先
查看>>
Leetcode C++《热题 Hot 100-48》406.根据身高重建队列
查看>>
《kubernetes权威指南·第四版》第二章:kubernetes安装配置指南
查看>>
Leetcode C++《热题 Hot 100-49》399.除法求值
查看>>
Leetcode C++《热题 Hot 100-51》152. 乘积最大子序列
查看>>
Leetcode C++ 《第181场周赛-1》 5364. 按既定顺序创建目标数组
查看>>
Leetcode C++ 《第181场周赛-2》 1390. 四因数
查看>>
阿里云《云原生》公开课笔记 第一章 云原生启蒙
查看>>
阿里云《云原生》公开课笔记 第二章 容器基本概念
查看>>
阿里云《云原生》公开课笔记 第三章 kubernetes核心概念
查看>>
阿里云《云原生》公开课笔记 第四章 理解Pod和容器设计模式
查看>>
阿里云《云原生》公开课笔记 第五章 应用编排与管理
查看>>