áááºáááºážáá
áááºáá®
ááááºááºáá±áá¬áá±á·á
áºáá»á¬ážááẠáá±áá¬áá±á·á
áºáá»áœááºážáá»ááºáá°áá»á¬ážá¡ááœáẠá¡áá±ážááŒá®ážáá±á¬áááºážááá¬áá
áºáá¯ááŒá
áºáááºá á€áááºáááºááŸá áá®ááœááºáááºážáá
áºááŸá¯áá»á¬ážááŸáá·áº áááºážááá¬á¡áá
áºáá»á¬ážááᯠááá¯ááºáá»á±á¬áá®ááœá±ááŒá
áºá¡á±á¬áẠááŒáá¯ážá
á¬ážááŒá®áž áááºá
ááºááŸá¯ááŸáá·áº NoSQL áá±áá¬áá±á·á
áºáá»á¬ážááŸáá·áº áá¯ááºáá±á¬ááºááŒá®ážáá±á¬ááºá ááááºáá±áá¬áá±á·á
áºáá»á¬ážá á¡áááºážááá¹áááẠááá¯áá¡áá±ážááŒá®ážáá¬áááºááᯠáá»áœááºáá±á¬áºááŒááºáá«áááºá ááŸá¯ááºááœá±ážáá±á¬ hierarchical data áá»á¬ážááŸáá·áºá¡áá¯ááºáá¯ááºáá±á¬á¡áá«á ááá¬ážááá¯ážáá»áá±áá¬áá±á·á
áºáá»á¬ážáá¬áá NoSQL áááºážáááá±á¬ááºááŸá¯áááŸááá«á áá»áááºáááºááŸá¯ á¡ááá·áºá¡áá±á¡ááœááºááŸáá·áº áá±áá¬áá±á·á
áºá á¡ááœááºá¡á
á¬áž ááá¯ážáá¬áááºááŸáá·áºá¡áá»áŸ á
áœááºážáá±á¬ááºááẠáá»áááºážááœá¬ážáááºáááºá áááºáá¶áá±ážáá»á¬áž ááá¯ááá¯ááŸá¯ááºááœá±ážáá¬áááºááŸáá·áºá¡áá»áŸ JOIN á¡áá±á¡ááœááºáááºáž ááá¯ážáá¬áá«áááºá
áá¯ááºáá«áááºá áááºá ááºáá±á¬áºáááºááºááœáẠá¡áááºáááºážá¡ááá·áºáá»á¬áž (á¥ááá¬á recursive CTEs ááᯠá¡áá¯á¶ážááŒá¯ááŒááºáž) ááŸáá·áº áá¯ááºáá±á¬ááºááẠááŒá±ááŸááºážáá»ááºáá»á¬áž ááŸááááºá ááá¯á·áá±á¬áº áááºážááá¯á·ááẠááŒá±ááŸááºážáááºážáá»á¬áž ááŒá áºáá±áá²ááŒá áºáááºá áá áºáá»áááºáááºážááŸá¬áááºá SQL Server ááááºááºáá±áá¬áá±á·á áºáá»á¬ážááá¯ááºáá±á¬ááºááá¯ááºá áœááºážááẠááá·áºá¡á¬áž á¡áááºá¡á±á¬ááºá¡ááá·áºáá»á¬ážá áœá¬ááᯠá¡ááœááºááá°ááá¯ááºááœááºááá¯ááºá á±áá«áááºá áá±áá¬áá±á¬áºáááºááŸáá·áº áá±ážááŒááºážáá»ááºááŸá áºáá¯áá¯á¶ážááẠááá¯ážááŸááºážáá±á¬ááŒá±á¬áá·áº áááºážááá¯á·á á áœááºážáá±á¬ááºááẠááá¯ážááŒáá·áºáá¬áá«áááºá áá¯áẠááá¬á áááááá¬áᬠáá»á±á¬á·áá»ááœá¬ážáááºá
ááááºááºáá±áá¬áá±á·á áºáá»á¬ážááẠááŸá¯ááºááœá±ážáá±á¬á áá áºáá»á¬ážááᯠááá¯ááºá á¬ážááŒá¯áááºá¡ááœáẠáá±á¬áºááŒááá¯ááºáá±á¬ áá¬áá¬á áá¬ážáá áºáá¯ááŒá áºáááºá áá°ááŸá¯ááœááºáááºáá»á¬ážá ááááºáááºááŸá¯ááá·áºáá»ááºáá±ážá áá áºáá»á¬ážá á¡áá¯ááºáá®ááœááºáááºááœá²ááŒááºážá áááºááŒá¬ááŸá¯á áá°ááŸá¯áá±ážá¡ááŒá¶ááŒá¯áá»ááºáá»á¬ážá áá¯ááºáá¯ááºááŸáá·áº á¡ááŒá±á¬ááºážá¡áá¬á¡ááŒá¶ááŒá¯áá»ááºáá»á¬ážáá²á·ááá¯á·áá±á¬ áááºáááºáá»á¬ážááœáẠá€áááºážááá¬ááᯠá¡áá¯ááºáá®áá¯ááºáááºážááœáẠááœááºáá»ááºá áœá¬á¡áá¯á¶ážááŒá¯áá±ááŒá®ááŒá áºáááºá
SQL Server ááŸá ááááºááºáá±áá¬áá±á·á áºáá¯ááºáá±á¬ááºááá¯ááºá áœááºážááẠáá±áá¬á¡ááœááºá¡ááŒááºá¡ááŸááºáá»áááºáááºááŒá®áž áá±á¬ááºážááœááºá áœá¬áááºááŸááºáá¬ážáá±á¬áááºáá¶áá±ážáá»á¬ážááŸáááá·áº á¡ááŒá±á¡áá±áá»á¬ážá¡ááœáẠááá·áºáá»á±á¬áºáááºá
ááááºáá áºáá±áá¬áá±á¬áºáááº
ááááºáá áºáá¯ááẠáá±á«ááºááá¯ááºáá»á¬áž (node) ááŸáá·áº á¡á áœááºážáá»á¬áž (áááºá ááºááŸá¯á á¡á áœááºážáá»á¬áž) á¡á á¯á¡áá±ážáá áºáá¯ááŒá áºáááºá Vertices áá»á¬ážááẠentities áá»á¬ážááᯠááá¯ááºá á¬ážááŒá¯ááŒá®áž edges áá»á¬ážááẠinformation áá»á¬ážáá«ááŸááá±á¬ á¡áááºá¡áá»ááºážáá»á¬ážááᯠááá¯ááºá á¬ážááŒá¯áá«áááºá
ááááºáẠáá±áá¬áá±á·á áºááẠááááºáá®á¡áá¯áá®ááœáẠáááºááŸááºáá¬ážááá·áºá¡ááá¯ááºáž ááááºáá áºáá¯á¡ááŒá Ạá¡á á¯á¡áá±ážáá»á¬ážááᯠá á¶ááá°áá¬ááŒá¯áááºá áá±áá¬áááºáá±á¬ááºáá¯á¶áá»á¬ážááẠáá±á«ááºááá¯ááºááŸáá·áº á¡á áœááºážáá»á¬ážááŒá áºáááºá áááºááœáŸááºážáá»ááºáá»á¬ážááẠáá±á«ááºááá¯ááºáá»á¬ážááŸáá·áº á¡á áœááºážáá»á¬ážá áá¯ááºááá¹áááá»á¬ážááŒá áºáááºá áá»áááºáááºááŸá¯áá áºáá¯ááẠáá±á«ááºááá¯ááºáá»áááºáááºááŸá¯áá áºáá¯ááŒá áºáááºá
á¡ááŒá¬ážáá±áá¬áá±á¬áºáááºáá»á¬ážááŸáá·áºááá°áá²á ááááºááºáá±áá¬áá±á·á áºáá»á¬ážááẠá¡ááœá²á·á¡á ááºážáá»á¬ážááŒá¬ážááŸá áááºáá¶áá±ážáá»á¬ážááᯠáŠážá á¬ážáá±ážáááºá ááá¯á·ááŒá±á¬áá·áº ááá¯ááºáá¶ááŒá¬ážáá±á¬á·áá»á¬áž ááá¯á·ááá¯áẠá¡ááŒá¬ážáááºážáááºážáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯á áááºáá¶áá±ážááᯠááœááºáá»ááºáááºáááá¯á¡ááºáá«á vertex ááŸáá·áº edge abstractions áá»á¬ážááá¯áᬠá¡áá¯á¶ážááŒá¯á ááŸá¯ááºááœá±ážáá±á¬áá±áá¬áá±á¬áºáááºáá»á¬ážááᯠáááºáá®ážááá¯ááºáááºá
áá±ááºáá áºááá¹áá¬ááœááºá áá±á¬áºáááºááºáááºáá¶áá±ážááẠááá¯ááá¯ááŸá¯ááºááœá±ážáá±á¬áááºážááá¬áá»á¬áž ááá¯á¡ááºáááºá áááºáá¶áá±ážáá¯á¶á á¶á¡ááœááºá SQL Server 2017 ááẠááááºáá±áá¬áá±á·á áºá áœááºážáááºáá»á¬ážááᯠáá±ážáá±á¬ááºáááºá ááááºá áá±á«ááºááá¯ááºáá»á¬ážááŸáá·áº á¡á áœááºážáá»á¬ážááᯠááá¬ážá¡áá»áá¯ážá¡á á¬ážáá áºáá»á¬ážá¡ááŒá Ạááá¯ááºá á¬ážááŒá¯áááº- NODE ááŸáá·áº EDGEá Graph queries ááẠMATCH() áá¯áá±á«áºáá±á¬ T-SQL áá¯ááºáá±á¬ááºáá»ááºá¡áá áºááᯠá¡áá¯á¶ážááŒá¯áááºá á€áá¯ááºáá±á¬ááºáá»ááºááᯠSQL Server 2017 ááœááºáááºáá±á¬ááºáá¬ážáá±á¬ááŒá±á¬áá·áºá ááŒá±á¬ááºážáá²ááŒááºážáááá¯á¡ááºáá² ááá·áºáááºááŸááá±áá¬áá±á·á áºáá»á¬ážááœááºá¡áá¯á¶ážááŒá¯ááá¯ááºáá«áááºá
ááááºáá±á¬áºáááºáá¡áá»áá¯ážáá»á±ážáá°ážáá»á¬áž
ááá±á·áá±ááºááœáẠáá¯ááºáááºážáá»á¬ážááŸáá·áº áá¯á¶ážá áœá²áá°áá»á¬ážááẠá áœááºážáá±á¬ááºáááºááŒáá·áºáá¬ážááŒá®áž áá¯á¶ááŒááºá áááºáá»áááŸá¯ááᯠáá»áŸá±á¬áºááá·áºáá±áá»áááºááœáẠáá±áá¬ááá¯áááá¯á ááá¯ááºááœááºááá¯ááºáá±á¬ á¡ááá®áá±ážááŸááºážáá»á¬ážááᯠáá±á¬ááºážááá¯ááŒáááºá áá±áá¬ááᯠááááºá¡ááŒá Ạááá¯ááºá á¬ážááŒá¯ááŒááºážááẠááŸá¯ááºááœá±ážáá±á¬áááºáá¶áá±ážáá»á¬ážááᯠááá¯ááºááœááºáá¬ááœáẠá¡áááºááŒá±áá±á¬áááºážáááºážááᯠáá±ážáá±á¬ááºáááºá á€áá»ááºážáááºááŸá¯ááẠááŒá¿áá¬áá»á¬ážá áœá¬ááᯠááŒá±ááŸááºážááá¯ááºááŒá®áž áá±ážáá¬ážáá±á¬á¡ááŒá±á¬ááºážá¡áá¬áá áºáá¯á¡ááœááºáž ááááºáá»á¬ážáááŸáááẠáá°áá®áá±ážáááºá
á¡áá¬áááºááœáẠááááºááºáá±áá¬áá±á·á áºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááŒááºážá០á¡ááá®áá±ážááŸááºážáá»á¬ážá áœá¬ááẠá¡áá»áá¯ážááŸááá¯á¶ááááºá
áá±áá¬áá¯á¶á á¶áááºáá±á¬ááºááŒááºáž- áááºááœááºááŸá¯á០ááááºáá¯á¶á á¶á¡áá
ááá°áá¬
áááºáááºážáá»á¬ážá á¡áááºáááºážá¡ááá·áºáá«ááŸááá±á¬ á¡ááœá²á·á¡á ááºážááœá²á·á ááºážáá¯á¶á á¥ááá¬ááᯠááŒáá·áºááŒáá«á áá¯á·á áááºáááºážáá áºáŠážááẠáááºáá±áá»á¬áᶠááá¯ááºááŒá¬ážáááºá áááºáá±áá»á¬áá áºáŠážááẠá¡ááŒá®ážáááºážáááºáá±áá»á¬áᶠááá¯ááºááŒá¬ážááŒááºážá áááºááŒáá·áºá áááºááŸááºáá¬ážáá±á¬ áá¯áá¹ááá®á¡áá±á«áºáá°áááºá á€á¡áááºáááºážá¡ááá·áºááœáẠáááºááá·áºá¡ááá·áºáá»á¬áž ááŸáááá¯ááºáá«áááºá ááá¯á·áá±á¬áº á¡ááá·áºá¡áá±á¡ááœááºáá»á¬ážáá¬áááºááŸáá·áºá¡áá»áŸ áááºá ááºáá±áá¬áá±á·á áºáá áºáá¯ááŸá áááºáá¶áá±ážáá»á¬ážááᯠááœááºáá»ááºáá¬ááœáẠááá¯ááááºáá²áá¬áááºá áááºáááºážáá»á¬ážá á¡áááºáááºážá¡ááá·áºá á á»á±ážááœááºááŸá¬ááœá±ááŒááºáž ááá¯á·ááá¯áẠáá°ááŸá¯ááœááºáááºáá»á¬ážááœáẠáá»áááºáááºááŸá¯áá»á¬ážááœáẠá¡áááºáááºážá¡ááá·áºááᯠá áááºáá°ážááŒáá·áºááẠá¡ááœááºáááºáá²áááºá SQL Graph ááẠááá°áá®áá±á¬ á¡áááºá¡á±á¬áẠá¡ááá·áºáá»á¬ážááᯠááá¯ááºááœááºááŒááºážááá¯ááºáᬠááŒá¿áá¬ááᯠáááºááá¯á·ááŒá±ááŸááºážááá¯ááºáááºááᯠááŒáá·áºááŒáá«á áá¯á·á
á€á¥ááá¬á¡ááœáẠáá»áœááºá¯ááºááá¯á·ááẠááá¯ážááŸááºážáá±á¬áá±áá¬áá¯á¶á á¶áá áºáá¯ááᯠááŒá¯áá¯ááºáá«áááºá áááºáááºážá á¬ážááœá²áá áºáᯠáááºáá®ážááá¯ááºáá¡á±á¬áẠPMS ID ááŒáá·áº EMPNO ááŸáá·áº áá±á¬áºáᶠM.G.R.áááºáááºážá ááŒá®ážááŒááºáá±ážááŸá°áž (áááºáá±áá»á¬) á á¡áá±á¬ááºá¡áá¬ážááᯠááœáŸááºááŒáááºá á¡áááºáááºážá¡ááá·áºááá¯ááºáᬠá¡áá»ááºá¡áááºá¡á¬ážáá¯á¶ážááᯠá€ááá¬ážááœáẠááááºážáááºážáá¬ážááŒá®áž áá±á¬áºáá¶áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯á áá±ážááŒááºážááá¯ááºáá«áááºá EMPNO О M.G.R..
á¡á±á¬ááºáá±á¬áºááŒáá« áá¯á¶ááŒááºážááẠááá¯ááá¯áááºážááŸá®ážáá±á¬áá¯á¶á
á¶ááŒáá·áº nesting á¡ááá·áºáá±ážááá·áºáá«ááá·áº áá°áá®áá±á¬á¡ááœá²á·á¡á
ááºážááœá²á·á
ááºážáá¯á¶áá¯á¶á
á¶ááᯠááŒááá¬ážáááºá áááºáááºážáá»á¬ážááẠááá¬ážáá
áºáá¯á០ááááºáá
áºáá¯á áá±á¬áá·áºáá»á¬ážááŒá
áºáááºá PMS. á¡ááœá²á·á¡á
ááºáž "áááºáááºáž" ááẠáá»áááºáááºááŸá¯ "áááºááŒááŒááºáž" (ReportsTo) ááŒáá·áº áá»áááºáááºáá¬ážáááºá ááááºá¡áá¯á¶ážá¡ááŸá¯ááºážáá»á¬ážááœáẠááá·áºááºááẠáááºáááºážáá»á¬ážá áá¯á¶ááŸááºáá»á¬áž (NODE) ââááᯠáá»áááºáááºáá±ážááá·áº á¡á
áœááºážáá
áºáᯠ(EDGE) ááŒá
áºáááºá
áá¯á¶ááŸááºááá¬ážáá
áºáá¯áááºáá®ážááŒáá«á
áá¯á· PMS á¡áááºáá±á¬áºááŒáá« áá¯á¶ááŒááºážááŸáá·áºá¡áá® ááá¯áá±áá¬ááœáẠáááºááá¯ážáá»á¬ážááᯠáá±á«ááºážááá·áºáá«á
CREATE TABLE EMP
(EMPNO INT NOT NULL,
ENAME VARCHAR(20),
JOB VARCHAR(10),
MGR INT,
JOINDATE DATETIME,
SALARY DECIMAL(7, 2),
COMMISIION DECIMAL(7, 2),
DNO INT)
INSERT INTO EMP VALUES
(7369, 'SMITH', 'CLERK', 7902, '02-MAR-1970', 8000, NULL, 2),
(7499, 'ALLEN', 'SALESMAN', 7698, '20-MAR-1971', 1600, 3000, 3),
(7521, 'WARD', 'SALESMAN', 7698, '07-FEB-1983', 1250, 5000, 3),
(7566, 'JONES', 'MANAGER', 7839, '02-JUN-1961', 2975, 50000, 2),
(7654, 'MARTIN', 'SALESMAN', 7698, '28-FEB-1971', 1250, 14000, 3),
(7698, 'BLAKE', 'MANAGER', 7839, '01-JAN-1988', 2850, 12000, 3),
(7782, 'CLARK', 'MANAGER', 7839, '09-APR-1971', 2450, 13000, 1),
(7788, 'SCOTT', 'ANALYST', 7566, '09-DEC-1982', 3000, 1200, 2),
(7839, 'KING', 'PRESIDENT', NULL, '17-JUL-1971', 5000, 1456, 1),
(7844, 'TURNER', 'SALESMAN', 7698, '08-AUG-1971', 1500, 0, 3),
(7876, 'ADAMS', 'CLERK', 7788, '12-MAR-1973', 1100, 0, 2),
(7900, 'JAMES', 'CLERK', 7698, '03-NOV-1971', 950, 0, 3),
(7902, 'FORD', 'ANALYST', 7566, '04-MAR-1961', 3000, 0, 2),
(7934, 'MILLER', 'CLERK', 7782, '21-JAN-1972', 1300, 0, 1)
á¡á±á¬ááºáá±á¬áºááŒáá«áá¯á¶ááẠáááºáááºážáá»á¬ážá¡á¬áž ááŒááá¬ážáááºá
- áááºáááºážááŸáá·áºá¡áá° EMPNO 7369 áá¬áᶠ7902;
- áááºáááºážááŸáá·áºá¡áá° EMPNO áááá áá¬áᶠáá áá
- áááºáááºážááŸáá·áºá¡áá° EMPNO áááá áá¬áᶠáá áá
áá°áá®áá±á¬áá±áá¬ááá¯ááá¯ááºá
á¬ážááŒá¯ááá·áºááááºááá¯ááŒáá·áºááŒáá«á
áá¯á·á EMPLOYEE vertex ááœáẠáááºááœáŸááºážáá»ááºáá»á¬ážá
áœá¬áá«ááŸáááŒá®áž âáááºá¡á±á¬ááºáááºáá¬ážáá»á¬ážâ áááºáá¶áá±áž (EmplReportsTo) ááŒáá·áº áááºážááŸáá·áº áá»áááºáááºáá¬ážáááºá EmplReportsTo ááẠáááºáá¶áá±ážáá¡áááºááŒá
áºáááºá
á¡á áœááºážááá¬áž (EDGE) ááœááºáááºáž áááºááœáŸááºážáá»ááºáá»á¬áž áá«áááºááá¯ááºáááºá
node ááá¬áž EmpNode ááá¯áááºáá®ážááŒáá«á
áá¯á·
node áá áºáá¯áááºáá®ážáááºá¡ááœáẠsyntax áááºá¡áá±á¬áºáá±ážááá¯ážááŸááºážáááº- expression áá®ááá¯á· TABLE áááºáá®ážáá« á¡áá¯á¶ážááœááºááá·áºáááºá "á¡ááŸááºá¡áá¬ážá¡ááŒá áº".
CREATE TABLE dbo.EmpNode(
ID Int Identity(1,1),
EMPNO NUMERIC(4) NOT NULL,
ENAME VARCHAR(10),
MGR NUMERIC(4),
DNO INT
) AS NODE;
ááᯠáá¯á¶ááŸááºááá¬ážá០áá±áá¬ááᯠááááºáá áºáá¯ááá¯á· ááŒá±á¬ááºážááŒáá·áºáá¡á±á¬ááºá áá±á¬ááºáá áºáᯠááá·áºááœááºážáá« áááºá ááºááá¬ážáá áºáá¯á០á¡áá»ááºá¡áááºááᯠááá·áºááœááºážáá«á PMS.
INSERT INTO EmpNode(EMPNO,ENAME,MGR,DNO) select empno,ename,MGR,dno from emp
á¡áá°ážáá±á¬áºáá¶áá
áºáá¯ááŸá nodes ááá¬ážááœáẠ$node_id_*
node identifier ááᯠJSON á¡ááŒá
Ạááááºážáááºážáá¬ážáááºá á€ááá¬ážááá»ááºáá±á¬áºáá¶áá»á¬ážááœáẠnode ááá¯ááºáááºáá»á¬ážáá«ááŸááááºá
á¡á áœááºážáá»á¬ážáááºáá®ážááŒááºáž (EDGE)
á¡á áœááºážááá¬ážáá áºáá¯áááºáá®ážááŒááºážááẠáá±á¬á·áá»ááºá á¬áá¯á¶ážááá¯á¡áá¯á¶ážááŒá¯áá¬ážááŸááœá²á node table áááºáá®ážááŒááºážááŸáá·áº á¡ááœááºáááºáá°áááºá "á¡á áœááºážá¡ááá¯ááºáž".
CREATE TABLE empReportsTo(Deptno int) AS EDGE
á¡áᯠáá±á¬áºáá¶ááœá±áá¯á¶ážááŒá®áž áááºáááºážááœá±ááŒá¬áž áá»áááºáááºááŸá¯ááᯠáááºááŸááºááá¯ááºáá¡á±á¬áẠEMPNO О M.G.R.. á¡ááœá²á·á¡á
ááºážááœá²á·á
ááºážáá¯á¶ ááá¬ážááœáẠáááºááá¯á·áá±ážááááºááᯠááŸááºážáááºážá
áœá¬ááŒááá¬ážáááºá ááá·áºááœááºážáá«.
INSERT INTO empReportsTo VALUES ((SELECT $node_id FROM EmpNode WHERE ID = 1),
(SELECT $node_id FROM EmpNode WHERE id = 13),20);
INSERT INTO empReportsTo VALUES ((SELECT $node_id FROM EmpNode WHERE ID = 2),
(SELECT $node_id FROM EmpNode WHERE id = 6),10);
INSERT INTO empReportsTo VALUES ((SELECT $node_id FROM EmpNode WHERE ID = 3),
(SELECT $node_id FROM EmpNode WHERE id = 6),10)
INSERT INTO empReportsTo VALUES ((SELECT $node_id FROM EmpNode WHERE ID = 4),
(SELECT $node_id FROM EmpNode WHERE id = 9),30);
INSERT INTO empReportsTo VALUES ((SELECT $node_id FROM EmpNode WHERE ID = 5),
(SELECT $node_id FROM EmpNode WHERE id = 6),30);
INSERT INTO empReportsTo VALUES ((SELECT $node_id FROM EmpNode WHERE ID = 6),
(SELECT $node_id FROM EmpNode WHERE id = 9),30);
INSERT INTO empReportsTo VALUES ((SELECT $node_id FROM EmpNode WHERE ID = 7),
(SELECT $node_id FROM EmpNode WHERE id = 9),30);
INSERT INTO empReportsTo VALUES ((SELECT $node_id FROM EmpNode WHERE ID = 8),
(SELECT $node_id FROM EmpNode WHERE id = 4),30);
INSERT INTO empReportsTo VALUES ((SELECT $node_id FROM EmpNode WHERE ID = 9),
(SELECT $node_id FROM EmpNode WHERE id = 9),30);
INSERT INTO empReportsTo VALUES ((SELECT $node_id FROM EmpNode WHERE ID = 10),
(SELECT $node_id FROM EmpNode WHERE id = 6),30);
INSERT INTO empReportsTo VALUES ((SELECT $node_id FROM EmpNode WHERE ID = 11),
(SELECT $node_id FROM EmpNode WHERE id = 8),30);
INSERT INTO empReportsTo VALUES ((SELECT $node_id FROM EmpNode WHERE ID = 12),
(SELECT $node_id FROM EmpNode WHERE id = 6),30);
INSERT INTO empReportsTo VALUES ((SELECT $node_id FROM EmpNode WHERE ID = 13),
(SELECT $node_id FROM EmpNode WHERE id = 4),30);
INSERT INTO empReportsTo VALUES ((SELECT $node_id FROM EmpNode WHERE ID = 14),
(SELECT $node_id FROM EmpNode WHERE id = 7),30);
áá°áááºážá¡á
áœááºážááá¬ážááœáẠáá±á¬áºáá¶áá¯á¶ážáá¯áá«ááŸááááºá áááá $edge_id
â JSON áá¯á¶á
á¶ááœáẠedge identifier áá»ááºááŸá
áºáá±á¬áẠ($from_id
О $to_id
) ááẠnode áá»á¬ážá¡ááŒá¬ážáá»áááºáááºááŸá¯ááá¯ááá¯ááºá
á¬ážááŒá¯áááºá ááá¯á·á¡ááŒááºá á¡á
áœááºážáá»á¬ážááẠá¡ááá¯áá¯ááºááá¹áááá»á¬áž ááŸáááá¯ááºáááºá áá«ááá¯á·ááá
á¹á
á á¡á²áá«áá²á Deptno.
á áá áºá¡ááŒááºáá»á¬áž
á
áá
áºá¡ááŒááºááœáẠsys.tables
áá±á¬áºáá¶á¡áá
áºááŸá
áºáá¯áá±á«áºáá¬áááº-
- is_ edge
- is_node
SELECT t.is_edge,t.is_node,*
FROM sys.tables t
WHERE name like 'emp%'
SMS
ááááºáá»á¬ážááŸáá·áº áááºááá¯ááºáá±á¬ á¡áá¬ááá¹áá¯áá»á¬ážááẠááááºáá áºááá¬ážáá»á¬ážááá¯áá«ááœáẠáááºááŸááá«áááºá node ááá¬ážá¡áá¯ááºááœááºááᯠá¡á ááºááŒáá·áº á¡ááŸááºá¡áá¬ážááŒá¯áá¬ážááŒá®áž á¡á áœááºážááá¬ážá¡áá¯ááºááœááºááᯠáá»áááºáááºáá¬ážáá±á¬ á ááºááá¯ááºážááŸá áºáᯠ(áá»ááºááŸááºáá²á·ááá¯á· áááºáááºáááº) ááŒáá·áº á¡ááŸááºá¡áá¬ážááŒá¯áá¬ážáááºá
MATCH á áá¬ážáááº
á áá¬ážááẠMATCH CQL (Cypher Query Language) á០áá°áááºá á€áááºááŸá¬ ááááºáá áºáá¯á áá¯ááºááá¹áááá»á¬ážááᯠáá±ážááŒááºážááẠáááá±á¬ááºáá±á¬áááºážáááºážááŒá áºáááºá CQL ááẠáá±á¬áºááŒáá»ááºáá áºáá¯ááŒáá·áº á áááºáááºá MATCH.
syntax
MATCH (<graph_search_pattern>)
<graph_search_pattern>::=
{<node_alias> {
{ <-( <edge_alias> )- }
| { -( <edge_alias> )-> }
<node_alias>
}
}
[ { AND } { ( <graph_search_pattern> ) } ]
[ ,...n ]
<node_alias> ::=
node_table_name | node_alias
<edge_alias> ::=
edge_table_name | edge_alias
á¥ááá¬
á¥ááá¬á¡áááºážáááºááᯠááŒáá·áºááŒáá«á áá¯á·á
á¡á±á¬ááºáá«áá±ážááœááºážááẠSmith ááŸáá·áº áá°ááááºáá±áá»á¬ááá¯á·áᶠáááºááŒáá±á¬ áááºáááºážáá»á¬ážá¡á¬áž ááŒááá±ážáá«áááºá
SELECT
E.EMPNO,E.ENAME,E.MGR,E1.EMPNO,E1.ENAME,E1.MGR
FROM
empnode e, empnode e1, empReportsTo m
WHERE
MATCH(e-(m)->e1)
and e.ENAME='SMITH'
á¡á±á¬ááºáá«áá±ážááœááºážááẠSmith á¡ááœáẠáá¯áááá¡ááá·áº áááºáááºážáá»á¬ážááŸáá·áº áááºáá±áá»á¬áá»á¬ážááᯠááŸá¬ááœá±áááºááŒá
áºáááºá áá«áá»ááᯠááŒá¯ááºáááºá áá±áá¬ááá¯á·áá±á¬áẠááááºááẠáááºáááºážáá»á¬ážá¡á¬ážáá¯á¶ážááᯠááŒááááºááŒá
áºáááºá
SELECT
E.EMPNO,E.ENAME,E.MGR,E1.EMPNO,E1.ENAME,E1.MGR,E2.EMPNO,e2.ENAME,E2.MGR
FROM
empnode e, empnode e1, empReportsTo m ,empReportsTo m1, empnode e2
WHERE
MATCH(e-(m)->e1-(m1)->e2)
and e.ENAME='SMITH'
áá±á¬ááºáá¯á¶ážá¡áá±áá²á· ááááá¡ááá·áº áááºáááºážááœá±áá²á· áááºáá±áá»á¬ááœá±á¡ááœáẠáá±á¬ááºážááá¯ááŸá¯áá«á
SELECT
E.EMPNO,E.ENAME,E.MGR,E1.EMPNO,E1.ENAME,E1.MGR,E2.EMPNO,e2.ENAME,E2.MGR,E3.EMPNO,e3.ENAME,E3.MGR
FROM
empnode e, empnode e1, empReportsTo m ,empReportsTo m1, empnode e2, empReportsTo M2, empnode e3
WHERE
MATCH(e-(m)->e1-(m1)->e2-(m2)->e3)
and e.ENAME='SMITH'
á¡áᯠSmith áá²á· áá°áá±ážááœá±áááá¯á· áááºážááŒá±á¬ááºážááŒá±á¬ááºážááá¯ááºáá¡á±á¬ááºá
SELECT
E.EMPNO,E.ENAME,E.MGR,E1.EMPNO,E1.ENAME,E1.MGR,E2.EMPNO,e2.ENAME,E2.MGR,E3.EMPNO,e3.ENAME,E3.MGR
FROM
empnode e, empnode e1, empReportsTo m ,empReportsTo m1, empnode e2, empReportsTo M2, empnode e3
WHERE
MATCH(e<-(m)-e1<-(m1)-e2<-(m2)-e3)
áá±á¬ááºáá»ááº
SQL Server 2017 ááẠá¡áá»áá¯ážáá»áá¯ážáá±á¬ IT áá¯ááºáááºážáá¬áááºáá»á¬ážá¡ááœáẠááŒá®ážááŒáá·áºá á¯á¶áá±á¬ áá¯ááºáááºážááŒá±ááŸááºážáá»ááºáá áºáá¯á¡ááŒá Ạáá°á·ááá¯ááºáá° áááºáá±á¬ááºáá¬ážáááºá SQL Graph áááááá¬ážááŸááºážáááºá¡ááœááºá¡áá¬ážá¡áá¬ááŸááááºá ááá·áºáááºáá»ááºá¡áá»áá¯á·ááŸááá±á¬áºáááºážá ááááºáá»á¬ážáá áœááºážáááºáá»á¬ážááá¯ááŸá¬ááœá±ááẠáá¯á¶áá±á¬ááºáá±á¬áá¯ááºáá±á¬ááºááá¯ááºá áœááºážááŸááá±ááŒá®ááŒá áºáááºá
SQL Graph áá¯ááºáá±á¬ááºááá¯ááºá áœááºážááᯠSQL Engine ááœáẠá¡ááŒáá·áºá¡á áá±á«ááºážá ááºáá¬ážáááºá ááá¯á·áá±á¬áºá áá±á¬áºááŒááŒá®ážáá¬ážá¡ááá¯ááºážá SQL Server 2017 ááœáẠá¡á±á¬ááºáá«ááá·áºáááºáá»ááºáá»á¬ážááŸááááºá
polymorphism á¡áá±á¬ááºá¡áá¶á·áááŸááá«á
- áá áºáááºáááºáááºážááŒá±á¬ááºážáá»áááºáááºááŸá¯áá»á¬ážááá¯áᬠáá¶á·ááá¯ážáá¬ážáááºá
- Edges ááẠUPDATE ááŸáá áºááá·áº $from_id ááŸáá·áº $to_id áá±á¬áºáá¶áá»á¬ážááᯠá¡ááºááááºáá¯ááºááááá«á
- á¡áá°ážá¡ááŒá±á¬ááºážááááºááŒááºážááᯠáá¶á·ááá¯ážááá±ážáá±á¬áºáááºáž áááºážááá¯á·ááᯠCTE áá¯á¶ážááŒá®áž ááá°ááá¯ááºáá«áááºá
- In-Memory OLTP á¡áá¬ááá¹áá¯áá»á¬ážá¡ááœáẠáá¶á·ááá¯ážááŸá¯ááŸá¬ á¡ááá·áºá¡áááºááŸááááºá
- áá¬áá®ááá¬ážáá»á¬áž (System-Versioned Temporal Table)á áá¬áá®ááŒááºááœááºážááŸáá·áº ááá¹áá¬áá¯á¶ážááá¯ááºáá¬ááá¬ážáá»á¬ážááᯠáá¶á·ááá¯ážááá¬ážáá«á
- ááá¬ážá¡áá»áá¯ážá¡á á¬ážáá»á¬ážááŸáá·áº ááá¬ážááœááºááœááºáá»á¬ážááᯠNODE ááá¯á·ááá¯áẠEDGE á¡ááŒá ẠáááŒá±ááŒá¬ááá¯ááºáá«á
- áá±áá¬áá±á·á áºááŒááºáá»á±á¬áºáá±ážááŒááºážáá»ááºáá»á¬ážááᯠáá¶á·ááá¯ážááá¬ážáá«á
- áá¯á¶ááŸááºááá¬ážáá»á¬ážááᯠááááºááá¬ážáá»á¬ážá¡ááŒá áºááá¯á· ááŒá±á¬ááºážáá²ááẠááá¯ááºááá¯ááºáááºážáááºáž ááá¯á·ááá¯áẠwizard áááŸááá«á
- ááááºáá áºáá»á¬ážááá¯ááŒáááẠGUI áááŸááá±á¬áºáááºáž Power BI ááá¯áááºáá¯á¶ážááá¯ááºáááºá
ááá¯ááŒá®ážáááºáá«:
source: www.habr.com