노드란 사람, 사물, 제품 등 개체(Entity)를 의미한다.
예를 들어, 사람이라는 노드를 만들고 싶다면 다음과 같이 Cypher문을 작성하면 된다.
CREATE (:Person {name: '길동', age: 23})
위 Cypher문은 다음과 같은 의미를 갖는다.

해당 Cypher을 실행하면 위와 같은 결과를 얻을 수 있다.
메시지의 내용은 다음과 같다.
"Person"이라는 레이블을 가진 노드 1개가 생성되었고, 그 노드에는 "name"과 "age" 두 개의 속성이 추가되었다는 뜻!
생성한 레이블 전체를 확인하기 위해 MATCH를 활용하면 다음과 같이 생성된 레이블을 확인할 수 있다.

만약 여러 개의 노드를 생성하고자 하는 경우 다음과 같이 생성이 가능하다.
CREATE (:Person {name: "민식", age: 25}),
(:Person {name: "춘향", age: 22})

위 Cypher을 실행하면 위와 같은 결과를 얻을 수 있다.
이렇게 보면 노드와 레이블 그리고 속성에 대한 내용이 헷갈릴 수 있는데 다음과 같이 쉽게 정리하면 된다.
CREATE (:Person {name: '길동', age: 23})
해당 Cypher문을 분석해 보면 다음과 같다.
위 Cypher문은 하나의 노드를 생성하는 쿼리문이다.
위 Cypher문은 여러 노드의 종류 중 Person을 의미한다.
위 Cypher을 통해 생성된 노드는 이름이 철수이고 나이가 25이라는 속성을 갖는다.
더 쉽게 직관적으로 보면 Neo4J의 노드는 엑셀의 한 행과 같은 개념이라고 할 수 있다.

이와 같이 엑셀에 하나의 행으로 노드가 생성된 것이고 Person은 카테고리, 철수와 25는 속성값이 된다.
이는 여러 노드가 생성될 때도 마찬가지로
CREATE (:Person {name: "철수", age: 25}),
(:Person {name: "영희", age: 22})
위와 같은 Cypher문은 아래와 같은 구조를 갖는다.

이제 CREATE와 비슷한 MERGE에 대해서 알아보자.
CREATE와 MERGE의 차이점은 다음과 같다.
CREATE = 새로운 노드나 관계를 반드시 생성합니다. 이미 존재하는 노드가 있더라도 중복으로 생성
CREATE (p:Person {name: "철수"})
위 쿼리는 철수라는 이름을 가진 노드를 새로 생성하는 쿼리문이다.
기존에 철수라는 노드가 이미 존재하더라도 새로운 노드를 추가하게 된다.
MERGE = 중복을 피하고 기존 데이터를 찾아서 연결하거나, 없으면 새로 생성
MERGE (p:Person {name: "철수"})
위 쿼리를 보면 기존 CREATE와 비슷하게 구성되어 있으며 단지 CREATE가 MERGE로 바뀐 것 뿐이다.
하지만 위 쿼리는 중요한 역할을 진행하는 데, 바로 기존에 동일한 노드나 관계가 존재하면 그걸 찾아서 사용하고, 없으면 새로 생성한다는 것이다.
예를 들어 확인해 보자.
이전에 진행했던

위 쿼리를 한 번 더 진행하게 되면 결과는 다음과 같다.

이와 같이 똑같은 노드가 2개 생성된 것을 확인할 수 있다.
하지만 여기서
MERGE를 활용하게 되면 다음과 같이

이미 존재하는 노드이기 때문에 아무것도 바뀐 것이 없다는 문구가 보이게 된다.
이게 바로 MERGE와 CREATE의 차이점이다.
다음 포스터에서는 관계를 형성하는 방법에 대해서 공부해보자.