title: Cypher (langage)
text: # Cypher (langage)
  
  Cypher est un langage informatique de requête orienté graphe utilisé par Neo4j.
  
  Le langage se veut simple et efficace dans la formulation des requêtes d'interrogation et de mise à jour des bases de données orientées graphe. Cypher est relativement simple dans sa construction syntaxique mais reste néanmoins un langage efficace. Les concepteurs ont voulu permettre aux utilisateurs de rester concentrés dans leur domaine d'expertise au lieu de se perdre dans les formulations de requêtes en bases de données.
  
  ## Syntaxe
  
  Cypher définit un ensemble de fonctions. Parmi les plus courantes on trouve MATCH et WHERE. Ces fonctions sont quelque peu différentes des mêmes fonctions en SQL. MATCH est utilisé pour décrire le modèle de recherche. Il est principalement basé sur les relations. WHERE est utilisé pour l'ajout de contraintes aux modèles. Par exemple :
  
  Cypher définit également des fonctions d'écriture, de mise à jour et de suppression des données. CREATE et DELETE sont utilisées pour créer et supprimer les nœuds et les relations. SET et REMOVE sont utilisées pour définir les valeurs des propriétés et affecter des labels aux nœuds. Les nœuds peuvent uniquement être supprimés lorsqu'ils n'ont plus de relations vers des nœuds maintenus. On ignore cependant la réelle utilité de MATCH, certains disent qu'il s'agit d'économiser des ressources d'ordinateur, mais si on a besoin d'appliquer un élément dans un graphe, notamment pour les nœuds, on fait appel à ça. On peut dire la même chose pour OPTIONAL, l'idée est d'en profiter pour éviter des problèmes technologiques en cas de deux MATCH dans le code. Par exemple :
  
  