SQL语法
NCache 提供了一个 类 SQL 带有扩展搜索选项的查询语法。该查询语法允许您从缓存中检索特定的投影。您还可以指定 * 在投影中,从缓存中检索所有索引属性,进一步强调其类似 SQL 的行为。
注意:
NCache 还支持对旧查询语法的向后兼容性。
以下是标准 NCache 类似 SQL 的查询语法,包括可选参数 WHERE, GROUP BY和 ORDER BY 条款:
SELECT <projections> FROM <type> [WHERE <expression>] [GROUP BY <objectAttributes>] [ORDER BY <orderArguments>]
支持的 SQL 投影
您可以在查询中指定要投影的列。以下是列表: NCache- 支持的预测:
*返回所有索引属性和 命名标签 作为单独的列。ColumnName返回满足查询条件的对象的指定列。$VALUE$返回缓存中存储的实际对象。$GROUP$: 返回 群 与满足 WHERE 子句中条件的对象相关的对象。$TAG$: 返回 标签 与满足 WHERE 子句中条件的对象相关的对象。Projection functions返回聚合函数的输出,包括:- SUM(标识符)
- 数数(*)
- 最小值(标识符)
- 最大(标识符)
- AVG(标识符)
注意:
您可以组合使用上述任何一种投影,除了 *,因为它只能单独指定。
指定目标类型和数据结构
扩展我们之前的类似 SQL 的查询语法, Type 属性可以指定以下之一:
Fully Qualified Name(FQN)索引类型。$DataType$(针对数据结构)$Text$(适用于 System.String 类型)。
重要提示
NCache 要求所有可搜索的属性 索引 在使用它们之前。
句法
NCache SQL 语法提供了一种强大的高性能机制,可以使用众所周知的类 SQL 结构从分布式缓存中查询数据。它支持标准投影、逻辑运算符和聚合函数, NCache 允许应用程序根据特定属性而不是仅根据主键来过滤索引缓存对象,从而减少网络开销并增强应用程序的可扩展性。
下面的例子进一步说明了 NCache- 支持查询语法,假设用户正在处理 产品 类。
基本查询运算符
基本查询运算符允许您定义从数据库检索特定数据的条件。以下是一些常见的查询运算符及其使用示例:
| 操作者 | 描述 | 使用(示例) |
|---|---|---|
= OR == |
等于。 | SELECT * From Product WHERE ProductID == 10 |
!= OR <> |
不等于。 | SELECT * From Product WHERE ProductID <> 8 |
< |
少于。 | SELECT ProductName From Product WHERE Price < 87 |
> |
比...更棒。 | SELECT ProductName From Product WHERE Price > 77 |
<= |
小于等于。 | SELECT UnitsInStock From Product WHERE Price <= 68 |
>= |
大于等于。 | SELECT UnitsInStock From Product WHERE Price >= 98 |
IS NULL |
检查一个值是否 NULL. |
SELECT ProductName From Product WHERE Description IS NULL |
IN |
在一个范围内。 | SELECT * From Product WHERE Category IN ('Fruit','Vegetable') |
LIKE |
主要用于基于通配符的搜索。 | SELECT ProductID From Product WHERE ProductName LIKE ? |
逻辑查询运算符
您可以将两个不同的表达式与 OR 和 AND 表达式进一步缩小查询范围。 您还可以组合运算符,例如 NULL, LIKE, IN等,与 NOT 运算符来扩大您的搜索范围。 下面通过各自的示例对所有这些运算符进行了解释。
| 操作者 | 描述 | 使用(示例) |
|---|---|---|
AND |
检索两个或多个条件的合并结果集。 | SELECT ProductID From Product WHERE ProductName = 'Chai' AND Category ='Edibles' |
OR |
检索满足任一条件的结果集。 | SELECT ProductID From Product WHERE ProductName = 'Chai' OR Category = 'Edibles' |
NOT |
检索与给定条件不匹配的结果集。 | SELECT ProductName From Product WHERE ProductID NOT IN (10,15,20) |
聚合函数
你可以计算 SUM, COUNT, AVG, MIN 或 MAX 使用以下函数获取指定的查询结果集。
| 操作者 | 描述 | 使用(示例) |
|---|---|---|
SUM |
计算指定条件的结果集的总和。 | SELECT SUM(Product.UnitsAvailable) From Product WHERE Category = ? |
COUNT |
计算指定条件的结果集计数。 | SELECT COUNT(*) From Product WHERE ShippingDate IS NULL |
AVG |
根据指定条件计算结果集的平均值。 | SELECT AVG(Product.Price) From Product WHERE Category = ? |
MIN |
返回符合指定条件的结果集的最小值。 | SELECT MIN(Product.Price) From Product WHERE Category = ? |
MAX |
返回符合指定条件的结果集的最大值。 | SELECT MAX(Product.Price) From Product WHERE Category = ? |
其他
下面是一些其他 SQL 运算符支持的示例 NCache在以下背景下进行了展示: 产品 类。
| 操作者 | 描述 | 使用(示例) |
|---|---|---|
GROUP BY |
基于聚合函数对数据进行分组。 | SELECT Category, Count(*) FROM Product WHERE UnitsInStock < 15 GROUP BY Category |
ORDER BY |
根据条件以降序或升序对结果集进行排序。 | SELECT * FROM Product WHERE Category = 'Edibles' ORDER BY Price |
DateTime.Now |
检索关于当前日期时间的结果集。 | SELECT * FROM Order WHERE OrderDate < DateTime.Now |
DateTime |
引用任何特定的日期时间兼容字符串,并允许您检索与指定日期时间相关的结果集。 | SELECT OrderID FROM Order WHERE OrderDate = DateTime('2000-1-15') |
转义序列
在编写内联查询时,您现在可以使用 ', \n, \b和 \t 作为字符的转义序列。 以下示例进一步解释了这一点。
| 转义序列 | 使用(示例) |
|---|---|
| ' | SELECT * from FQN.Class where IndexedAttribute LIKE 'D\\'Angelo' |
| \n | SELECT * from FQN.Class where IndexedAttribute LIKE 'D\\n Angelo' |
| \b | SELECT * from FQN.Class where IndexedAttribute LIKE 'D\\b Angelo' |
| \t | SELECT * from FQN.Class where IndexedAttribute LIKE 'D\\t Angelo' |
与 LIKE 内联查询中的运算符,您现在可以使用通配符 * 和 ? 使用语法搜索字符 \\* 和 \\? 分别。 以下示例详细解释了这一点。
| 人物 | 使用(示例) |
|---|---|
| * | SELECT * from FQN.Class where IndexedAttribute LIKE 'Hello\\*World' |
| ? | SELECT * from FQN.Class where IndexedAttribute LIKE 'What is your name\\?' |
参见
.NET: Alachisoft.NCache.客户.服务 命名空间。
Java的: com.alachisoft.ncache.client.services 包。
Python: ncache.客户端.服务 模块。
节点.js: 缓存 类。