neo4jCQL

neo4j
neo4jCQL
  • 它是Neo4j图形数据库的查询语言。
  • 它是一种声明性模式匹配语言
  • 它遵循SQL语法。
  • 它的语法是非常简单且人性化、可读的格式。

Neo4j CQL命令/条款

S.No.
CQL命令/条
用法
1
CREATE
创建
创建节点,关系和属性
2
MATCH
匹配
检索有关节点,关系和属性数据
3
RETURN
返回
返回查询结果
4
WHERE
哪里
提供条件过滤检索数据
5
DELETE
删除
删除节点和关系
6
REMOVE
移除
删除节点和关系的属性
7
ORDER BY
以…排序
排序检索数据
8
SET
添加或更新标签

Neo4j CQL 函数

S.No.
定制列表功能
用法
1
String
字符串
它们用于使用String字面量
2
Aggregation
聚合
它们用于对CQL查询结果执行一些聚合操作
3
Relationship
关系
他们用于获取关系的细节,如startnode,endnode等

Neo4j CQL数据类型

用于定义节点或关系的属性
S.No.
CQL数据类型
用法
1.
boolean
用于表示布尔文字:true,false
2.
byte
用于表示8位整数
3.
short
用于表示16位整数
4.
int
用于表示32位整数
5.
long
用于表示64位整数
6.
float
I用于表示32位浮点数
7.
double
用于表示64位浮点数
8.
char
用于表示16位字符
9.
String
用于表示字符串

Neo4j CQL 

  •  CREATE命令

使用CQL“CREATE”命令
  • 创建没有属性的节点
  • 使用属性创建节点
  • 在没有属性的节点之间创建关系
  • 使用属性创建节点之间的关系
  • 为节点或关系创建单个或多个标签

创建一个没有属性的节点

命令语法
CREATE (<node-name>:<label-name>)
    语法说明
语法元素
描述
<node-name>
它是我们要创建的节点名称。
<label-name>
它是一个节点标签名称
说明

1、Neo4j数据库服务器使用此<node-name>将此节点详细信息存储在Database.As中作为Neo4j DBA或Developer,我们不能使用它来访问节点详细信息。
2、Neo4j数据库服务器创建一个<label-name>作为内部节点名称的别名。作为Neo4j DBA或Developer,我们应该使用此标签名称来访问节点详细信息。
举例
CREATE (dept:Dept)
CREATE (emp:Employee)

创建具有属性的节点

命令语法:
CREATE (
   <node-name>:<label-name>
   {    
      <Property1-name>:<Property1-Value>
      ........
      <Propertyn-name>:<Propertyn-Value>
   })
语法说明:
语法元素
描述
<node-name>
它是我们将要创建的节点名称。
<label-name>
它是一个节点标签名称
<Property1-name>...<Propertyn-name>
属性是键值对。 定义将分配给创建节点的属性的名称
<Property1-value>...<Propertyn-value>
属性是键值对。 定义将分配给创建节点的属性的值
举例:
CREATE (dept:Dept { deptno:10,dname:"Accounting",location:"Hyderabad" })
注意: 要定义字符串类型属性值,我们需要使用单引号或双引号。
CREATE (emp:Employee{id:123,name:"Lokesh",sal:35000,deptno:10})
  •  MATCH命令

MATCH 命令用于
  • 从数据库获取有关节点和属性的数据
  • 从数据库获取有关节点,关系和属性的数据
命令语法:
MATCH
(
   <node-name>:<label-name>
)
语法说明:
语法元素
描述
<node-name>
这是我们要创建一个节点名称。
<label-name>
这是一个节点的标签名称
举例:
# 查询Dept下的内容 
MATCH (dept:Dept) return dept 
# 查询Employee标签下 id=123,name="Lokesh"的节点
MATCH (p:Employee {id:123,name:"Lokesh"}) RETURN p 
 
# 查询Employee标签下name="Lokesh"的节点,使用(where命令)
 MATCH (p:Employee) WHERE p.name = "Lokesh" RETURN p

  • MATCH & RETURN匹配和返回

MATCH & RETURN用于 -
  • 检索节点的某些属性
  • 检索节点的所有属性
  • 检索节点和关联关系的某些属性
  • 检索节点和关联关系的所有属性
命令语法:
MATCH
(
   <node-name>:<label-name>
)
MATCH Command
RETURN Command
语法说明:
语法元素
描述
<node-name>
它是我们将要创建的节点名称。
<Property1-name>...<Propertyn-name>
属性是键值对。 <Property-name>定义要分配给创建节点的属性的名称

举例:

MATCH (dept: Dept)
RETURN dept.deptno,dept.dname
  • dept是节点名称
  • 这里Dept是一个节点标签名
  • deptno是dept节点的属性名称
  • dname是dept节点的属性名
MATCH (dept: Dept)
RETURN dept
    
  • 关系基础

    基于方向性,Neo4j关系被分为两种主要类型。
  • 单向关系
  • 双向关系
CREATE命令来创建两个节点之间的关系。 这些情况适用于Uni和双向关系。
  • 在两个现有节点之间创建无属性的关系
语法:
MATCH (<node1-label-name>:<nodel-name>),(<node2-label-name>:<node2-name>)
CREATE  
        (<node1-label-name>)-[<relationship-label-name>:<relationship-name>{<define-properties-list>}]->(<node2-label-name>)
RETURN <relationship-label-name>
举例
MATCH (e:Customer),(cc:CreditCard)
CREATE (e)-[r:DO_SHOPPING_WITH ]->(cc)
查询e和cc之间的关系:
MATCH (e)-[r:DO_SHOPPING_WITH ]->(cc)
RETURN r
    
  • 在两个现有节点之间创建有属性的关系
MATCH (cust:Customer),(cc:CreditCard)
CREATE (cust)-[r:DO_SHOPPING_WITH{shopdate:"12/12/2014",price:55000}]->(cc)
RETURN r
  • 在两个新节点之间创建无属性的关系
    Neo4J数据库没有这两个节点
    使用CQL CREATE命令一次创建两个结束节点和它们之间的新关系
语法:
CREATE  
   (<node1-label-name>:<node1-name>)-
   [<relationship-label-name>:<relationship-name>]->
   (<node1-label-name>:<node1-name>)
RETURN <relationship-label-name>
举例:
CREATE (fb1:FaceBookProfile1)-[like:LIKES]->(fb2:FaceBookProfile2)
  • 在两个新节点之间创建有属性的关系
语法:
CREATE  
        (<node1-label-name>:<node1-name>{<define-properties-list>})-
        [<relationship-label-name>:<relationship-name>{<define-properties-list>}]
        ->(<node1-label-name>:<node1-name>{<define-properties-list>})
RETURN <relationship-label-name>
举例:
CREATE (video1:YoutubeVideo1{title:"Action Movie1",updated_by:"Abc",uploaded_date:"10/10/2010"})-[movie:ACTION_MOVIES{rating:1}]->(video2:YoutubeVideo2{title:"Action Movie2",updated_by:"Xyz",uploaded_date:"12/12/2012"})
查询YoutubeVideo1和YoutubeVideo2之间的关系
MATCH (video1:YoutubeVideo1)-[movie:ACTION_MOVIES]->(video2:YoutubeVideo2)
RETURN movie
  • 在具有WHERE子句的两个退出节点之间创建/不使用属性的关系
  •  CREATE创建标签

    单个标签到节点
语法:
CREATE (<node-name>:<label-name>)
举例:
CREATE (google1:GooglePlusProfile)

       多个标签到节点

语法:
CREATE (<node-name>:<label-name1>:<label-name2>.....:<label-namen>)


注意:

使用colon(:)运算符来分隔节点名和标签名。
使用colon(:)运算符将一个标签名称分隔到另一个标签名称。
举例:
CREATE (m:Movie:Cinema:Film:Picture)

    单个标签到关系

语法:
CREATE (<node1-name>:<label1-name>)-
        [(<relationship-name>:<relationship-label-name>)]
        ->(<node2-name>:<label2-name>)
举例:
CREATE (p1:Profile1)-[r1:LIKES]->(p2:Profile2)
  • WHERE子句

这里就直接举例了
MATCH (emp:Employee)
WHERE emp.name = 'Abc'
RETURN emp
MATCH (emp:Employee)
WHERE emp.name = 'Abc' OR emp.name = 'Xyz'
RETURN emp
  • 使用WHERE子句创建关系

语法:
MATCH (<node1-label-name>:<node1-name>),(<node2-label-name>:<node2-name>)
WHERE <condition>
CREATE (<node1-label-name>)-[<relationship-label-name>:<relationship-name>
       {<relationship-properties>}]->(<node2-label-name>)
举例:
MATCH (cust:Customer),(cc:CreditCard)
WHERE cust.id = "1001" AND cc.id= "5001"
CREATE (cust)-[r:DO_SHOPPING_WITH{shopdate:"12/12/2014",price:55000}]->(cc)
RETURN r
  • DELETE删除
语法:
MATCH (e: Employee) DELETE e
  • DELETE节点和关系子句语法

语法:
DELETE <node1-name>,<node2-name>,<relationship-name>
举例:
MATCH (cc: CreditCard)-[rel]-(c:Customer)
DELETE cc,c,rel
  • REMOVE删除

 REMOVE命令用于
  • 删除节点或关系的标签
  • 删除节点或关系的属性
Neo4j CQL DELETE和REMOVE命令之间的主要区别 -
  • DELETE操作用于删除节点和关联关系。
  • REMOVE操作用于删除标签和属性。
Neo4j CQL DELETE和REMOVE命令之间的相似性 - 
  • 这两个命令不应单独使用。
  • 两个命令都应该与MATCH命令一起使用。
举例:
MATCH (book { id:122 })
REMOVE book.price
RETURN book
MATCH (dc:DebitCard)
REMOVE dc.cvv
RETURN dc

删除节点/关系的标签

举例:
MATCH (m:Movie)
REMOVE m:Picture
  •  SET子句

 SET 子句来执行以下操作。
  • 向现有节点或关系添加新属性
  • 添加或更新属性值
举例:
MATCH (book:Book) SET book.title = 'superstar' RETURN book
  • ORDER BY排序

提供了“ORDER BY”子句,对MATCH查询返回的结果进行排序。
可以按升序或降序对行进行排序。
默认情况下,它按升序对行进行排序。 如果要按降序对它们进行排序,需要使用DESC子句。
语法:
ORDER BY  <property-name-list>  [DESC]      
举例:
(升序)
MATCH (emp:Employee)
RETURN emp.empid,emp.name,emp.salary,emp.deptno
ORDER BY emp.name
(降序)
MATCH (emp:Employee)
RETURN emp.empid,emp.name,emp.salary,emp.deptno
ORDER BY emp.name DESC
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值