图数据库(neo4j) -CQL

开启远程访问

一、对于3.0以前的版本

在安装目录的 $NEO4J_HOME/conf/neo4j.conf 文件内,找到下面一行,将注释#号去掉就可以了 #dbms.connector.https.address=localhost:7473 改为 dbms.connector.https.address=0.0.0.0:7473 这样,远程其他电脑可以用本机的IP或者域名后面跟上7474 端口就能打开web界面了 如: https://:7473

当然,你的操作系统的防火墙也要确保开放了7474端口才行,防火墙怎样开放请自行针对自己的操作系统查找文档

二、对于3.1及以后的版本

在安装目录的 $NEO4J_HOME/conf/neo4j.conf 文件内,找到下面一行,将注释#号去掉就可以了 dbms.connectors.default_listen_address=0.0.0.0

数据类型
No数据类型含义
1boolean布尔;true or false
2int整数 32 位
3short16位整数
4byte8位整数
5long64位整数
6float32位浮点数
7double64位浮点数
8char字符 16位
9string字符串
> 创建数据库

图形数据库对数据库的操作和mysql的比较相似,mysql数据库的思维可以拿来用,但是语法不同,需要特别注意。

create database <database-name>  //创建数据库
show databases; //查询现在所有数据库
show default database; //查询默认数据库
:use <database-name>   //选择使用一个数据库
stop database <db-name> //停止使用数据库

有可能报异常,创建数据库不成功 > 参考解决方案

> create 命令
/**
* <node-name> 我们要创建的节点的名称,它作为数据库存储的唯一标识存在,我们不
* 能用这个来访问节点信息
* <label-name>  这个是节点的标签名称
*/

//创建没有属性的节点.我们使用该名称
create (<node-name>:<label-name>)    
来访问节点信息

//创建带有属性的节点
create(<node-name>:<label-name>{
	//如果属性值是字符串的话,value要使用引号
	<Property1-name>:<Propertyn1-value>,
	<Property1-name>:<Propertyn1-value>
}) 


> match 命令

获取节点信息(节点、属性、与之有关系的节点的信息)

/**
* 切记不可以直接单独使用Match命令,否则会报语法错误,不许结合retuen或者update使用
*/
//返回 <label-name> 下的内容
Match(<node-name>:<label-name>) return <node-name>

//查询条件也可以添加具体的属性信息,例如下面的这句话。查询Dept下,deptno为10的节点
//信息
Match(dept:Dept{deptno:10})

//还可以结合where使用,当deptno = 10 时,返回该节点的节点信息
Match(dept:Dept) where dept.deptno = 10 return dept  

 

在这里插入图片描述

> return 命令
  • 返回节点信息,也可以返回节点的属性值
  • 和match结合使用
  • 多个返回值使用逗号间隔
关系基础
  • 单向关系
  • 双向关系
  • 使用 -> 表示关系
> create relationship order
/**
* 1、create 命令可以为节点创建多个<label-name>
* eg:create(user:USER1:USER2:USER3)
* 
* 2、注意点: -[]-> 前后节点名称都要使用()括住
* 下面这种关系,对a来说是外向关系,对于b点来说是传入关系
* 
* 3、-[<relationship-name>:<relationship-label-name>]-> 
* 同样和节点的访问方式一样,只可以通过 relationship-label-name
* 来访问节点信息
*/
create(a:A{aname:"demo"})-[is:IS]->(b:B{bname:"demo2"})   //单向关系
create(a:A{aname:"demo"})<-[is:IS]->(b:B{bname:"demo2"})   //双向关系
> where 命令

过滤match以后的信息

普通语法
/**
* where命令后面的条件也可以使用布尔运算符组装复杂条件,
* 和平时写sql的判断条件一致,但是
*/
match(demo:DEMO) where <condition> RETURN demo
Neo4j CQL中的布尔运算符

Neo4j支持以下布尔运算符在Neo4j CQL WHERE子句中使用以支持多个条件。

No.布尔运算符描述
1AND它是一个支持AND操作的Neo4j CQL关键字。
2OR它是一个Neo4j CQL关键字来支持OR操作。
3NOT它是一个Neo4j CQL关键字支持NOT操作。
4XOR它是一个支持XOR操作的Neo4j CQL关键字。
Neo4j CQL中的比较运算符

Neo4j 支持以下的比较运算符,在 Neo4j CQL WHERE 子句中使用来支持条件。

No.布尔运算符描述
1.=它是Neo4j CQL“等于”运算符。
2.<>它是一个Neo4j CQL“不等于”运算符。
3.<它是一个Neo4j CQL“小于”运算符。
4.>它是一个Neo4j CQL“大于”运算符。
5.<=它是一个Neo4j CQL“小于或等于”运算符。
6.>=它是一个Neo4j CQL“大于或等于”运算符。
使用WHERE子句创建关系
/**
* 注意:where条件中创建关系的时候,使用的是node-label-name,不用node-name,否则命令执行完毕会出现两个空节点,如下图:
*/
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(a:A),(b:B) create (a)-[is:IS]->(b);

在这里插入图片描述

> delete 命令
  • 不可以单独使用,要配合match命令,和return一样
  • 永久删除数据库节点和相关的节点和关系
  • 删除节点
//要删除的节点名称列表,使用(,)分隔
delete <node-name-list> 
  • 如果节点和其他 节点存在关联关系,需要先删除关系,在删除节点
    -在这里插入图片描述
删除节点和节点之间的关系
delete <node-name1>,<node-name2>,<relationship-name>
//具体应用
match(a:A)-[is:IS]->(b:B) delete a,b,is
> remove 命令
  • 删除节点的属性
  • 删除节点的标签名称 label-name
  • 删除节点关系
  • 和delete的区别在于该命令不可以删除节点,知识修改节点中的一部分
  • 不可以单独使用
remove <property-name-list>
//实际应用
match(user:USER{deptno:10}) remove user.uname return user 
//上面这句命令相当于sql是:
alter table user remove column uname
select * from user where deptno = 10

/**
*删除节点标签名,<label-name-list>是标签名称列表,
只不过实际要写成<node-name>:<label-name>,....形式

*/
remove <label-name-list> 
> set 命令
  • 和remove是一种类型的命令,只不过set命令用于添加属性和标签
> limit 命令

限制查询返回结果的条数

  • 不可以单独使用
  • 意思是显示number条结果,默认从顶部开始算起
/**
* 注意这个地方只有一个数字,他表示显示前几行。不要和sql混淆,作用类似.但是语法不同
*  表示的意思也有差别,sql的limit startNum,endNum 代表一个区间,可以自己设置。而图数据库的limit num 表示显示前几行
*/
limit <number>   
> skip 命令

限制查询返回结果的条数

  • 和limit的作用类似,表示的意思是显示跳过number行显示剩下的结果
  • 可以通过 skip x limit y 设置,从x开始显示,显示y条,这就和sql的limit startNum,endNum一样了
> merge 命令
  • 这个命令可以创建节点。该命令会先检查创建的节点在数据库中是否已经存在,如果已经存在,则不创建新的,否则才会创建新的节点。
merge(<node-name>:<label-name>{property-name:property-value})
> in 命令

和sql的in是一样的,只不过这里语法需要注意

in [ <Collection-of-values> ] //使用中括号
null值

创建节点的时候不对属性赋值,创建的节点的属性数据库使用NULL值来填充。

  • 规避null
    • 使用 where条件 is not null
Sorting排序
order by
  • 默认升序排序(asc)
  • 设置降序将其改为desc
  • 和mysql的升序降序类似,但是要结合match命令,match-return命令就和sql中的select意思一样。
Union 合并

与sql一样,它也有两种形式:

  • union 揉和两个结果集,公共部分(两个结果集都存在的结果)只显示一个结果集的

限制:
结果列类型和来自两组结果的名称必须匹配,这意味着列名称应该相同列的数据类型应该相同

/**
* 下面这个命令会报错,因为cc.id和dc.id虽然数据类型是一样的而且也是相同的id列,
* 但是他们的前缀cc和dc不同,解决方式是使用as命令,起别名。
*/
MATCH (cc:CreditCard) RETURN cc.id,cc.number
   UNION
MATCH (dc:DebitCard) RETURN dc.id,dc.number

//解决方案
MATCH (cc:CreditCard)
RETURN cc.id as id,cc.number as number,cc.name as name,
   cc.valid_from as valid_from,cc.valid_to as valid_to
UNION
MATCH (dc:DebitCard)
RETURN dc.id as id,dc.number as number,dc.name as name,
   dc.valid_from as valid_from,dc.valid_to as valid_to
  • union all 合并两个结果集,这个不会去重。最终结果会有重复。具体语法参照union
id属性 命令

id是节点和关系的默认内部属性,当我们创建一个新的节点的时候,neo4j将为内部使用分配一个数组。自动递增

函数
字符串相关

常用字符串函数列表

No功能描述
1UPPER它用于将所有字母更改为大写字母。
2LOWER它用于将所有字母改为小写字母。
3SUBSTRING它用于获取给定String的子字符串。
4REPLACE它用于替换一个字符串的子字符串。
聚合函数常用

聚合函数列表

No.聚集功能描述
1COUNT它返回由MATCH命令返回的行数。可以是*
2MAX它从MATCH命令返回的一组行返回最大值。
3MIN它返回由MATCH命令返回的一组行的最小值。
4SUM它返回由MATCH命令返回的所有行的求和值。
5AVG它返回由MATCH命令返回的所有行的平均值。
关系函数

上两种函数和sql的类似,但是这个需要注意一下

  • STARTNODE() 它用于知道关系的开始节点
match(a:A)-[is:IS]->(b:B) return startnode(is)
  • ENDNODE() 输出关系的结束节点
  • ID() 输出关系的id
  • type()输出关系的类型信息,实操返回的是关系的label-name
索引

索引的作用和sql的一样,都是为例加快数据库查询性能

创建索引
//在节点或者关系名为<label-name>的<property-name>创建索引
create index no:<label-name> (property-name)
删除索引
//在节点或者关系名为<label-name>的<property-name>创建索引
drop index no:<label-name> (property-name)
唯一索引(unique)
//如果数据库中的节点或者关系属性有重复,则无法创建索引
create constraint on <label-name> assert <property-name> is unique	

//删除索引
drop constraint on <label-name> assert <property-name> is unique	
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Data modeling example...................................................................................................................... 8 Example of a music service..................................................................................................... 8 Compound keys and clustering................................................................................................9 Collection columns..................................................................................................................10 Adding a collection to a table.................................................................................................10 Updating a collection.............................................................................................................. 10 Indexing a collection...............................................................................................................11 Filtering data in a collection................................................................................................... 12 When to use a collection........................................................................................................12 Indexing............................................................................................................................................. 12 When to use an index............................................................................................................13 Using an index........................................................................................................................13 Using multiple indexes............................................................................................................14 Building and maintaining indexes..................................................................................................... 14 Working with legacy applications...................................................................................................... 14 Using a CQL query

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值