본문 바로가기

DB 공부

Neo4j - Cypher 언어

반응형

Cypher Query

그래프 데이터베이스 질의어로, 다른 질의어에 비해 단순하지만 강력한 질의어. Cypher Query는 그래프 데이터베이스 Neo4j사가 만들었으나 2015년 10월 오픈 사이퍼 프로젝트를 통해 개방됨. Cypher Query는 프로퍼티 그래프 모델에 기반을 두며, 노드와 엣지의 표준 그래프 요소들에 레이블(label)과 프로퍼티(property)를 추가해서 데이터베이스화 할 수 있다.

예시

CREATE

  • CREATE : Data를 만드는 구문
  • () : Node 단위
  • {} : 속성 추가
  • 변수:라벨 : 변수, 라벨로 node 구분
  • [] : 관계 설명

CREATE(길동:학생 {이름:"홍길동", 학년:"3학년"})
CREATE(수학:과목 {담당선생님:"장발산", 경력: "3년"})
CREATE(길동)-[:공부하다]->(수학)

MATCH

  • MATCH : 노드(nodes), 관게(relationships)의 패턴을 구체화 시켜주는 구문
  • (길동:학생) : '길동'이라는 변수에 매칭되는 학생이라는 라벨을 가진 단순 노드 패턴
  • WHERE : 결과에 제약하는 절로 기존 RDBMS에서 사용하는 WHERE절 의미와 동일
  • 길동.이름 : 이름 속성과 "길동" 값을 비교
  • RETURN : 특정 결과를 요청할 때 사용되는 구문

기존 SQL과의 비교

SQL Cypher
SELECT ~ FROM ~ MATCH pattern RETURN it
SELECT ~ FROM ~ JOIN MATCH more complex pattern RETURN it
SELECT ~ FROM ~ WHERE ~ MATCH pattern WHERE condition/pattern RETURN it

Node Syntax

  • () : 노드
  • (a) : 노드를 a 변수로 할당
  • (:Label) : label 해당하는 노드
  • (c:City) : City 라벨을 가진 노드, 노드는 c 변수로 할당

Relationship Syntax

  • --> : 관계 방향
  • [:REL_TYPE] : type에 해당하는 관계
  • -[:FROM]-> : FROM type을 가진 방향성을 가진 관계
    
    MATCH (p:Person)-[:FROM]->(c:City)
    WHERE p.name="Natalia"
    RETRUN p, c
    
반응형

'DB 공부' 카테고리의 다른 글

Database  (0) 2021.03.08
MongoDB (root) 계정 만들기  (0) 2020.05.05
macOS mongoDB 설정  (0) 2020.05.05
Neo4j 개요  (0) 2020.03.22