Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Linguagem de consulta Neo4j - Cypher


O Neo4j possui sua própria linguagem de consulta chamada Cypher. Cypher usa uma sintaxe semelhante ao SQL (Structured Query Language).

Exemplo


Aqui está um exemplo de uma declaração Cypher:
MATCH (p:Person { name:"Homer Flinstone" })
RETURN p

Esta declaração Cypher retorna um nó "Person" onde a propriedade name é "Homer Flinstone".

Se isso fosse SQL consultando um banco de dados relacional, poderia ser mais parecido com isto:
SELECT * FROM Person
WHERE name = "Homer Flinstone";

No entanto, lembre-se, o Neo4j não armazena seus dados em tabelas como o modelo de banco de dados relacional. Está tudo em nós e relacionamentos. Portanto, a consulta Cypher acima está consultando nós, seus rótulos e suas propriedades. O exemplo SQL, por outro lado, está consultando tabelas, linhas e colunas.

SQL foi projetado para ser usado com relacional sistemas de gerenciamento de banco de dados (SGBD). O Neo4j é um SGBD NoSQL, pois não utiliza o modelo relacional e não utiliza SQL.

Cypher foi projetado especificamente para trabalhar com o modelo de dados Neo4j, que trata de nós e seus relacionamentos entre si.

Sintaxe ASCII-Arte


Cypher usa ASCII-Art para representar padrões. Isso é uma coisa útil para se lembrar ao aprender o idioma pela primeira vez. Se você esquecer como escrever algo, apenas visualize como o gráfico ficará e isso deve ajudar.
(a)-[:KNOWS]->(b)

As principais coisas a serem lembradas:
  • Os nós são representados por parênteses, que se parecem com círculos. Assim:(node)
  • Os relacionamentos são representados por setas. Assim:->
  • Informações sobre um relacionamento podem ser inseridas entre colchetes. Assim:[:KNOWS]

Definindo os dados


Aqui estão mais alguns pontos a serem lembrados ao trabalhar com o Cypher:
  • Os nós geralmente têm rótulos. Os exemplos podem incluir "Pessoa", "Usuário", "Ator", "Funcionário", "Cliente".
  • Os nós geralmente têm propriedades. As propriedades fornecem informações extras sobre o nó. Os exemplos podem incluir "Nome", "Idade", "Nascido", etc
  • Os relacionamentos também podem ter propriedades.
  • Os relacionamentos geralmente têm um tipo (isso é basicamente como o rótulo de um nó). Os exemplos podem incluir "KNOWS", "LIKES", "WORKS_FOR", "PURCHASED" etc.

Então, olhando para o exemplo acima novamente:
MATCH (p:Person { name:"Homer Flinstone" })
RETURN p

Nós podemos ver isso:
  • O nó está entre parênteses () .
  • Person é o rótulo do nó.
  • name é uma propriedade do nó.