---
# System prepended metadata

title: "[12屆 鐵人賽] [Day13]\nCypher 語法簡介 Part4 : Set 一下新資料吧"
tags: [iT鐵人賽, Neo4j]

---

[12屆 鐵人賽] [Day13]
Cypher 語法簡介 Part4 : Set 一下新資料吧
===

###### tags: `iT鐵人賽` `Neo4j`


## 前情提要

前幾天起床身體有點著涼，工作量也剛好在昨天往上飆

壓力起飛加上身體不適，差點就去了x

晚上在同事的推薦之下，一起去了女僕咖啡廳

一進到店裡，所有壓力直接一掃而空，連感冒都好了，阿斯

看來以後要常去，不然鐵人賽加工作的壓力實在太大了

阿扯太遠了

前面幾篇介紹了 Cypher 的查詢 `MATCH` `WHERE`、新增 `CREATE`

CRUD 講完 C 跟 R 了 

那接下就是 U 了，開始囉 Cypher 的修改 `SET`

## SET

跟 `WHERE` 一樣，先從 `Label` 跟 `Property` 的基本型開始

### Label

```sql
MATCH (n)
SET n:SQL
RETURN n
```

`Label` 的部分沒什麼特別的，就是直接上 `:Label`

也可以同時上兩的 `SET n:SQL:NoSQL` 


### Property

```sql
MATCH (n)
SET n.Name = "關聯式資料庫"
RETURN n
```

基本修改其中一個屬性 ↑↑↑↑↑↑

也可以直接吧所有的屬性取代掉

```sql
MATCH (n:Weapon) 
SET n = { Age:23 , Length:"100" } 
RETURN n
```

| 原始資料 | 新資料 |
|--|--|
| ![](https://i.imgur.com/G9E7G1R.png) | ![](https://i.imgur.com/WSzlKTZ.png) |

如果要新增多筆資料，但不想蓋掉原本的資料，可以使用 `+=`

但如果你的新資料的屬性跟原本的有重複，那舊的屬性值就會被蓋掉

```sql
MATCH (n:Weapon) 
SET n += { Age:23 , Length:"100" } 
RETURN n
```

| 原始資料 | 新資料 |
|--|--|
| ![](https://i.imgur.com/G9E7G1R.png) | ![](https://i.imgur.com/24QVSMy.png) |




如果你把需要刪掉其中一個屬性那你可以讓那個屬性為 `NULL` 就可以刪除了

```sql
MATCH (n:Weapon) 
SET n.Size = NULL 
RETURN n
```

| 原始資料 | 刪除 Size |
|--|--|
| ![](https://i.imgur.com/K7ak6kp.png) | ![](https://i.imgur.com/G9E7G1R.png) |

當然也可以刪除全部的屬性

```sql
Match (n:Weapon) 
Set n = { } 
RETURN n
```

同樣個設定方法在 `Relationship` 也是一樣的

---

### 短 

前情提要快要比內文長了 WTF

庫存已爆裂，從今天開始要 真．鐵人 了

壓力山大

明天 ***Cypher 語法簡介 Part5 : Detach Delete 很好用***

期待明日的降臨吧 Ciao!

---

## 參考資料

[Neo4j Cypher Manual](https://neo4j.com/docs/cypher-manual/current/)

(書) [Neo4j 大事典：圖形資料庫&大數據時代](https://www.books.com.tw/products/0010813100)

## 紀錄

撰寫日期：2020/09/27
耗時：1 小左右，然後我又要出門了 喵的
