与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- 表示要查询的对象。 这可以是一个类,群集,单个记录标识,一组记录标识。可以将所有这些对象指定为目标。WHERE- 指定过滤结果集的条件。LET- 表示在投影,条件或子查询中使用的上下文变量。GROUP BY- 表示分组记录的字段。ORDER BY- 表示按顺序排列记录的字段。UNWIND- 指定展开记录集合的字段。SKIP- 定义要从结果集开始跳过的记录数。LIMIT- 表示结果集中记录的最大数量。FETCHPLAN- 指定定义如何获取结果的策略。TIMEOUT- 定义查询的最大时间(以毫秒为单位)。LOCK- 定义锁定策略。DEFAULT和RECORD是可用的锁定策略。PARALLEL- 对'x'并发线程执行查询。NOCACHE- 定义是否要使用缓存。
示例
让我们考虑在前一章中创建的Customer表。
| 编号 | 名字 | 年龄 |
|---|---|---|
| 1 | Satish | 25 |
| 2 | Krishna | 26 |
| 3 | Kiran | 29 |
| 4 | Javeed | 21 |
| 5 | Raja | 29 |
尝试使用不同的select查询来从Customer表中检索数据记录。
方法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%'
如果上述查询成功执行,您将得到以下输出。
----+-----+--------+----+-------+----
# |@RID |@CLASS |id |name |age
----+-----+--------+----+-------+----
0 |#11:1|Customer|2 |krishna|26
1 |#11:2|Customer|3 |kiran |29
----+-----+--------+----+-------+----
方法3 - 从Customer表中选择id,name的记录,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
----+--------+----+-------
方法4 - 选择年龄在25到29范围内的Customer表中的所有记录。
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 - 从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
----+-----+--------+----+-------+----
方法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
----+-----+--------+----+-------+----
上一篇:
OrientDB插入记录
下一篇:
OrientDB加载记录
