# CREATE

The `CREATE` clause is used to create nodes and relationships in a graph.

# 1. Creating nodes

## 1.1 Creating a single node

Use the following query to create a single node. The `RETURN` clause is used to return results. A newly created node can be returned in the same query.

`CREATE (n)RETURN n;`

Output:

`+----+| n  |+----+| () |+----+`

You can also specify a label while creating a node.

`CREATE (n:Country)RETURN n;`

Output:

`+------------+| n          |+------------+| (:Country) |+------------+`

If you wish to add multiple labels to a node, use the following syntax:

`CREATE (n:Country:City)RETURN n;`

Output:

`+-----------------+| n               |+-----------------+| (:Country:City) |+-----------------+`

## 1.2 Creating a node with properties

A node can be created with initial properties.

`CREATE (n:Country { name: 'San Marino', continent: 'Europe' })RETURN n;`

Output:

`+------------------------------------------------------+| n                                                    |+------------------------------------------------------+| (:Country {continent: "Europe", name: "San Marino"}) |+------------------------------------------------------+`

## 1.3 Creating multiple nodes

To create multiple nodes, separate them with a comma.

`CREATE (n:Country), (m:City)RETURN n,m;`

Output:

`+------------+------------+| n          | m          |+------------+------------+| (:Country) | (:City)    |+------------+------------+`

# 2. Creating relationships

## 2.1 Creating a relationship between two nodes

To create a relationship between two nodes, we need to specify which nodes either by creating them or filtering them with the `WHERE` clause.

`CREATE (c1:Country { name: 'Belgium' }), (c2:Country { name: 'Netherlands' })CREATE (c1)-[r:BORDERS_WITH]->(c2)RETURN r;`

Output:

`+----------------+| r              |+----------------+| [BORDERS_WITH] |+----------------+`

If the nodes already exist, the query would look like this:

`MATCH (c1:Country),(c2:Country)WHERE c1.name = 'Belgium' AND c2.name = 'Netherlands'CREATE (c1)-[r:NEIGHBOURS]->(c2)RETURN r;`

Output:

`+--------------+| r            |+--------------+| [NEIGHBOURS] |+--------------+`

## 2.2 Creating a relationship with properties

You can add properties to a relationship at the time of creation.

`MATCH (c1:Country),(c2:Country)WHERE c1.name = 'Belgium' AND c2.name = 'Netherlands'CREATE (c1)-[r:BORDERS_WITH { length: '30KM' }]->(c2)RETURN r;`

Output:

`+---------------------------------+| r                               |+---------------------------------+| [BORDERS_WITH {length: "30KM"}] |+---------------------------------+`

# 3. Creating a path

When creating a path, all of the parts of the pattern that don't exist will be created.

`CREATE p=((n:Country { name: 'Belgium' })-[r:BORDERS_WITH { length: '30KM' }]->(m:Country { name: 'Netherlands' }))RETURN p;`

Output:

`+------------------------------------------------------------------------------------------------+| p                                                                                              |+------------------------------------------------------------------------------------------------+| (:Country {name: "Belgium"})-[BORDERS_WITH {length: "30KM"}]->(:Country {name: "Netherlands"}) |+------------------------------------------------------------------------------------------------+`