[Схема знаний] 3.3-Язык шифрования и использование грамматики

база данных

Cypher — это язык запросов к графовым базам данных с богатой выразительностью и высокой эффективностью запросов, его статус и роль сравнимы с языком SQL в реляционных базах данных.

Способности Сайфера:

  • Cypher Extracts Информация или изменяет данные по узлам сопоставления шаблонов и взаимосвязи в диаграмме базы данных.

  • В операторах Cypher разрешено использовать переменные для представления именования, элементов привязки и параметров.

  • Операторы Cypher могут создавать, обновлять и удалять узлы, отношения, метки и атрибуты.

  • Операторы Cypher могут управлять индексами и ограничениями.

Простой синтаксис Cypher:

  • 1. Синтаксис узла: пара круглых скобок используется для представления узлов. как:(),(foo)

  • 2. Реляционная грамматика: используйте пару тире для обозначения ненаправленной связи и направленную стрелку плюс. как:-[role]-,-[:ACTED_IN]->,-[role:ACTED_IN]->

  • 3. Грамматика шаблонов. Сочетание грамматик узлов и отношений может выражать шаблоны. как:(keanu: Person: Actor {name: "Keanu Rteves"}-[role:ACTED_IN {roles: ["Neo"]}]->{matrix: Movie {title: "The Matrix"}})

Поддерживаемые типы значений обработки Cypher:

  • Числовой, Строковый, Логический, Узел, Связь, Путь, Карта, Список

Все функции на языке запросов Cypher:

  • Предикатная функция, скалярная функция, функция списка, математическая функция, строковая функция, пользовательская функция

Режим разработки программы Neo4j:

  • Режим встроенной разработки Java, разработчики Java могут напрямую вызывать API Neo4j в коде и встраивать работу базы данных Neo4j в код Java;

  • Режим разработки драйверов с использованием интегрированных пакетов драйверов или библиотек драйверов, таких как .net, JavaScript, Python, php и т. д., может взаимодействовать с Neo4j.

Часто используемые предложения

  • 1. Создайте оператор узла

CREATE (n {name:"张三"}) //创建节点并给节点分配一个属性

CREATE ({name:"李四"})-[r:have]->({bookname:"设计模式"}) //创建一个关系,给两个节点建立关系指定关系类型、方向和绑定一个变量

  • 2. Заявление о запросах

MATCH (n{name:"张三"}) RETURN n //根据属性匹配节点信息

MATCH (n:Person)-[:FRIEND]->(m:Person) WHERE n.name = '张三' //匹配节点时指定标签、属性和关系类型

MATCH (n)-[k:KNOWS]->(f) WHERE k.since < 2000 RETURN f //根据关系属性过滤

  • 3. Обновление и удаление узла

MATCH (n {name:'张三'}) SET n={age:20} //修改节点信息,覆盖节点属性

MATCH (n {name:'张三'}) SET n+={age:20} RETURN n //该语句不会删除掉name属性,而是在节点中新增age属性

MATCH (n{name:'张三'}) remove n.age RETURN n //删除节点属性

MATCH (a)-[r:KNOWS]->(b) DELETE r,b //删除一个节和关系

  • 4. Индексы и ограничения

CREATE INDEX ON :Person(name) //为"Person"标签的name属性创建索引

DROP CONSTRAINT ON (n:Person) ASSERT n.name IS UNIQUE //创建节点属性唯一约束

использованная литература