Agens Graph常用语法总结
-
Agens Graph语法笔记
-
-
1、创建一个被称作网络的图形,并将其设置为当前图形(在数据库中,其中的”feng”和Postgre数据库的模式为同一级别,而标签和Postgre数据库的表为同一级别):
-
2、删除一个网络图形:
-
3、创建一个节点时,即使报错,也仍然会在数据库中产生一条记录:
-
4、查询personel_fkc下的所有图形:
-
5、查询name=”张子枫”的节点与所有其他节点的关系:
-
6、创建节点与节点之间的关系:
-
7、查询知识图谱关系网中,和谢娜有”夫妻”关系的人的所有好友信息:
-
8、把所有节点都查出来,同时把有关系的线也画出来:
-
9、为节点添加属性:
-
10、添加唯一性约束:
-
11、添加非空约束:
-
13、批量设置值(将每一个记录中的原有属性”name”的值赋给新增的属性”name1″):
-
14、移除节点中的指定属性:
-
15、删除属性索引:
-
16、创建属性索引:
-
17、 在AgensGraph中,可以创建几个数据库,每个数据库可以包含一个或多个模式和图形。模式用于关系表,图形对象用于图形数据。架构名称和图形名称不能相同。顶点和边被分组为标签。标签有两种:顶点标签和边标签。用户可以在数据库中创建多个图,但一次只能使用一个图。
-
18、删除唯一性约束:
-
19、创建一个顶点标签:
-
20、创建一个边缘标签:
-
21、删除顶点标签或者边缘标签语法:
-
22、DROP … CASCADE不管顶点是否绑定标签,都可以使用来删除标签,在这种情况下,具有该标签的所有数据对象都会一起删除。
-
23、更改标签:
-
24、删除指定顶点和连接到顶点的边:
-
25、批量创建图形数据语法:
-
26、合并
-
27、查询图形的所有属性:
-
Agens Graph语法笔记
1、创建一个被称作网络的图形,并将其设置为当前图形(在数据库中,其中的”feng”和Postgre数据库的模式为同一级别,而标签和Postgre数据库的表为同一级别):
create graph [if not exists] feng;
set graph_path = feng;
注意:Agens Graph不支持这两个语句分开执行,分开执行后,第二条语句执行会报错。
2、删除一个网络图形:
drop graph feng cascade;
注意:后面不加cascade会报错的。
3、创建一个节点时,即使报错,也仍然会在数据库中产生一条记录:
create(n:Personel{name:'张子枫',sex:'女',age:18})
return n;
注意:Agens Graph不支持在创建一个节点的时候同时将该节点返回。
4、查询personel_fkc下的所有图形:
match(n:personel)
return n;
*
注意:其中的”return n”和”return
“等价。
5、查询name=”张子枫”的节点与所有其他节点的关系:
match p=(n:personel{name:'张子枫'})-[:同行]->(e)
return p;
注意:当去掉中间的箭头之后进行查询时,将会查询”张子枫”指向的所有关系,和指向”张子枫”的所有关系。
6、创建节点与节点之间的关系:
match (n:personel_fkc{name:'张子枫'}),(m:personel_fkc{name:'李易峰'})
create(n)-[:同行]->(m);
注意:关系标签中的”同行”不能用单引号括起来,否则会报错,Agens Graph会默认为字符串,用双引号””括起来的。创建关系时必须要带有箭头,否则会报错。
7、查询知识图谱关系网中,和谢娜有”夫妻”关系的人的所有好友信息:
match p=(n:personel_fkc{name:'谢娜'})-[:夫妻]->(h)-[:好友]->(e)
return p;
8、把所有节点都查出来,同时把有关系的线也画出来:
match p=(n)-[]-(m)
return p;
9、为节点添加属性:
match (n:personel_fkc{name:'张子枫'})
set n.employee_id='01';
10、添加唯一性约束:
create constraint on personel_fkc assert employee_id is unique;
注意:创建完成后,可以选择对应的表,点击鼠标右键打开选择”设计表”,在”排除”面板中查看。
11、添加非空约束:
create constraint on personel_fkc assert name is not null;
注意:创建完成后,可以选择对应的表,点击鼠标右键打开选择”设计表”,在”检查”面板中查看。12、删除边缘对应的标签: drop elabel 同行;
13、批量设置值(将每一个记录中的原有属性”name”的值赋给新增的属性”name1″):
match (n:personel_fkc)
set n.name1 = name;
14、移除节点中的指定属性:
match (n:personel_fkc)
set n.name = null;
或者
match (n:personel_fkc)
remove n.name;
15、删除属性索引:
drop property index personel_fkc_name_idx1;
16、创建属性索引:
create property index on personel_fkc(name);
17、 在AgensGraph中,可以创建几个数据库,每个数据库可以包含一个或多个模式和图形。模式用于关系表,图形对象用于图形数据。架构名称和图形名称不能相同。顶点和边被分组为标签。标签有两种:顶点标签和边标签。用户可以在数据库中创建多个图,但一次只能使用一个图。
18、删除唯一性约束:
drop constraint constraint_name on label_name;
19、创建一个顶点标签:
create vlabel [if not exists] person;
create vlabel [if not exists] friend inherits(person);
20、创建一个边缘标签:
create elabel knows;
create elabel live_together;
create elabel root_mate inherits(knows,live_together);
注意:关键字VLABEL和ELABEL分别用于标识顶点和边。CREATE VLABEL将创建一个顶点标签。VLABEL只能继承VLABEL(换句话说,VLABEL不能继承ELABEL)。inherits是继承父标签的选项。如果未指定,则系统会将初始标签设置为父标签。创建复杂标签可以使用多重继承。
21、删除顶点标签或者边缘标签语法:
drop vlabel friend;
drop elabel person;
22、DROP … CASCADE不管顶点是否绑定标签,都可以使用来删除标签,在这种情况下,具有该标签的所有数据对象都会一起删除。
drop vlabel person cascade;
drop elabel knows cascade;
23、更改标签:
ALTER [ IF EXISTS ] VLABEL label_name RENAME TO new_name;
ALTER [ IF EXISTS ] VLABEL label_name OWNER TO new_owner;
ALTER [ IF EXISTS ] VLABEL label_name SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN };
ALTER [ IF EXISTS ] VLABEL label_name SET TABLESPACE new_tablespace;
ALTER [ IF EXISTS ] VLABEL label_name CLUSTER ON idxname;
ALTER [ IF EXISTS ] VLABEL label_name SET WITHOUT CLUSTER;
ALTER [ IF EXISTS ] VLABEL label_name SET LOGGED; ALTER [ IF EXISTS ] VLABEL label_name SET UNLOGGED; ALTER [ IF EXISTS ] VLABEL label_name INHERIT parent_label;
ALTER [ IF EXISTS ] VLABEL label_name NO INHERIT parent_label;
ALTER [ IF EXISTS ] VLABEL label_name DISABLE INDEX;
24、删除指定顶点和连接到顶点的边:
MATCH (n:person {name: 'Pat'})
DETACH DELETE (n);
25、批量创建图形数据语法:
CREATE (:customer {name:'Tom', city:'santa clara'}),
(:customer {name:'Summer ', city:'san jose'}),
(:customer {name:'Pat', city:'santa clara'}),
(:customer {name:'Nikki', city:'san jose'}),
(:customer {name:'Olive', city:'san francisco'});
26、合并
如果需要确保图形中存在模式,可以使用MERGE。如果图形中存在该模式,它将尝试找到该模式;否则,如果该模式不存在,它将创建该模式。如果模式存在,则将其视为MATCH子句,否则将其视为CREATE子句。MERGE是整个模式的MATCH或CREATE。这意味着如果模式中的任何元素都不存在,则AgensGraph将创建整个模式。
例如,执行如下语句,如果对应的人员”陈雪儿”的图形数据不存在,则自动create语句新建该图形数据(如果该图形数据已存在,则只设置employee_id的值):
merge (n:personel_fkc{name:'陈雪儿',age:23,sex:'女'}) set emlpoyee_id = '24';
27、查询图形的所有属性:
MATCH (n:personel_fkc) RETURN properties(n);