特点:
SQL就像简单的查询语言Neo4j CQL
它遵循属性图数据模型
它通过使用Apache Lucence支持索引
它支持UNIQUE约束
它它包含一个用于执行CQL命令的UI:Neo4j数据浏览器
它支持完整的ACID(原子性,一致性,隔离性和持久性)规则
它采用原生图形库与本地GPE(图形处理引擎)
它支持查询的数据导出到JSON和XLS格式
它提供了REST API,可以被任何编程语言(如Java,Spring,Scala等)访问
它提供了可以通过任何UI MVC框架(如Node JS)访问的Java脚本
它支持两种Java API:Cypher API和Native Java API来开发Java应用程序
优点:
它很容易表示连接的数据
它非常容易地表示半结构化数据
Neo4j CQL查询语言命令是人性化的可读格式,非常容易学习
它使用简单而强大的数据模型
它不需要复杂的连接来检索连接的/相关的数据,因为它很容易检索它的相邻节点或关系细节没有连接或索引
属性图模型规则:
表示节点,关系和属性中的数据
节点和关系都包含属性
关系连接节点
属性是键值对
节点用圆圈表示,关系用方向键表示。
关系具有方向:单向和双向。
每个关系包含“开始节点”或“从节点”和“到节点”或“结束节点”
CQL
它是Neo4j图形数据库的查询语言。
它是一种声明性模式匹配语言
它遵循SQL语法。
它的语法是非常简单且人性化、可读的格式。
常用的Neo4j CQL命令:
1。CREATE: 创建
使用场景:
CREATE (<node-name>:<label-name>)
<node-name>
它是我们要创建的节点名称。<label-name>
它是一个节点标签名称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>
属性是键值对。 定义将分配给创建节点的属性的值在没有属性的节点之间创建关系
使用属性创建节点之间的关系
为节点或关系创建单个或多个标签
MATCH (<node-name>:<label-name>)
RETURN <node-name>.<property1-name>,........<node-name>.<propertyn-name>
MATCH Command RETURN Command
MATCH (<node1-label-name>:<node1-name>),(<node2-label-name>:<node2-name>)
CREATE
(<node1-label-name>)-[<relationship-label-name>:<relationship-name>]->(<node2-label-name>)
RETURN <relationship-label-name>
<node1-name>
它用于创建关系的“From Node”的名称。<node1-label-name>
它用于创建关系的“From Node”的标签名称。<node2-name>
它用于创建关系的“To Node”的名称。<node2-label-name>
它用于创建关系的“To Node”的标签名称。<relationship-name>
这是一个关系的名称。<relationship-label-name>
它是一个关系的标签名称。MATCH (<node1-label-name>:<node1-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>
<define-properties-list>
它是分配给新创建关系的属性(名称 - 值对)的列表。CREATE
(<node1-label-name>:<node1-name>)-
[<relationship-label-name>:<relationship-name>]->
(<node1-label-name>:<node1-name>)
RETURN <relationship-label-name>
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>
MATCH
(<node1-label-name>)-[<relationship-label-name>:<relationship-name>]->(<node2-label-name>)
RETURN <relationship-label-name>
CREATE (<node1-name>:<label1-name>)-
[(<relationship-name>:<relationship-label-name>)]
->(<node2-name>:<label2-name>)
WHERE <condition>
WHERE <condition> <boolean-operator> <condition>
<condition>
语法: <property-name> <comparison-operator> <value>
<property-name>
<属性名称> 它是节点或关系的属性名称。<comparison-operator>
<比较运算符> 它是Neo4j CQL比较运算符之一。请参考下一节查看Neo4j CQL中可用的比较运算符。<value>
<值> 它是一个字面值,如数字文字,字符串文字等。 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 (e:Employee)
RETURN e.id,LOWER(e.name),e.sal,e.deptno
MATCH (e:Employee) RETURN COUNT(*)