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 - 定義鎖定策略。 DEFAULTRECORD是可用的鎖定策略。
  • 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表中選擇idname的記錄,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 - 選擇年齡在2529範圍內的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 
----+-----+--------+----+-------+----