1 CREATE 2 MATCH 3 RETURN 4 WHERE 5 DELETE 6 REMOVE 7 ORDER BY 8 SET 创建节点 create (p:Student { name : "孙悟空" ,age:28,hobby: "playsticks" }) 查询节点 match (n:Student) return n limit 20; match (n:Student) where n.age < 30 return n limit 20; match (n) where n.age < 30 return n limit 20; 创建多个标签的节点 create (n:Author:Singer:Student { name : "john" }) 创建关系 Match (t:Singer) where t. name = "john" create (b:Student{ name : "小唐" })-[r:LIKES]->(t); 删除、添加标签 match (n:Student) where n. name = 'john' remove n:Teacher; match (n:Student) where n. name = 'john' set n:Singer; 与 MySQL 语法对比,快速熟悉 <! -- 1. 全表扫描 --> <! -- mysql --> SELECT p.* FROM products as p; <! -- neo4j --> MATCH (p:Product) RETURN p; <! -- 2. 查询价格最贵的10个商品,只返回商品名字和单价 --> <! -- mysql --> SELECT p.ProductName, p.UnitPrice FROM products as p ORDER BY p.UnitPrice DESC LIMIT 10; <! -- neo4j --> MATCH (p:Product) RETURN p.productName, p.unitPrice ORDER BY p.unitPrice DESC LIMIT 10; <! -- 3. 按照商品名字筛选 --> <! -- mysql --> SELECT p.ProductName, p.UnitPrice FROM products AS p WHERE p.ProductName = 'Chocolade' ; <! -- neo4j --> MATCH (p:Product) WHERE p.productName = "Chocolade" RETURN p.productName, p.unitPrice; <! -- 其他的写法 --> MATCH (p:Product {productName: "Chocolade" }) RETURN p.productName, p.unitPrice; <! -- 4. 按照商品名字筛选2 --> <! -- mysql --> SELECT p.ProductName, p.UnitPrice FROM products as p WHERE p.ProductName IN ( 'Chocolade' , 'Chai' ); <! -- neo4j --> MATCH (p:Product) WHERE p.productName IN [ 'Chocolade' , 'Chai' ] RETURN p.productName, p.unitPrice; <! -- 5. 模糊查询和数值过滤 --> <! -- mysql --> SELECT p.ProductName, p.UnitPrice FROM products AS p WHERE p.ProductName LIKE 'C%' AND p.UnitPrice > 100; <! -- neo4j --> MATCH (p:Product) WHERE p.productName STARTS WITH "C" AND p.unitPrice > 100 RETURN p.productName, p.unitPrice; <! -- 6. 多表联合查询--> <! -- mysql --> SELECT DISTINCT c.CompanyName FROM customers AS c JOIN orders AS o ON (c.CustomerID = o.CustomerID) JOIN order_details AS od ON (o.OrderID = od.OrderID) JOIN products AS p ON (od.ProductID = p.ProductID) WHERE p.ProductName = 'Chocolade' ; <! -- neo4j --> MATCH (p:Product {productName: "Chocolade" })<-[:PRODUCT]-(: Order )<-[:PURCHASED]-(c:Customer) RETURN distinct c.companyName; <! -- 7. --> <! -- mysql --> SELECT e.EmployeeID, count (*) AS Count FROM Employee AS e JOIN Order AS o ON (o.EmployeeID = e.EmployeeID) GROUP BY e.EmployeeID ORDER BY Count DESC LIMIT 10; <! -- neo4j --> MATCH (: Order )<-[:SOLD]-(e:Employee) RETURN e. name , count (*) AS cnt ORDER BY cnt DESC LIMIT 10 |