orientdb常用sql 查询语句

本文简单的介绍了一些常用的orientDB查询语句,仅供参考。

查询语句

Record attributes

toJson()

1
2
3
4
5
6
7
8
9
orientdb {db=demo}> select @this.toJSON() from ouser
+----+------------------------------------------------------------------------------------------------------------------------------------+
|# |this |
+----+------------------------------------------------------------------------------------------------------------------------------------+
|0 |{"@type":"d","@rid":"#5:0","@version":1,"@class":"OUser","name":"admin","password":"{PBKDF2WithHmacSHA256}F094D23F35FDBF203FA9CFF...|
|1 |{"@type":"d","@rid":"#5:1","@version":1,"@class":"OUser","name":"reader","password":"{PBKDF2WithHmacSHA256}D69C58952FFC2F66BBD174...|
|2 |{"@type":"d","@rid":"#5:2","@version":1,"@class":"OUser","name":"writer","password":"{PBKDF2WithHmacSHA256}B8369621F7917A4850F356...|
+----+------------------------------------------------------------------------------------------------------------------------------------+

@rid

1
2
select from Profile where @rid = #10:44 (不推荐,比较慢)
select from #10:44 (推荐)

@fields

1
2
3
4
5
6
7
8
9
orientdb {db=demo}> select @fields from ouser
+----+----------------------------+
|# |fields |
+----+----------------------------+
|0 |[name,password,status,roles]|
|1 |[name,password,status,roles]|
|2 |[name,password,status,roles]|
+----+----------------------------+

@size

returns the record size in bytes

1
2
3
4
5
6
7
8
9
orientdb {db=demo}> select @size from ouser
+----+----+
|# |size|
+----+----+
|0 |171 |
|1 |172 |
|2 |172 |
+----+----+

@class

Mathematics Operators

1
select eval( "amount * 120 / 100 - discount" ) as finalPrice from Order

Aggregated mode

1
SELECT SUM(salary) FROM employee

expand()

1
2
3
4
5
6
7
8
orientdb {db=demo}> select from #5:0
+----+----+------+-----+------+------+------------------------------------------------------------------------------------------------------+
|# |@RID|@CLASS|name |status|roles |password |
+----+----+------+-----+------+------+------------------------------------------------------------------------------------------------------+
|0 |#5:0|OUser |admin|ACTIVE|[#4:0]|{PBKDF2...|
+----+----+------+-----+------+------+------------------------------------------------------------------------------------------------------+
(roles是一个link)

查看#4:0

1
2
3
4
5
6
7
orientdb {db=demo}> select from #4:0
+----+----+------+-----+-------------+----+------------------------------+
|# |@RID|@CLASS|name |inheritedRole|mode|rules |
+----+----+------+-----+-------------+----+------------------------------+
|0 |#4:0|ORole |admin| |1 |{database.bypassRestricted=31}|
+----+----+------+-----+-------------+----+------------------------------+

将roles展开

1
2
3
4
5
6
7
orientdb {db=demo}> select expand(roles) from #5:0
+----+----+------+-----+-------------+----+------------------------------+
|# |@RID|@CLASS|name |inheritedRole|mode|rules |
+----+----+------+-----+-------------+----+------------------------------+
|0 |#4:0|ORole |admin| |1 |{database.bypassRestricted=31}|
+----+----+------+-----+-------------+----+------------------------------+

count

1
SELECT COUNT(*) FROM Account

min/max/avg/sum

1
SELECT min(salary) FROM Account

date()

Syntax: date( <date-as-string> [<format>] [,<timezone>] )

1
SELECT FROM Account WHERE created <= date('2012-07-02', 'yyyy-MM-dd')

sysdate

1
2
3
4
5
6
7
8
9
orientdb {db=demo}> SELECT sysdate('dd-MM-yyyy HH:mm:ss'),roles FROM ouser
+----+-------------------+------+
|# |sysdate |roles |
+----+-------------------+------+
|0 |31-10-2017 17:33:57|[#4:0]|
|1 |31-10-2017 17:33:57|[#4:1]|
|2 |31-10-2017 17:33:57|[#4:2]|
+----+-------------------+------+

format

1
SELECT format("%d - Mr. %s %s (%s)", id, name, surname, address) FROM Account

distinct

1
SELECT distinct(name) FROM City

unionall

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
orientdb {db=demo}> select from orole
+----+----+------+----+------+----------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|# |@RID|@CLASS|mode|name |inheritedR|rules |
+----+----+------+----+------+----------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|0 |#4:0|ORole |1 |admin | |{database.bypassRestricted=31} |
|1 |#4:1|ORole |0 |reader| |{database.cluster.internal=2, database.cluster.orole=0, database=2, database.function=2, database.schema=2, database.class.ouser=0, database.cluster.ouser=0, database.system...|
|2 |#4:2|ORole |0 |writer| |{database.cluster.internal=2, database=2, database.function=2, database.schema=2, database.class.ouser=0, database.systemclusters=0, database.cluster=31, database.command=31...|
+----+----+------+----+------+----------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
orientdb {db=demo}> select unionall(@class) as class,unionall(name) as name from orole
+----+-------------------+---------------------+
|# |class |name |
+----+-------------------+---------------------+
|0 |[ORole,ORole,ORole]|[admin,reader,writer]|
+----+-------------------+---------------------+

Pagination(分页)

1
SELECT FROM <target> [WHERE ...] SKIP <records-to-skip> LIMIT <max-records>