Creating Data with Cypher CREATE
Learn to use the CREATE clause to add new nodes and relationships to your Neo4j graph database.
Creating Data with Cypher CREATE is a free Neo4j Graph Database Fundamentals lesson on CoddyKit — lesson 2 of 4. You can read the complete lesson below for free — then practise it hands-on in the browser with a built-in code editor and a 24/7 AI tutor. It is part of the Neo4j Graph Database Fundamentals learning path, one of 4 lessons in the course, and your progress syncs across the web and the CoddyKit app.
Welcome to Cypher CREATE!
In this lesson, you'll learn how to add new data to your Neo4j graph database using the CREATE clause in Cypher, the query language for Neo4j.
We'll cover creating individual nodes, adding properties, and defining relationships between them. Let's get started!
Creating Your First Node
The simplest way to add a node is with CREATE followed by parentheses (). Inside the parentheses, you can give your node a variable name (like n) for later reference in the same query.
Try running this basic example:
CREATE (n)Adding Labels to Nodes
Nodes usually represent real-world entities, like a 'Person' or a 'Movie'. We use labels to categorize nodes. Labels are defined after the node variable using a colon :.
It's good practice to always use labels for better organization and querying.
CREATE (p:Person)Nodes with Properties
Nodes often have attributes that describe them. These are called properties. Properties are key-value pairs enclosed in curly braces {} after the label.
- Keys are strings (like
name). - Values can be strings, numbers, booleans, or lists.
CREATE (m:Movie {
title: 'The Matrix',
releaseYear: 1999
})Creating Multiple Nodes
You can create several nodes in a single CREATE statement by separating them with a comma ,. This is efficient when adding related data.
Here, we're creating two different types of nodes at once:
CREATE (a:Actor {name: 'Keanu Reeves'}),
(d:Director {name: 'Lana Wachowski'})Introducing Relationships
Relationships define how nodes are connected. They are directional and always connect two nodes. Their syntax looks like an arrow ()-[]->().
()for nodes.-[]->for a directed relationship.-[]-for an undirected relationship (less common).
Creating Relationships Between Existing Nodes
To create a relationship between nodes that already exist, you first need to MATCH them. Then, you can use CREATE to define the relationship.
Relationships also have a type (e.g., ACTED_IN) and can have properties.
MATCH (a:Actor {name: 'Keanu Reeves'})
MATCH (m:Movie {title: 'The Matrix'})
CREATE (a)-[:ACTED_IN]->(m)Relationships with Properties
Just like nodes, relationships can also have properties. These properties describe the relationship itself, not the nodes it connects.
For example, an ACTED_IN relationship might have a role property.
MATCH (a:Actor {name: 'Keanu Reeves'})
MATCH (m:Movie {title: 'The Matrix'})
CREATE (a)-[:ACTED_IN {role: 'Neo'}]->(m)Creating Nodes and Relationships Together
One of the most powerful features of CREATE is the ability to define new nodes and their relationships in a single statement. This helps build complex graph patterns efficiently.
Here, we create a new 'Person' and a new 'City', connecting them with a LIVES_IN relationship.
CREATE (p:Person {name: 'Samantha'})
-[:LIVES_IN]->
(c:City {name: 'London', country: 'UK'})Putting It All Together
Let's combine what we've learned to build a small graph for a fictional 'Project' and 'Team' members:
- Create a Project node.
- Create two Person nodes.
- Connect the Persons to the Project with
WORKS_ONrelationships, each with aroleproperty.
CREATE (p:Project {name: 'CoddyKit App', budget: 50000})
CREATE (dev:Person {name: 'Alex', email: 'alex@example.com'})
CREATE (qa:Person {name: 'Jamie', email: 'jamie@example.com'})
CREATE (dev)-[:WORKS_ON {role: 'Developer'}]->(p)
CREATE (qa)-[:WORKS_ON {role: 'QA Engineer'}]->(p)Quick Check on CREATE
Which of the following Cypher statements correctly creates a new node labeled Product with a name property of 'Laptop' and a price of 1200?
Recap & Next Steps
Great job! You've learned the fundamentals of creating data in Neo4j using the Cypher CREATE clause.
- You can create nodes with labels and properties.
- You can define directional relationships between nodes.
- You can even create nodes and relationships in a single statement.
Next, you'll learn how to find and retrieve this data using the MATCH clause!
Frequently asked questions
Is the “Creating Data with Cypher CREATE” lesson free?
Yes — the full text of “Creating Data with Cypher CREATE” is free to read here on the web, and the Neo4j Graph Database Fundamentals course includes 4 lessons in total. To practise it interactively (a built-in code editor and a 24/7 AI tutor) and unlock the rest of the Neo4j Graph Database Fundamentals course, upgrade to CoddyKit PRO.
What will I learn in “Creating Data with Cypher CREATE”?
Learn to use the CREATE clause to add new nodes and relationships to your Neo4j graph database. You practise Neo4j Graph Database Fundamentals with hands-on code you run directly in the browser, and a 24/7 AI tutor answers your questions as you work through the lesson.
Do I need any experience to start Neo4j Graph Database Fundamentals?
No prior experience is required. Neo4j Graph Database Fundamentals on CoddyKit is structured for beginners through advanced learners; this is — lesson 2 of 4, so you can start here or from the beginning and move at your own pace.
How long does the “Creating Data with Cypher CREATE” lesson take?
Most CoddyKit lessons take about 5–10 minutes. Each one is bite-sized and interactive, so you make steady progress and pick up exactly where you left off across the web and the app.
Can I write and run code in this Neo4j Graph Database Fundamentals lesson?
Yes. Every Neo4j Graph Database Fundamentals lesson includes a built-in code editor, so you write and run real code right in your browser and get instant AI feedback — no local setup required.
All lessons in this course
- Nodes, Relationships, and Properties
- Creating Data with Cypher CREATE
- Matching Patterns with Cypher MATCH
- Returning and Shaping Results with RETURN