본문 바로가기
개발 이야기/NoSQL

Neo4j Cypher(Query) 연습 해보기

by 농개 2024. 7. 31.
반응형

Neo4j Cypher라는 Query Language를 사용합니다.

SQL과 유사하지만 그래프 데이터베이스의 특성에 맞게 설계되어

노드와 관계를 직관적으로 탐색할 수 있습니다.

  • Node: 그래프DB의 데이터 레코드
  • Label: Node의 집합
  • Relationship: Node 사이의 관계
  • Property: Node의 속성

 

해당 포스팅에서는 Neo4j의 Cypher 언어의 기본적인 사용법에 대해서 정리합니다.

아직 Neo4j를 설치 하지 않았다면 아래 포스팅 참고👇

https://basketdeveloper.tistory.com/entry/Neo4j%EB%A5%BC-docker-compose%EB%A1%9C-%EB%9D%84%EC%9B%8C%EB%B3%B4%EA%B8%B0

 

Neo4j를 docker-compose로 띄워보기

Neo4j는 Graph Database로, 데이터 간의 관계를 저장하고 탐색하는 데 최적화되어 있습니다.2024년 Graph Database에서 1위를 고수하고 있습니다. 그래프 데이터베이스는 관계형 데이터베이스(RDBMS)와 다

basketdeveloper.tistory.com

 

목차

    1. Node 생성

    아래와 같이 Cypher 언어로 노드를 생성 할 수 있습니다.

    -- Node 추가
    CREATE (p:Person {name: '테스트'})

    여기서 Person은 Node의 Label을 뜻합니다.

    name은 Property를 뜻합니다.

     

    2. Node 조회

    조회는 아래 MATCH라는 커맨드로 가능합니다.

    -- Node 조회
    MATCH (p:Person{name:'테스트'})
    RETURN p

    "MATCH (임시변수:노드 {조건}) RETURN 임시변수"와 같은 형태로 조회 할 수 있습니다.

    만약 전체를 조회하려면 아래와 같이 가능합니다.

    MATCH (p:Person)
    RETURN p

     

     

    3. Relationship 추가

    우선 Person {name: 'Dan'} 노드를 하나더 만들어 봅시다.

    CREATE (p:Person {name: 'Dan'})

     

    그리고 '테스트', 'Dan' 이라는 노드 간에 'LIKES'를 추가해봅시다.

    -- Relationship 추가
    MATCH (a:Person {name:'테스트'}),(b:Person{name: 'Dan'})
    CREATE (a)-[r:LIKES]->(b)
    RETURN r

     

    조회해봤습니다.

     

    관계가 만들어졌네요.

    4. Node, Relationship 삭제

    삭제하려는 Node에 연결되어있는 Relationship이 있다면

    아래와 같이 에러를 띄게 됩니다.

    -- Node 삭제
    MATCH (p:Person {name: 'Dan'}) DELETE p

    즉, 삭제 전에 Relationship을 먼저 제거해줘야합니다.

    -- Relationship 삭제
    MATCH (p:Person)-[r:LIKES]->(Person{name:'Dan'}) delete r

     

    이 후 Node 삭제를 하면 정상적으로 삭제 될 것입니다.

     

    5. Constraint 추가

    만약 노드를 생성하는데 같은 Properties가 생성되는 것을 방지하고자 하면

    특정 필드를 유니크화 해줘야합니다.

    -- Constraint 추가
    CREATE CONSTRAINT FOR (n:Person) REQUIRE n.name IS UNIQUE

     

     

    반응형