OrientDB查詢記錄
與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
----+-----+--------+----+-------+----