반응형
/*
-- Title : [Cyphr] Create relationship 구문
-- Tag : cypher neo4j 네오포제이 create relationship create 관계 생성
*/
■ 샘플 데이터베이스
■ 두 노드간의 관계 생성
:use book
// 관계 생성
MATCH
(b:tBook),
(p:tPublisher)
WHERE b.bk_id = 'kr12' AND p.pub_id = 2
CREATE (b)-[r:PUBby]->(p)
RETURN type(r);
Started streaming 1 records in less than 1 ms and completed after 1 ms.
// 관계 조회 (Graph-1 참조)
match(b:tBook{bk_id:'kr12'}) --> (p:tPublisher)
return b,p;
match(b:tBook{bk_id:'kr12'}) -->(p:tPublisher)
return b.bk_id, p.pub_nm;
│"b.bk_id"│"p.pub_nm"│
│"kr12" │"LG전자" │
// 관련 관계 모두 삭제
MATCH (n {bk_id:'kr12'}) -[r:PUBby] -> () delete r;
Deleted 1 relationship, completed after 2 ms.
■ 동일 레이블 노드간의 관계 생성
:use book
// 동일 레이블 노드간의 관계 생성
match(b1:tBook), (b2:tBook)
where b1.bk_id = 'kr12' and b2.bk_id = 'kr14'
create (b1) - [r:bakREF] -> (b2)
return type(r)
Created 1 relationship, started streaming 1 records after 6 ms and completed after 12 ms.
// 관계 조회 (Graph-2 참조)
match(b:tBook{bk_id:'kr12'}) --> (b2:tBook)
return b,b2
■ 속성이 있는 관계 생성
:use book
// 속성이 있는 관계 생성
MATCH
(b:tBook),
(i:tISBN)
WHERE b.bk_id = 'kr12' AND i.isbn_id = 'E01E'
CREATE (b)-[r:bakREF {name: b.bk_id + '<->' + i.isbn_id}]->(i)
RETURN type(r), r.name
│"type(r)"│"r.name" │
│"bakREF" │"kr12<->E01E"│
// 관계 확인 (Graph-3 참조)
match(b:tBook{bk_id:'kr12'}) --> (i)
return b,i
match(b:tBook{bk_id:'kr12'}) --> (i:tISBN)
return b,i
// 관계 속성 확인
match(b:tBook{bk_id:'kr12'}) -[r]-> (i:tISBN)
return b.bk_nm, i.isbn_nm, r.name
│"b.bk_nm" │"i.isbn_nm" │"r.name" │
│"에어로졸 제공 시스템"│"기계공학" │"kr12<->E01E"│
■ 3의 노드와 3개의 관계 동시 생성
:use book
//노드 및 관계 동시 생성
CREATE p = (:tBook {bk_id:'kr113',bk_nm:'노드 및 관계 동시 추가'})-[:SUPPLY_to]->
(:Neo4j)<-[:SUPPLY_to]-(:tPublisher {pub_nm : '(주)몽블랑'})
RETURN p
Added 3 labels, created 3 nodes, set 3 properties, created 2 relationships,
started streaming 1 records after 3 ms and completed after 4 ms.
//노드 및 관계 조회 (Graph-4 참조)
match(b:tBook{bk_id:'kr113'}) --> (n) <-- (y) return b,n,y
■ 테이블 외래키(FK, Foreign Key)를 활용한 관계 생성
:use book2
// FK를 활용한 관계 생성(JOIN 형식)
match (b:ttBook),(p:ttPublisher)
where b.fk_pub_id = p.pub_id
create (b)-[r:PUBL_by]->(p) return type(r);
Created 11 relationships, started streaming 11 records after 6 ms and completed after 23 ms.
// 관계 조회 (Graph-3 참조)
match(n) - [r] -> (m) return n,m
※ Resources
•//neo4j.com/docs/cypher-manual/current/clauses/create/#create-relationships
•db-hyunjin.tistory.com/49
반응형