📅  最后修改于: 2020-11-26 05:24:10             🧑  作者: Mango
与RDBMS相似,OrientDB支持不同类型的SQL查询以从数据库检索记录。在检索记录时,我们具有不同的查询变体或选项以及select语句。
以下语句是SELECT命令的基本语法。
SELECT [ ] [ FROM [ LET * ] ]
[ WHERE * ]
[ GROUP BY * ]
[ ORDER BY * [ ASC|DESC ] * ]
[ UNWIND * ]
[ SKIP ]
[ LIMIT ]
[ FETCHPLAN ]
[ TIMEOUT [ ] ]
[ LOCK default|record ]
[ PARALLEL ]
[ NOCACHE ]
以下是上述语法中有关选项的详细信息。
FROM-表示要查询的对象。这可以是类,集群,单个记录ID,记录ID集。您可以将所有这些对象指定为目标。
WHERE-指定过滤结果集的条件。
LET-指示在投影,条件或子查询中使用的上下文变量。
GROUP BY-指示将记录分组的字段。
ORDER BY-指示字段按顺序排列记录。
UNWIND-指定要在其上展开记录集合的字段。
跳过-定义要从结果集的开头跳过的记录数。
LIMIT-指示结果集中的最大记录数。
FETCHPLAN-指定定义要如何获取结果的策略。
超时-定义查询的最长时间(以毫秒为单位)。
LOCK-定义锁定策略。 DEFAULT和RECORD是可用的锁定策略。
PARALLEL-对“ x”个并发线程执行查询。
NOCACHE-定义是否要使用缓存。
让我们考虑在上一章中创建的以下Customer表。
Sr.No. | Name | Age |
---|---|---|
1 | Satish | 25 |
2 | Krishna | 26 |
3 | Kiran | 29 |
4 | Javeed | 21 |
5 | Raja | 29 |
尝试其他选择查询以从“客户”表中检索数据记录。
方法1-您可以使用以下查询从Customer表中选择所有记录。
orientdb {db = demo}> SELECT FROM Customer
如果上面的查询成功执行,您将获得以下输出。
----+-----+--------+----+-------+----
# |@RID |@CLASS |id |name |age
----+-----+--------+----+-------+----
0 |#11:0|Customer|1 |satish |25
1 |#11:1|Customer|2 |krishna|26
2 |#11:2|Customer|3 |kiran |29
3 |#11:3|Customer|4 |javeed |21
4 |#11:4|Customer|5 |raja |29
----+-----+--------+----+-------+----
方法2-选择名称以字母“ k ”开头的所有记录。
orientdb {db = demo}> SELECT FROM Customer WHERE name LIKE 'k%'
或者,您可以在上面的示例中使用以下查询。
orientdb {db = demo}> SELECT FROM Customer WHERE name.left(1) = 'k'
如果上面的查询成功执行,您将获得以下输出。
----+-----+--------+----+-------+----
# |@RID |@CLASS |id |name |age
----+-----+--------+----+-------+----
0 |#11:1|Customer|2 |krishna|26
1 |#11:2|Customer|3 |kiran |29
----+-----+--------+----+-------+----
方法3-选择id,从Customer表中命名记录,并使用大写字母命名。
orientdb {db = demo}> SELECT id, name.toUpperCase() FROM Customer
如果上面的查询成功执行,您将获得以下输出。
----+--------+----+-------
# |@CLASS |id |name
----+--------+----+-------
0 |null |1 |SATISH
1 |null |2 |KRISHNA
2 |null |3 |KIRAN
3 |null |4 |JAVEED
4 |null |5 |RAJA
----+--------+----+-------
方法4-从“客户”表中选择年龄在25到29之间的所有记录。
orientdb {db = demo}> SELECT FROM Customer WHERE age in [25,29]
如果上面的查询成功执行,您将获得以下输出。
----+-----+--------+----+-------+----
# |@RID |@CLASS |id |name |age
----+-----+--------+----+-------+----
0 |#11:0|Customer|1 |satish |25
1 |#11:2|Customer|3 |kiran |29
2 |#11:4|Customer|5 |raja |29
----+-----+--------+----+-------+----
方法5-从“客户”表中选择所有记录,其中任何字段包含单词“ sh”。
orientdb {db = demo}> SELECT FROM Customer WHERE ANY() LIKE '%sh%'
如果上面的查询成功执行,您将获得以下输出。
----+-----+--------+----+-------+----
# |@RID |@CLASS |id |name |age
----+-----+--------+----+-------+----
0 |#11:0|Customer|1 |satish |25
1 |#11:1|Customer|2 |krishna|26
----+-----+--------+----+-------+----
方法6-从“客户”表中选择所有记录,按年龄降序排列。
orientdb {db = demo}> SELECT FROM Customer ORDER BY age DESC
如果上面的查询成功执行,您将获得以下输出。
----+-----+--------+----+-------+----
# |@RID |@CLASS |id |name |age
----+-----+--------+----+-------+----
0 |#11:2|Customer|3 |kiran |29
1 |#11:4|Customer|5 |raja |29
2 |#11:1|Customer|2 |krishna|26
3 |#11:0|Customer|1 |satish |25
4 |#11:3|Customer|4 |javeed |21
----+-----+--------+----+-------+----