Orientdb 简明教程

OrientDB - Display Records

类似于 RDBMS,OrientDB 支持不同的 SQL 查询类型以从数据库中检索记录。在检索记录时,我们有不同的查询变体或选项以及 select 语句。

以下语句是 SELECT 命令的基本语法。

SELECT [ <Projections> ] [ FROM <Target> [ LET <Assignment>* ] ]
   [ WHERE <Condition>* ]
   [ GROUP BY <Field>* ]
   [ ORDER BY <Fields>* [ ASC|DESC ] * ]
   [ UNWIND <Field>* ]
   [ SKIP <SkipRecords> ]
   [ LIMIT <MaxRecords> ]
   [ FETCHPLAN <FetchPlan> ]
   [ TIMEOUT <Timeout> [ <STRATEGY> ] ]
   [ LOCK default|record ]
   [ PARALLEL ]
   [ NOCACHE ]

以下是上文中选项的详细信息。

<Projections> - 指示您希望从查询中提取作为结果记录集的数据。

FROM - 表示要查询的对象。这可以是类、集群、单个记录 ID、记录 ID 集合。您可以将所有这些对象指定为目标。

WHERE - 指定用于过滤结果集的条件。

LET - 表示用于投影、条件或子查询的上下文变量。

GROUP BY - 表示用于对记录进行分组的字段。

ORDER BY - 表示用于按顺序排列记录的文件。

UNWIND - 指定用于解开记录集合的字段。

SKIP - 定义从结果集开始要跳过的记录数。

LIMIT - 表示结果集中记录的最大数量。

FETCHPLAN - 指定定义如何获取结果的策略。

TIMEOUT - 定义查询的最大时间(以毫秒为单位)。

LOCK - 定义锁定策略。DEFAULT 和 RECORD 是可用的锁定策略。

PARALLEL - 执行针对“x”个并发线程的查询。

NOCACHE − 定义是否要使用缓存。

Example

让我们考虑一下上一章中创建的以下 Customer 表。

Sr.No.

Name

Age

1

Satish

25

2

Krishna

26

3

Kiran

29

4

Javeed

21

5

Raja

29

尝试不同的 select 查询以从 Customer 表中检索数据记录。

Method 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
----+-----+--------+----+-------+----

Method 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
----+-----+--------+----+-------+----

Method 3 − 从 Customer 表中选择 id、name 记录,这些记录中的名称为大写字母。

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
----+--------+----+-------

Method 4 − 从 Customer 表中选择所有记录,其中年龄在 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
----+-----+--------+----+-------+----

Method 5 − 从 Customer 表中选择所有记录,其中任何字段都包含单词“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
----+-----+--------+----+-------+----

Method 6 − 从 Customer 表中选择按年龄降序排列的所有记录。

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
----+-----+--------+----+-------+----