summaryrefslogtreecommitdiffhomepage
path: root/uk-ua/cypher-ua.html.markdown
diff options
context:
space:
mode:
Diffstat (limited to 'uk-ua/cypher-ua.html.markdown')
-rw-r--r--uk-ua/cypher-ua.html.markdown97
1 files changed, 39 insertions, 58 deletions
diff --git a/uk-ua/cypher-ua.html.markdown b/uk-ua/cypher-ua.html.markdown
index 2427c442..281289c9 100644
--- a/uk-ua/cypher-ua.html.markdown
+++ b/uk-ua/cypher-ua.html.markdown
@@ -13,11 +13,9 @@ Cypher - це мова запитів Neo4j для спрощення робот
[Деталі тут](https://neo4j.com/developer/cypher-query-language/)
+## Вершини
-Вершини
----
-
-**Відображує запис у графі.**
+#### Відображує запис у графі
`()`
Таким чином у запиті позначається пуста *вершина*. Використовується зазвичай для того, щоб позначити, що вона є, проте це не так вже й важливо для запиту.
@@ -36,27 +34,24 @@ Cypher - це мова запитів Neo4j для спрощення робот
Наступні типи дозволяється використовувати у властивостях:
- - Чиселиний
- - Булевий
- - Рядок
- - Списки попередніх примітивних типів
+- Чиселиний
+- Булевий
+- Рядок
+- Списки попередніх примітивних типів
*Увага! В Cypher не існує типу, що відображає час. Замість нього можна використовувати рядок із визначеним шаблоном або чисельне відображення певної дати.*
`p.name`
За допомогою крапки можна звернутись до властивості вершини.
-
-Зв'язки (або ребра)
----
-
-**Сполучають дві вершини**
+## Зв'язки (або ребра)
+#### Сполучають дві вершини
`[:KNOWS]`
Це *зв'язок* з *ярликом* **KNOWS**. Це такий же самий *ярлик* як і у вершини. Починається з великої літери та використовує ВЕРХНІЙ\_РЕГІСТР\_ІЗ\_ЗМІЇНОЮ\_НОТАЦІЄЮ.
`[k:KNOWS]`
-Це той же самий *зв'язок*, до якого можна звертатись через змінну **k**. Можна подалі використовувати у запиті, хоч це і не обов'язково.
+Це той же самий *зв'язок*, до якого можна звертатись через змінну **k**. Можна подалі використовувати у запиті, хоч це і не обов'язково.
`[k:KNOWS {since:2017}]`
Той же *зв'язок*, але вже із *властивостями* (як у *вершини*), в данному випадку властивість - це **since**.
@@ -64,11 +59,8 @@ Cypher - це мова запитів Neo4j для спрощення робот
`[k:KNOWS*..4]`
Це структурна інформація, яку використовують *шляхи*, які розглянуті нижче. В данному випадку, **\*..4** говорить: "Сумістити шаблон із зв'язком **k**, що повторюватиметься від одного до чотирьох разів."
-
-Шляхи
----
-
-**Спосіб поєднувати вершини та зв'язки.**
+## Шляхи
+#### Спосіб поєднувати вершини та зв'язки.
`(a:Person)-[:KNOWS]-(b:Person)`
Шлях описує, що вершини **a** та **b** знають (knows) один одного.
@@ -84,8 +76,8 @@ Cypher - це мова запитів Neo4j для спрощення робот
Шаблони, які часто використовуються (з документації Neo4j):
-```
-// Друг-мого-друга
+```cypher
+// Друг-мого-друга
(user)-[:KNOWS]-(friend)-[:KNOWS]-(foaf)
// Найкоротший шлях
@@ -98,13 +90,11 @@ path = shortestPath( (user)-[:KNOWS*..5]-(other) )
(root)<-[:PARENT*]-(leaf:Category)-[:ITEM]->(data:Product)
```
-
-Запити на створення
----
+## Запити на створення
Створити нову вершину:
-```
+```cypher
CREATE (a:Person {name:"Théo Gauchoux"})
RETURN a
```
@@ -113,52 +103,51 @@ RETURN a
Створити новий зв'язок (із двома вершинами):
-```
+```cypher
CREATE (a:Person)-[k:KNOWS]-(b:Person)
RETURN a,k,b
```
-Запити на знаходження
----
+## Запити на знаходження
Знайти всі вершини:
-```
+```cypher
MATCH (n)
RETURN n
```
Знайти вершини за ярликом:
-```
+```cypher
MATCH (a:Person)
RETURN a
```
Знайти вершини за ярликом та властивістю:
-```
+```cypher
MATCH (a:Person {name:"Théo Gauchoux"})
RETURN a
```
Знайти вершини відповідно до зв'язків (ненаправлених):
-```
+```cypher
MATCH (a)-[:KNOWS]-(b)
RETURN a,b
```
Знайти вершини відповідно до зв'язків (направлених):
-```
+```cypher
MATCH (a)-[:MANAGES]->(b)
RETURN a,b
```
Знайти вершини за допомогою `WHERE`:
-```
+```cypher
MATCH (p:Person {name:"Théo Gauchoux"})-[s:LIVES_IN]->(city:City)
WHERE s.since = 2015
RETURN p,state
@@ -166,19 +155,17 @@ RETURN p,state
Можна використовувати вираз `MATCH WHERE` разом із операцією `CREATE`:
-```
+```cypher
MATCH (a), (b)
WHERE a.name = "Jacquie" AND b.name = "Michel"
CREATE (a)-[:KNOWS]-(b)
```
-
-Запити на оновлення
----
+## Запити на оновлення
Оновити окрему властивість вершини:
-```
+```cypher
MATCH (p:Person)
WHERE p.name = "Théo Gauchoux"
SET p.age = 23
@@ -186,7 +173,7 @@ SET p.age = 23
Оновити всі властивості вершини:
-```
+```cypher
MATCH (p:Person)
WHERE p.name = "Théo Gauchoux"
SET p = {name: "Michel", age: 23}
@@ -194,7 +181,7 @@ SET p = {name: "Michel", age: 23}
Додати нову властивіcть до вершини:
-```
+```cypher
MATCH (p:Person)
WHERE p.name = "Théo Gauchoux"
SET p + = {studies: "IT Engineering"}
@@ -202,19 +189,17 @@ SET p + = {studies: "IT Engineering"}
Повісити ярлик на вершину:
-```
+```cypher
MATCH (p:Person)
WHERE p.name = "Théo Gauchoux"
SET p:Internship
```
-
-Запити на видалення
----
+## Запити на видалення
Видалити окрему вершину (пов'язані ребра повинні бути видалені перед цим):
-```
+```cypher
MATCH (p:Person)-[relationship]-()
WHERE p.name = "Théo Gauchoux"
DELETE relationship, p
@@ -222,7 +207,7 @@ DELETE relationship, p
Видалити властивість певної вершини:
-```
+```cypher
MATCH (p:Person)
WHERE p.name = "Théo Gauchoux"
REMOVE p.age
@@ -230,17 +215,17 @@ REMOVE p.age
*Зверніть увагу, що ключове слово `REMOVE` це не те саме, що й `DELETE`!*
-Видалити ярлик певної вершини:
+Видалити ярлик певної вершини:
-```
+```cypher
MATCH (p:Person)
WHERE p.name = "Théo Gauchoux"
DELETE p:Person
```
-Видалити всю базу даних:
+Видалити всю базу даних:
-```
+```cypher
MATCH (n)
OPTIONAL MATCH (n)-[r]-()
DELETE n, r
@@ -248,9 +233,7 @@ DELETE n, r
*Так, це `rm -rf /` на мові Cypher !*
-
-Інші корисні запити
----
+## Інші корисні запити
`PROFILE`
Перед виконанням, показати план виконання запитів.
@@ -261,11 +244,9 @@ DELETE n, r
`LIMIT x`
Обмежити результат до x перших результатів.
+## Особливі підказки
-Особливі підказки
----
-
-- У мові Cypher існують лише однорядкові коментарі, що позначаються двійним слешем : // Коментар
+- У мові Cypher існують лише однорядкові коментарі, що позначаються двійним слешем : `// Коментар`
- Можна виконати скрипт Cypher, збережений у файлі **.cql** прямо в Neo4j (прямо як імпорт). Проте, не можна мати мати кілька виразів в цьому файлі (розділених **;**).
- Використовуйте командний рядок Neo4j для написання запитів Cypher, це легко і швидко.
- Cypher планує бути стандартною мовою запитів для всіх графових баз даних (більш відома як **OpenCypher**).