0% found this document useful (0 votes)
15 views9 pages

Chapter31_Examples

The document provides SQL examples for creating and managing a graph database named 'graph_db', including the creation of nodes for companies, employees, and cities, as well as edges representing relationships such as employment and residency. It includes various SQL queries to insert, update, delete, and retrieve data from the database, demonstrating how to work with graph structures in SQL. Additionally, it showcases recursive relationships and friendship connections among employees.

Uploaded by

riyasathsafran
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
15 views9 pages

Chapter31_Examples

The document provides SQL examples for creating and managing a graph database named 'graph_db', including the creation of nodes for companies, employees, and cities, as well as edges representing relationships such as employment and residency. It includes various SQL queries to insert, update, delete, and retrieve data from the database, demonstrating how to work with graph structures in SQL. Additionally, it showcases recursive relationships and friendship connections among employees.

Uploaded by

riyasathsafran
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 9

-- Example 31.

1
CREATE DATABASE graph_db;
GO;
USE graph_db;
CREATE TABLE dbo.Company (
ID INT NOT NULL PRIMARY KEY,
name VARCHAR (100) NULL,
sector VARCHAR(25) NULL,
city VARCHAR (100) NULL) AS NODE;
CREATE TABLE dbo.Employee (
ID INT NOT NULL PRIMARY KEY,
name VARCHAR (100) NULL,
age INT NULL,
sex char (10) NULL) AS NODE;
CREATE TABLE dbo.City (
ID INT NOT NULL PRIMARY KEY,
name VARCHAR(100) NULL,
stateName VARCHAR(100) NULL) AS NODE;

-- Example 31.2
USE graph_db;
INSERT INTO Employee (ID,Name,Sex)
VALUES (1,'Matthew Smith','Male');
INSERT INTO Employee (ID,Name,Sex)
VALUES (2,'Ann Jones','Female');
INSERT INTO Employee (ID,Name,Sex)
VALUES (3,'John Barrimore','Male');
INSERT INTO Employee (ID,Name,Sex)
VALUES (4,'James James','Male');
INSERT INTO Employee (ID,Name,Sex)
VALUES (5,'Elsa Bertoni','Female');
INSERT INTO Employee (ID,Name,Sex)
VALUES (6,'Elke Hansel','Female');
INSERT INTO Company VALUES (1,'Comp_A','Pharma','Kansas City');
INSERT INTO Company VALUES (2,'Comp_B','Manufacturing','Hoboken');
INSERT INTO Company VALUES (3,'Comp_C','Pharma','Indianopolis');
INSERT INTO Company VALUES (4,'Comp_D','IT','Lexington');
INSERT INTO Company VALUES (5,'Comp_E','IT','Madison');
INSERT INTO City VALUES (1,'Kansas City','Kansas');
INSERT INTO City VALUES (2,'Hoboken','New Jersey');
INSERT INTO City VALUES (3,'Indianopolis','Indiana');
INSERT INTO City VALUES (4,'Lexington','Kentucky');
INSERT INTO City VALUES (5,'Minneapolis','Wisconsin');
INSERT INTO City VALUES (6,'Madison','Wisconsin');

-- Example 31.3
USE graph_db;
CREATE TABLE WorksIn (starts INT) AS EDGE;
CREATE TABLE LocatedIn AS EDGE;
CREATE TABLE LivesIn (Since DATE NULL
CONSTRAINT Emp_to_City CONNECTION (Employee TO City)) AS EDGE;
-- Example 31.4
--To insert data into an edge table we need to provide the reference for
-- the $from_id and $to_id as a reference point to both nodes
USE graph_db;
INSERT INTO WorksIn VALUES ((SELECT $node_id FROM Employee WHERE id = 1),
(SELECT $node_id FROM Company WHERE id = 1), 2015);
INSERT INTO WorksIn VALUES ((SELECT $node_id FROM Employee WHERE id = 2),
(SELECT $node_id FROM Company WHERE id = 2), 2018);
INSERT INTO WorksIn VALUES ((SELECT $node_id FROM Employee WHERE id = 3),
(SELECT $node_id FROM Company WHERE id = 3), 2015);
INSERT INTO WorksIn VALUES ((SELECT $node_id FROM Employee WHERE id = 4),
(SELECT $node_id FROM Company WHERE id = 3), 2016);
INSERT INTO WorksIn VALUES ((SELECT $node_id FROM Employee WHERE id = 5),
(SELECT $node_id FROM Company WHERE id = 3), 2017);
INSERT INTO WorksIn VALUES ((SELECT $node_id FROM Employee WHERE id = 6),
(SELECT $node_id FROM Company WHERE id = 4), 2018);
-- Example 31.5
USE graph_db;
INSERT INTO LocatedIn VALUES ((SELECT $node_id FROM Company WHERE id = 1),
(SELECT $node_id FROM City WHERE id=2))
INSERT INTO LocatedIn VALUES ((SELECT $node_id FROM Company WHERE id = 2),
(SELECT $node_id FROM City WHERE id=1));
INSERT INTO LocatedIn VALUES ((SELECT $node_id FROM Company WHERE id = 3),
(SELECT $node_id FROM City WHERE id=3));
INSERT INTO LocatedIn VALUES ((SELECT $node_id FROM Company WHERE id = 4),
(SELECT $node_id FROM City WHERE id=2));

-- Example 31.6
USE graph_db;
INSERT INTO LivesIn VALUES ((SELECT $node_id FROM Employee WHERE id = 1),
(SELECT $node_id FROM City WHERE id=6), '1.1.2018');
INSERT INTO LivesIn VALUES ((SELECT $node_id FROM Employee WHERE id = 2),
(SELECT $node_id FROM City WHERE id=5), '2.1.2018');
INSERT INTO LivesIn VALUES ((select $node_id FROM Employee WHERE id = 3),
(SELECT $node_id FROM City WHERE id=4), '3.1.2018');
INSERT INTO LivesIn VALUES ((SELECT $node_id FROM Employee WHERE id = 4),
(SELECT $node_id FROM City WHERE id=2), '4.1.2018');
INSERT INTO LivesIn VALUES ((SELECT $node_id FROM Employee WHERE id = 5),
(SELECT $node_id FROM City WHERE id=3), '5.1.2018')
INSERT INTO LivesIn VALUES ((SELECT $node_id FROM Employee WHERE id = 6),
(SELECT $node_id FROM City WHERE id=1), '6.1.2018');
-- Example 31.7
-- Get the names of the companies and the names of their employees
USE graph_db;
SELECT DISTINCT Cmp.Name CName, Emp.Name EName
FROM Employee Emp, WorksIn, Company Cmp
WHERE MATCH(Emp-(WorksIn)->Cmp);

-- Example 31.8
-- Get the name of the company where Matthew Smith works
USE graph_db;
SELECT Cmp.Name CName
FROM Employee Emp, WorksIn, Company Cmp
WHERE MATCH(Emp-(WorksIn)->Cmp)
AND Emp.Name= 'Matthew Smith';

-- Example 31.9
-- Get the list of the employees who live in Madison
USE graph_db;
SELECT Emp.Name EName
FROM Employee Emp, LivesIn, City
WHERE MATCH(Emp-(LivesIn)->City)
AND City.Name='Madison';

-- Example 31.10
-- Get the list of companies located in the city of Hoboken
-- Sort the companies according to their names
USE graph_db;
SELECT Cmp.Name CName
FROM City C, LocatedIn, Company Cmp
WHERE MATCH(Cmp-(LocatedIn)->C)
AND C.Name='Hoboken' ORDER BY 1;

-- Example 31.11
USE graph_db;
SELECT Employee.name EName, Company.name CName
FROM Employee, WorksIn, Company, LocatedIn, City
WHERE MATCH(Employee-(WorksIn)->Company
AND Company-(LocatedIn)->City )
AND WorksIn.Starts='2017' AND Company.name='Comp_C';

-- Example 31.12
USE graph_db;
SELECT Employee.name, Company.name
FROM Employee, WorksIn, Company, LocatedIn, City
WHERE MATCH(Employee-(WorksIn)->Company-(LocatedIn)->City)
AND WorksIn.Starts='2017' and Company.name='Comp_C';
-- Example 31.13
-- Create an edge table for the recursive relationship
USE graph_db;
CREATE TABLE dbo.Is_Liked(start_date DATE) AS EDGE;
-- Insert several rows
INSERT INTO Is_Liked VALUES
((SELECT $node_id FROM employee WHERE ID = 1),
(SELECT $node_id FROM Employee WHERE ID = 2),'1.1.2017');
INSERT INTO Is_Liked VALUES
((SELECT $node_id FROM employee WHERE ID = 1),
(SELECT $node_id FROM Employee WHERE ID = 3),'2.1.2018');
INSERT INTO Is_Liked VALUES
((SELECT $node_id FROM employee WHERE ID = 1),
(SELECT $node_id FROM Employee WHERE ID = 4),'3.1.2019');
INSERT INTO Is_Liked VALUES
((SELECT $node_id FROM employee WHERE ID = 2),
(SELECT $node_id FROM Employee WHERE ID = 3),'4.1.2016');
INSERT INTO Is_Liked VALUES
((SELECT $node_id FROM employee WHERE ID = 2),
(SELECT $node_id FROM Employee WHERE ID = 5),'5.1.2017');
INSERT INTO Is_Liked VALUES
((SELECT $node_id FROM employee WHERE ID = 2),
(SELECT $node_id FROM Employee WHERE ID = 6),'6.1.2017');
INSERT INTO Is_Liked VALUES
((SELECT $node_id FROM employee where ID = 3),
(SELECT $node_id FROM Employee WHERE ID = 4),'7.1.2018');
INSERT INTO Is_Liked VALUES
((SELECT $node_id FROM employee where ID = 4),
(SELECT $node_id FROM Employee WHERE ID = 5),'8.1.2016');
INSERT INTO Is_Liked VALUES
((SELECT $node_id FROM employee where ID = 4),
(SELECT $node_id FROM Employee WHERE ID = 6),'9.1.2017');
INSERT INTO Is_Liked VALUES
((SELECT $node_id FROM employee where ID = 5),
(SELECT $node_id FROM Employee WHERE ID = 6),'10.1.2019');

-- Example 31.14
USE graph_db;
SELECT E1.name AS SourceName, E2.name AS TargetName
FROM Employee E1, Is_Liked, Employee E2
WHERE MATCH(E1-(Is_Liked)->E2);

-- Example 31.15
-- Display all employees that like Matthew Smith
USE graph_db;
SELECT E2.name AS FriendName
FROM Employee E1, Is_Liked, Employee E2
WHERE MATCH(E1-(Is_Liked)->E2)
AND E1.name = 'Matthew Smith';

-- Example 31.16
-- Display all employees who are liked by Matthew Smith
USE graph_db
SELECT E2.name AS FriendName
FROM Employee E1, Is_Liked, Employee E2
WHERE MATCH(E2-(Is_Liked)->E1) AND E1.name = 'Matthew Smith';

-- Example 31.17
-- Display all employees who like employees that like Ann Jones
USE graph_db;
SELECT Person3.name AS FriendName
FROM Employee Person1, Employee Person2,
Is_Liked, Is_Liked Is_Liked2, Employee Person3
WHERE MATCH(Person1-(Is_Liked)->Person2-(Is_Liked2)->Person3)
AND Person1.name = 'Ann Jones';
-- Example 31.18
USE graph_db;
INSERT into LivesIn VALUES ((SELECT $node_id FROM Employee WHERE id = 6),
(SELECT $node_id FROM City WHERE id = 5), '2.1.2018');

-- Example 31.19
USE graph_db;
SELECT E.Name, C.Name
FROM Employee E, LivesIn, City C
WHERE MATCH(E -(LivesIn)->C) AND E.id = 6 AND C.id = 5;

-- Example 31.20
USE graph_db;
DELETE FROM LivesIn
WHERE $from_id =(SELECT $node_id FROM Employee WHERE id = 6)
AND $to_id = (SELECT $node_id FROM City WHERE id = 5);

-- Example 31.21
USE graph_db;
DELETE LivesIn
FROM Employee E, LivesIn, City C
WHERE MATCH(E-(LivesIn)->C) AND E.id = 6 AND C.id = 5;

-- Example 31.22
USE graph_db;
UPDATE WorksIn SET Starts = 2020
WHERE $from_id = (SELECT $node_id FROM Employee WHERE id = 6)
AND $to_id = (SELECT $node_id FROM Company WHERE id = 1);

-- Example 31.23
USE graph_db;
SELECT name, is_node, is_edge
FROM sys.tables
WHERE is_node = 1 OR is_edge = 1;
-- Example 31.24
USE graph_db;
SELECT EC.name AS Edge_constraint
, OBJECT_NAME(EC.parent_object_id) AS Edge_table
, OBJECT_NAME(ECC.from_object_id) AS From_node_table
, OBJECT_NAME(ECC.to_object_id) AS To_node_table
FROM sys.edge_constraints EC
INNER JOIN sys.edge_constraint_clauses ECC
ON EC.object_id = ECC.object_id
WHERE EC.parent_object_id = object_id('LivesIn');

-- Example 31.25
USE graph_db;
SELECT NODE_ID_FROM_PARTS(OBJECT_ID('dbo.Company'), 0);

-- Example 31.26
DECLARE @table1 INT = OBJECT_ID('dbo.Company');
DECLARE @table2 INT = OBJECT_ID('dbo.City');
INSERT INTO LocatedIn ($from_id, $to_id)
VALUES (NODE_ID_FROM_PARTS(@table1, 1),
NODE_ID_FROM_PARTS(@table2, 2));

-- Example 31.27
USE graph_db;
CREATE TABLE dbo.Employee1 (
ID int NOT NULL PRIMARY KEY,
name varchar (100) NULL, sex char (10) NULL);
INSERT INTO Employee1 VALUES (1,'Matthew Smith','Male');
INSERT INTO Employee1 VALUES (2,'Ann Jones','FeMale');
INSERT INTO Employee1 VALUES (3,'John Barrimore','Male');
INSERT INTO Employee1 VALUES (4,'James James','Male');
INSERT INTO Employee1 VALUES (5,'Elsa Bertoni','FeMale');
INSERT INTO Employee1 VALUES (6,'Elke Hansel','FeMale');

-- Example 31.28
USE graph_db;
CREATE TABLE Employee1_Friend
(EmployeeID INT NOT NULL, FriendID INT);
INSERT INTO Employee1_Friend values (1,2)
INSERT INTO Employee1_Friend values (1,3)
INSERT INTO Employee1_Friend values (1,4)
INSERT INTO Employee1_Friend values (2,3)
INSERT INTO Employee1_Friend values (2,5)
INSERT INTO Employee1_Friend values (2,6)
INSERT INTO Employee1_Friend values (3,4)
INSERT INTO Employee1_Friend values (4,5)
INSERT INTO Employee1_Friend values (4,6)
INSERT INTO Employee1_Friend values (5,6)

-- Example 31.29
USE graph_db;
SELECT e1.name
FROM employee1 e1 JOIN Employee1_Friend
ON Employee1_Friend.FriendID = e1.ID JOIN employee1 e2
ON Employee1_Friend.EmployeeID = e2.ID
WHERE e2.name = 'Matthew Smith';

-- Example 31.30
USE graph_db;
SELECT e1.name
FROM employee1 e1 JOIN Employee1_Friend
ON Employee1_Friend.EmployeeID = e1.ID
JOIN employee1 e2
ON Employee1_Friend.FriendID = e2.ID
WHERE e2.name = 'Matthew Smith';

-- Example 31.31
USE graph_db;
SELECT e1.name AS EMP_Name, e2.name AS FriendOfFriend
FROM Employee1_Friend ef1 JOIN employee1 e1
ON ef1.EmployeeID = e1.ID
JOIN Employee1_Friend ef2 ON ef2.EmployeeID = ef1.FriendID
JOIN employee1 e2 ON ef2.FriendID = e2.ID
WHERE e1.name = 'Ann Jones' AND ef2.FriendID <> e1.ID;

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy