ááááºáá¯ááºážá
á€áá±á¬ááºážáá«ážááœááºá á€ááá±á¬ááá¬ážááẠáááºáááºááŸá¯áá¯áá¹ááááŒá±á¬ááºážáá²ááŸá¯áááŸááá² áá±áá¬áá±á·á
áºááá¯á· á
á¬áá±ážááŒááºážááŸáá·áº áááºááŒááºážá¡á¬áž áá»ááºááŒááºá
áœá¬ á¡áááºááŒá±á
áœá¬ áááºáá»ááºáá®á
á±ááẠáááºáá²á·ááá¯á·ááœáá·áºááŒá¯áááºááᯠáá»áœááºá¯ááºááŒááá«áááºá á¡áá¬ážáá°áá¯ááºáá±á¬ááºááá¯ááºá
áœááºážááᯠáá±ááºáá®á
á®ážááœá¬ážáá±áž DBMSs (á¡áá°ážáááŒáá·áºá Oracle ááŸáá·áº Microsoft SQL Server) ááœáẠá¡áá±á¬ááºá¡áááºáá±á«áºááẠááŒáá¯ážáááºážáá¬ážáá«áááºá áá±á¬ááºážáá«ážáá²á·á¡áá¯á¶ážááŸá¬ áá°ááá¯á·áá¯ááºáá²á·áá¬ááœá±á áá±á«á·áá±á«á·áá«ážáá«ážáá²á· á¡áááºáááŒá±áá°ážááá¯áá¬ááᯠáá«ááŒáááºá
áá±á«áºááŒáá»ááº
ááááºá¡ááá¯ááºážá ááá¯ááá¯áá¬ážáááºááá±á¬áá±á«ááºáááºá¡ááœáẠá¥ááá¬áá»á¬ážááŒáá·áº áá±á¬áºááŒáá»ááºááᯠá áááºáá«áááºá áá°ááá¯á·ááŸá¬ááŸááá²á· áááºáááºážá¡áá±á¡ááœááºáá²á· áá°ááá¯á·áá²á· á á¯á á¯áá±á«ááºážáá á¬áá²á· áá¬áá á¬áááºážááᯠááŒááºáá±ážááá·áº áá¯áá¹ááááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºááá¯á· ááá¯áááºááá¯áá«á áá¯á·á
áá¯ááºáá±á¬ááºááá¯ááºáá±á¬áá±áá¬áá±á·á áºáá áºáá¯ááœááºáááºážáááºá€áá²á·ááá¯á·ááŒá áºáááá·áºáááºá
CLASS Department âÐÑЎелâ;
name âÐаОЌеМПваМОеâ = DATA STRING[100] (Department);
CLASS Employee âСПÑÑÑЎМОкâ;
department âÐÑЎелâ = DATA Department (Employee);
salary âÐаÑплаÑаâ = DATA NUMERIC[10,2] (Employee);
countEmployees âÐПл-вП ÑПÑÑÑЎМОкПвâ (Department d) =
GROUP SUM 1 IF department(Employee e) = d;
salarySum âСÑЌЌаÑÐœÐ°Ñ Ð·Ð°ÑплаÑаâ (Department d) =
GROUP SUM salary(Employee e) IF department(e) = d;
SELECT name(Department d), countEmployees(d), salarySum(d);
áááºááá·áº DBMS ááœááºáááᯠá€áá±ážááœááºážááᯠáá¯ááºáá±á¬ááºááŒááºážá ááŸá¯ááºááœá±ážááŸá¯ááẠáá°áá®áá«áááºá O (áááºáááºážá¡áá±á¡ááœááº)á¡áááºááŒá±á¬áá·áºááá¯áá±á¬áº á€ááœááºáá»ááºááŸá¯ááẠáááºáááºážáá»á¬ážá á á¬ážááœá²áá áºáá¯áá¯á¶ážááᯠá áááºááºáááºááŒá®áž áááºážááá¯á·ááᯠáá¬áá¡ááá¯áẠá¡á¯ááºá á¯ááœá²á·ááẠááá¯á¡ááºáá±á¬ááŒá±á¬áá·áº ááŒá áºáááºá ááœá±ážáá»ááºáá¬ážáá±á¬ á¡á á®á¡á ááºáá±á«áº áá°áááºá ááŒáá·áºá áœááºá ᬠ(áá¬ááá»á¬ážááẠáááºáááºážáá»á¬áž á¡áá»á¬ážá¡ááŒá¬ážááŸááááºáᯠáá»áœááºá¯ááºááá¯á·áá¯á¶ááŒááºáááº) á¡áá±ážá á¬ážá¡áá»áá¯á·áááºáž ááŸááá«áááºá O (áááºáááºážá¡áá±á¡ááœááº) ááá¯á·ááá¯áẠO (áá¬áá¡áá±á¡ááœááº) á¡á¯ááºá á¯ááœá²á·ááŒááºážá áááºááŒáá·áºá
execution overhead ááẠááá°áá®áá±á¬ DBMSs áá»á¬ážááœáẠááá°áá®ááá¯ááºáááºááᯠááŸááºážááŸááºážáááºážáááºáž áááá¬áá±á¬áºáááºáž ááŸá¯ááºááœá±ážááŸá¯ááẠáááºááá·áºáááºážááŸáá·áºáá»áŸ ááŒá±á¬ááºážáá²áááºááá¯ááºáá«á
á¡ááá¯ááŒá¯áá¬ážááá·áº á¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯ááœááºá á¡áá¯ááºáá¯ááºáá±á¬ DBMS ááẠáá¬áá¡ááœáẠááá¯á¡ááºáá±á¬áááºááá¯ážáá»á¬ážááᯠááœááºáá»ááºáá±ážááá·áº á¡áá»áá¯ážá¡á á¬ážááœá²áá áºáá¯ááᯠáá¯ááºáá±ážáááºááŒá áºááŒá®áž á¡áááºááá¯ááá°ááẠáá¬áááá¬ážááŒáá·áº JOIN ááŒá¯áá¯ááºáááºááŒá áºáááºá ááá¯á·áá¬ááœááºá áá¯ááºáá±á¬ááºáá»ááºáá áºáá¯á á®á¡ááœááºá ááŒá±áá¬ááá·áºá¡áá«á á¡áá°áž MATERIALIZED á¡ááŸááºá¡áá¬ážáá áºáá¯ááᯠáááºááŸááºááá¯ááºáááºá á áá áºááẠááá¯áá¯ááºáá±á¬ááºáá»ááºáá áºáá¯á á®á¡ááœáẠáááºááá¯ááºáá¬áááºáááºáá áºáá¯ááᯠá¡ááá¯á¡áá»á±á¬ááºáááºáá®ážáá±ážáááºááŒá áºáááºá áá¯ááºáá±á¬ááºáá»ááºáá áºáá¯ááááºááá¯ážááᯠááŒá±á¬ááºážáá²ááá·áºá¡áá«á á¡ááœááºááááºááá¯ážáááºáááºáž áá°áá®áá±á¬ááœá±áá±ážááœá±áá°ááœáẠááŒá±á¬ááºážáá²ááœá¬ážáááºááŒá áºáááºá á€áá¯ááºáá±á¬ááºáá»ááºááᯠá¡áá¯á¶ážááŒá¯ááá·áºá¡áá«á ááŒáá¯áááºááœááºáá»ááºáá¬ážáá±á¬ á¡ááœááºááᯠáááºáá±á¬ááºááŒáá·áºááŸá¯áá«áááºá
á¡áá°ážáááŒáá·áº áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážá¡ááœáẠMATERIALIZED ááᯠáááºáááºááŸááºáá¬ážáá»áŸáẠáááºáááºážá¡áá±á¡ááœáẠО áá á¬ááœá±ááá¯á·áá±á¬áẠáááºáááºážá¡áá±á¡ááœááºááŸáá·áº áááºážááá¯á·á á á¯á á¯áá±á«ááºážáá á¬ááᯠááááºážáááºážááá·áº áá¬ááá»á¬ážá á¬áááºážááŸáá·áºá¡áá° áááºáááºááŸá áºáá¯ááᯠááá¬ážááœáẠááá·áºááœááºážáááºááŒá áºáááºá áááºáááºážáá»á¬ážá áááºážááá¯á·ááá á¬áá»á¬áž ááá¯á·ááá¯áẠáá¬áááá¯ááºáá¬áááºááœááºááŸá¯áá»á¬áž á¡ááŒá±á¬ááºážá¡áá²ááŸáááá·áºá¡áá«ááá¯ááºážá á áá áºááẠá¡ááá¯áá«áááºáááºáá»á¬ážá áááºááá¯ážáá»á¬ážááᯠá¡ááá¯á¡áá»á±á¬áẠááŒá±á¬ááºážáá²áá±ážáááºááŒá áºáááºá á¡áááºáá±á¬áºááŒáá«áá±ážááœááºážááẠá€á¡ááœááºáá»á¬ážááᯠááá¯ááºááá¯ááºáááºáá±á¬ááºáááºááŒá áºááŒá®ážá áá¯ááºáá±á¬ááºáááºááŒá áºáááºá O (áá¬áá¡áá±á¡ááœááº).
ááá·áºáááºáá»ááºááœá±á áá¬ááœá±áá²á áá áºáá¯áááºážáá±á¬á¡áá¬- ááá¯ááá¯á·áá±á¬áá¯ááºáá±á¬ááºáá»ááºáá áºáá¯ááœáẠáááºážááááºááá¯ážááá¯áááºááŸááºáá¬ážááá·áºá¡ááœáẠááá·áºááœááºážáááºááá¯ážáá»á¬áž á¡ááá·áºá¡áááºááŸáááá«áááºá ááá¯ááºáá«áá áááºážááááºááá¯ážáá»á¬ážá¡á¬ážáá¯á¶ážááᯠááááºážáááºážááá·áº ááá¬ážáá áºáá¯ááᯠáááºáá±á¬ááºááẠáááŒá áºááá¯ááºáá«á á¡áááºááŒá±á¬áá·áºááá¯áá±á¬áº á¡áááºážá¡áá±á¡ááœáẠá¡ááá·áºá¡áááºáááŸááá±á¬ ááá¬ážáá áºáᯠáááŒá áºááá¯ááºáá«á
á¥ááá¬:
employeesCount âÐПлОÑеÑÑвП ÑПÑÑÑЎМОкПв Ñ Ð·Ð°ÑплаÑПй > Nâ (Department d, NUMERIC[10,2] N) =
GROUP SUM salary(Employee e) IF department(e) = d AND salary(e) > N;
á€áá¯ááºáá±á¬ááºáá»ááºááẠN á á¡áá¯á¶ážáááŸá á¡áá±á¡ááœááºáááºááá¯ážáá»á¬ážá¡ááœáẠáááºááŸááºáá¬ážááẠ(á¥ááá¬á áááºááá·áºá¡áá¯ááºáááºááá¯ážáááᯠááá·áºáá»á±á¬áºáááº)á ááá¯á·ááŒá±á¬áá·áº áááºááẠáááºážááᯠMATERIALIZED ááœááºááá·áºááááá«á áá«ááŒá±á¬áá·áº áá«á áá¯áá¹áááááºážáá»áá²á· ááá·áºáááºáá»ááºááŒá áºááŒá®áž áááºážááá¬ááá¯ááºážááá¯ááºáᬠááá·áºáááºáá»ááºááá¯ááºáá«áá°áž (á¡á²áá«ááᯠáá»áœááºáá±á¬áºááá¯á· á¡áá±á¬ááºá¡áááºááá±á¬áºááá¯ááºáá²á·ááá¯á· ááá¯ááºáá«áá°áž)á ááá¯ááºááẠááá·áºáááºáá»ááºáááŸááá°ážá á¡á¯ááºá á¯ááœá²á·ááŒááºážá á á®ááŒááºážá AND ááŸáá·áº ORá PARTITIONá ááŒááºááŸáá·áºááŒááºáž á áááºááŒáá·áº áááºáá¯á¶ážááá¯ááºáááºá
á¥ááá¬á¡á¬ážááŒáá·áºá ááááºáá±á¬ááºážáá«ážá ááŒá¿áᬠ2.2 ááœááºá áááºááẠMATERIALIZED ááᯠáá¯ááºáá±á¬ááºáá»ááºááŸá áºáá¯áá¯á¶ážááœáẠááá·áºááœááºážááá¯ááºáááºá
bought 'ÐÑпОл' (Customer c, Product p, INTEGER y) =
GROUP SUM sum(Detail d) IF
customer(order(d)) = c AND
product(d) = p AND
extractYear(date(order(d))) = y MATERIALIZED;
rating 'РейÑОМг' (Customer c, Product p, INTEGER y) =
PARTITION SUM 1 ORDER DESC bought(c, p, y), p BY c, y MATERIALIZED;
SELECT contactName(Customer c), name(Product p) WHERE rating(c, p, 1997) < 3;
á áá áºááá¯ááºááá¯ááºá type keys áá²á· table áá áºáá¯ááᯠáááºáá®ážáá«áááá·áºáááºá áá±á¬ááºáááº, áá¯ááºáá á¹á ááºáž О áá²ááá¹áá¬áá áááºážááœáẠáááºáááºááŸá áºáá¯ááᯠáá±á«ááºážááá·áºáááºááŒá áºááŒá®áž áááºááá·áºááŒá±á¬ááºážáá²ááŸá¯áá»á¬ážááŒáá·áº áááºážááá¯á·ááŸá á¡ááœááºáááºááá¯ážáá»á¬ážááᯠá¡ááºááááºáá¯ááºáááºááŒá áºáááºá á€áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááá¯á· áá±á¬ááºáááºáá±á«áºááá¯ááŸá¯áá»á¬áž ááŒá¯áá¯ááºáá±á¬á¡áá«á áááºážááá¯á·ááᯠááœááºáá»ááºáááºááá¯ááºáá±á¬áºáááºáž áááºááá¯ážáá»á¬ážááᯠáááºááá¯ááºáá¬áááºáááºáá»á¬ážá០áááºááŒáááºááŒá áºáááºá
á€ááá¹ááá¬ážááá¯á¡áá¯á¶ážááŒá¯ááŒááºážááŒáá·áºá á¥ááá¬á¡á¬ážááŒáá·áºá áááºááẠá á¯á¶á ááºážáá±ážááŒááºážááŸá¯áá»á¬ážááœáẠááŒááºááŒááºáá»ááŒááºáž (CTE) ááᯠáááºááŸá¬ážááá¯ááºáááºá á¡áá°ážáááŒáá·áºá ááá±áž/ááááááºáá¶áá±ážááᯠá¡áá¯á¶ážááŒá¯á áá áºáááºáá áºáááºááá¯ááœá²á·á ááºážááá·áºá¡á¯ááºá á¯áá»á¬ážááᯠá ááºážá á¬ážáá« (á¡á¯ááºá á¯áá áºáá¯á á®ááœáẠáááºážáááááá¶ááá¯á· ááá·áºááºáá áºáá¯áá«ááŸááááº)á
parent = DATA Group (Group);
áá¯ááºáá±á¬ááºááá¯ááºáá±á¬ áá±áá¬áá±á·á áºáá áºáá¯ááœááºá ááŒááºáá±á¬ááºááŒááºážááá¯ááºáᬠáá¯áá¹áááá±áááᯠá¡á±á¬ááºáá«á¡ááá¯ááºáž áááºááŸááºááá¯ááºáá«áááºá
level (Group child, Group parent) = RECURSION 1l IF child IS Group AND parent == child
STEP 2l IF parent == parent($parent);
isParent (Group child, Group parent) = TRUE IF level(child, parent) MATERIALIZED;
function ááœá±á¡ááœááºááááºážá ááááá¬ážá MATERIALIZED áᯠá¡ááŸááºá¡áá¬ážááŒá¯áá¬ážááŒá®ážá ááá¯á·áá±á¬áẠáááºážá¡ááœáẠáá±á¬á·ááŸá áºáᯠ(á¡á¯ááºá á¯áá»á¬áž) áá«áá±á¬ ááá¬ážáá áºáá¯ááᯠáááºáá®ážáááºá ááááá¬ážá ááááá±á¬á·ááẠáá¯ááááááá±ážááŒá áºááŸáᬠááŸááºáááá·áºáááºá á€ááá¬ážááŸá ááá·áºááœááºážááŸá¯á¡áá±á¡ááœááºááẠáá áºáááºá áá»ááºážáá»áŸá¡ááááºá¡áááºááŒáá·áº ááŒáŸá±á¬ááºáá¬ážáá±á¬ á¡á¯ááºá á¯á¡áá±á¡ááœááºááŸáá·áº áá®áá»áŸáááºááŒá áºáááºá á¥ááá¬á¡á¬ážááŒáá·áºá áááºááẠá¡á¯ááºá á¯áá áºá á¯á áá¬ážá ááºááŒá±ážááẠá¡áá±á¡ááœááºááᯠáá±ááœááºááẠááá¯á¡ááºáá«áá áááºááẠá€áá¯ááºáá±á¬ááºáá»ááºááᯠá¡áá¯á¶ážááŒá¯ááá¯ááºáááºá
childrenCount (Group g) = GROUP SUM 1 IF isParent(Group child, g);
SQL query ááœáẠCTE ááŸááááºááá¯ááºáá«á áááºážá¡á á¬áž ááá¯ážááŸááºážáá±á¬á¡ááœá²á·áá áºááœá²á·ááŸááá«áááºá
á€ááá¹ááá¬ážááᯠá¡áá¯á¶ážááŒá¯á ááá¯á¡ááºáá«á áá±áá¬áá±á·á áºááᯠá¡ááœááºááá° áá¯á¶áá»ááºá á±ááá¯ááºáááºá
CLASS Order 'Ðаказ';
date 'ÐаÑа' = DATA DATE (Order);
CLASS OrderDetail 'СÑÑПка заказа';
order 'Ðаказ' = DATA Order (OrderDetail);
date 'ÐаÑа' (OrderDetail d) = date(order(d)) MATERIALIZED INDEXED;
function áá áºáá¯áá±á«áºáá²á·á¡áá« áá±á·á áŸá² á¡ááŸá¬á á¬ááá¯ááºážá¡ááœááºá á¡ááœáŸááºážáá áºáá¯áá«ááŸáááá·áº á¡ááœááºááᯠá¡ááŸá¬á á¬ááá¯ááºážáá»á¬ážááŒáá·áº ááá¬ážááŸáááºáá«áááºá ááŸá¬áá°ááá·áºáááºá áœá² ááŒá±á¬ááºážáá²áá±á¬á¡áá«á á áá áºááá¯ááºááá¯ááºá ááá¯ááºážá¡ááœááºážááŸá áá¯á¶ááŸááºááá¯ááºáá±á¬ áááºá áœá²ááᯠá¡ááá¯á¡áá»á±á¬áẠááŒááºáááºááœááºáá»ááºáá±ážáááºááŒá áºáááºá
á¡á¬ážáá¬áá»ááºáá»á¬áž
áá®ááá¹ááá¬ážáá áºáá¯áá¯á¶ážá áá¬á¡ááœááºáá²á ááá¹áááẠDBMS áá»á¬ážááœáẠá á¯á¶á ááºážáá±ážááŒááºážáá»ááºáá»á¬ážááᯠááŒááºáááºáá±ážáá¬ážááŒááºážáááŒá¯áá²á áá±á¬á·ááºáá²áá±ážáá¬ážáá° ááá¯á·ááá¯áẠDBA ááẠá¡ááœáŸááºážáá»á¬ážááá¯áᬠááŒá±á¬ááºážáá²ááá¯ááºááŒá®áž á á¬áááºážááá¬ážáá»á¬ážááᯠáá¯á¶ážááŒááºáᬠáááºážááá¯á·ááᯠáááºááá¯á·áá¯ááºáá±á¬ááºááááºááᯠáá±ážááŒááºážááŸá¯á á®á ááºáá°á¡á¬áž ááŒá±á¬ááŒááá¯ááºááẠ(ááŸáá·áº á¡ááááºá¡ááŒáœááºáá»á¬ážááᯠá á®ážááœá¬ážááŒá ẠDBMS áá»á¬ážááœááºáᬠáááá¯ááºáááº)á áááºáá»áŸááẠááŒáá¯ážá á¬ážá¡á¬ážáá¯ááºáá±áá«á á± áá±á¬ááºážáá«ážáá« ááááá±ážááœááºážááᯠááŒá®ážááŒá±á¬ááºááá¯ááºááẠááá¯ááºáá«á á (áá¬áá¡áá±á¡ááœááº)á áá±ážááœááºážáá»á¬ážááᯠááŒá±á¬ááºážáá²ááŒááºáž ááá¯á·ááá¯áẠá¡á áá»áá¯ážááŒááºážáá»á¬áž áááá·áºáá²á á¡ááá¯ááŒá¯áá¬ážáá±á¬á¡á á®á¡á á¥áºááœááºá ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯á¡ááá·áºááœáẠáááºááẠáá±áá¬ááá¯ááŸá±á¬ááºááŸá¯áááºáá±á¬ááºáá¯á¶ááŸáá·áº áááºááá·áºá á¯á ááºážááŸá¯áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááááºááᯠá ááºážá á¬ážáááºáááá¯á¡ááºáá«á á€á¡áá¬á¡á¬ážáá¯á¶ážááᯠáááºáááºááŸá¯ááœáẠááá¯ááºááá¯áẠá¡ááœááºááá° ááŒá±á¬ááºážáá²ááá¯ááºáááºá
áááºááœá±á·ááŸá¬áá±á¬á· áá®áá¯á¶áá«áá²á á¡áá»áá¯á·áá±á¬áá°áá»á¬ážááẠáááºáá²ááœááºááŸááá±á¬ á¡áá¯ááºá¡áá±á«áºá¡ááŒá±áá¶á áá¯áá¹áááá±áááᯠááá¯ááºááá¯ááºáááºáá®ážááŒáááºá áááºážááá¯á·ááẠá¡ááºáááá¯áá®áááºáá»á¬ážááŸáá·áº áááºážááá¯á·á ááŸá¯ááºááœá±ážááŸá¯á á¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯ á¡á á®á¡á ááºáá»á¬ážá áá»áááºáááºááŸá¯ á¡áá»áá¯ážá¡á á¬ážáá»á¬ážá ááá¯á·ááá¯áẠá¡ááŒá¬ážáááºážááá¬ááá¯ááºážááá¯ááºáᬠá¡á áááºá¡ááá¯ááºážáá»á¬ážááᯠáá¬ážááááºááŒáá«á áá®áá°ááœá±á developer ááœá±ááẠá á®ážááœá¬ážáá±ážáá±á·áá¬áá° ááá¯áá»á¬ážáááºá ááá¯á·áá±á¬ááºá á€á¡áá¬á¡á¬ážáá¯á¶ážááᯠá ááºážáááºááŒááºáž ááá¯á·ááá¯áẠáááºáááºááŒááºážááá¯á· áá±á¬ááºááœá¬ážáá«áááºá ááŸááºáá»á¬ážáá±á¬áá±ážááœááºážáá»á¬ážááᯠááŸááºáááºážáááºááŒááºážááᯠááœáá·áºáá«á ááŸááºáá»á¬ážáá±á¬áá±ážááŒááºážáá»ááºáá áºáá¯ááᯠááœá±á·ááŸááá±á¬á¡áá«á á¡ááŒá¬ážáá°áá»á¬áž (ááá¯ááá¯áááºážááá¬ááá¯ááºážááá¯ááºáᬠ- áááŸááááŒá áºááá¯á¡ááºáá±á¬ DBA) ááẠá¡áááºá¡áááºáá¯ááºáá±á¬ááºáá»ááºá¡áá»áá¯á·ááœáẠMATERIALIZED ááá¯ááœáá·áºááẠáá¯á¶ážááŒááºáááºá áááºážááẠááá¯ááºáá°ážááŸá¯ááᯠá¡áááºážáááºááŸá±ážááœá±ážá á±ááẠ(áááºážááẠááœá±áá±ážááœá±áá°ááœáẠáá±á¬ááºáááºá¡ááœááºáá áºáá¯ááᯠá¡ááºááááºáá¯ááºáááºááá¯á¡ááºáá±á¬ááŒá±á¬áá·áº)á ááá¯á·áá±á¬áºá á€áá±ážááŒááºážáá»ááºááẠáááááá¬áᬠá¡ááŸáááºááŒáŸáá·áºáá¯á¶áá¬ááá á€áá¯ááºáá±á¬ááºáá»ááºááᯠá¡áá¯á¶ážááŒá¯ááá·áº á¡ááŒá¬ážáá°áá»á¬ážáááºáž ááŒá áºáááºá áá áºáá»áááºáááºážááŸá¬ááẠáááºááá·áºáá¯ááºáá±á¬ááºáá»ááºááᯠá¡áá±á¬ááºá¡ááẠáá±á¬áºááááºááᯠáá¯á¶ážááŒááºááŒááºážááẠá¡áá±á¬áºáá±áž ááœááºáá°áááºá áááºááá±á¬ááºááŸá áºáá¯- ááŒá áºááá¯ááºáá»á±ááŸááá±á¬ ááá·áºááœááºážáááºááá¯ážáá»á¬áž (áááºážááẠáááºááá¯ááºáá¬ááá¬ážááœáẠááŸááºáááºážáááºáá»áŸááŸááááº) ááŸáá·áº á¡ááŒá¬ážáá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááœáẠáááºážááᯠá¡ááŒáááºáá±áááºáá»áŸá¡áá¯á¶ážááŒá¯áááºá
analog
áá±ááºáá®áá¯ááºáááºážáá¯á¶áž DBMS áá»á¬ážááœáẠá¡áá¬ážáá° ááá¹ááá¬ážáá»á¬áž ááŸááááº- á¡ááŒááºááŒááºáááºááŒááºáž (Oracle) ááŸáá·áº INDEXED VIEW (Microsoft SQL Server) ááŒáá·áº MATERIALIZED VIEW á PostgreSQL ááœááºá MATERIALIZED VIEW ááᯠááœá±áá±ážááœá±áá°áá áºáá¯ááœáẠá¡ááºááááºáá¯ááºááááá±á¬áºáááºáž áá±á¬ááºážááá¯ááŸá¯ (ááŸáá·áº á¡ááœááºáááºážáá»ááºáá±á¬ááá·áºáááºáá»ááºáá»á¬ážáááº) ááŒá±á¬áá·áºáᬠáááºážááᯠáá»áœááºá¯ááºááá¯á· ááá·áºááœááºážá ááºážá á¬ážáááºááá¯ááºáá«á áá«áá±ááá·áº áá°ááá¯á·áá²á·á¡áá¯á¶ážááŒá¯ááŸá¯ááᯠáááááá¬áᬠááá·áºáááºáá¬ážáá²á· ááŒá¿áá¬áá»á¬ážá áœá¬ááŸááá«áááºá
ááááŠážá áœá¬á áááºááẠáá¯á¶ááŸáẠVIEW áááºáá®ážááŒá®ážááŸáᬠáá¯ááºáá¯á¶ážáá±á«áºáá¬ááŒááºážááᯠááœáá·áºááá¯ááºáááºá ááá¯ááºáá«áá á€áá¯ááºáá¯á¶ážáá±á«áºáá¬ááŒááºážááᯠá¡áá¯á¶ážááŒá¯áááºá¡ááœáẠá¡áá áºáááºáá®ážáá¬ážáá±á¬ ááŒááºááœááºážááᯠáááºáá±á¬ááºááŒáá·áºááŸá¯ááẠáá»ááºáá±á¬ááºážááá¯ááŸá¯áá»á¬ážááᯠááŒááºáááºáá±ážáá¬ážááááºááŒá áºáá«áááºá ááá¯á·ááá¯áẠá¡áá¬á¡á¬ážáá¯á¶ážááᯠáááºážá¡ááá¯ááºážáá¬ážáá²á·áá«á ááá¯á·áá±á¬áº ááŒáá¯áááºááœááºáá»ááºááŒá®ážáá¬áž áá±áá¬á¡áá»áá¯á·ááŸááá»áŸáẠá¡áááºážáá¯á¶áž áááá±á¬ááºááŸá¯ áááŸáááá¯ááºáá±á¬áºáááºáž á á¯á¶á ááºážáá±ážááŒááºážááŸá¯á¡áá»á¬ážá¡ááŒá¬ážááẠáááºážááᯠá¡ááŒá²áááºážá¡áá¯á¶ážáááŒá¯áá±á¬áºáááºáž áááºážááᯠááŒááºáááºááœááºáá»ááºáá«á
áá¯áááá¡áá±ááŸáá·áºá áááºážááá¯á·ááœáẠááá·áºáááºáá»ááºáá»á¬ážá áœá¬ááŸááááºá
Oracle á
5.3.8.4 á¡ááŒááºááŒááºáááºá áááºááŒááºážááá¯ááºáᬠá¡ááœá±ááœá±ááá·áºáááºáá»ááºáá»á¬áž
áá¯ááºáá¯á¶ážáá±á«áºáá¬áá±á¬ááŒááºááœááºážá á¡áááá¹áá«ááºááœáá·áºááá¯áá»ááºá¡á¬áž á¡á±á¬ááºáá«á¡ááá¯ááºáž ááá·áºáááºáá¬ážáááºá
- áá¯ááºáá¯á¶ážáá±á«áºáá¬áá±á¬ ááŒááºááœááºážááœáẠáááºááá²áá²ááá¯ááºáá±á¬ á¡áá¯á¶ážá¡ááŸá¯ááºážáá»á¬ážááᯠáááºááœáŸááºážáá»ááºáá»á¬áž ááá«áááºááá«á
SYSDATE
ááŸáá·áºROWNUM
.- áá¯ááºáá¯á¶ážáá±á«áºáá¬áá±á¬ ááŒááºááœááºážááœáẠáááºááœáŸááºážáá»ááºáá»á¬áž ááá«áááºááá«á
RAW
orLONG
RAW
áá±áá¬á¡áá»áá¯ážá¡á á¬ážáá»á¬ážá- áááºážááœááºáá áºáá¯ááá«áááºáá«á
SELECT
á á¬áááºážááœá²áá»á¬ážá- áááºážááœáẠááœá²ááŒááºážá áááºááŒá¬ááŸá¯ááá¯ááºáᬠáá¯ááºáá±á¬ááºáá»ááºáá»á¬áž ááá«áááºááá¯ááºáá« (á¥ááá¬á
RANK
) áá²ááŸá¬SELECT
á¡ááá¯ááº- áááºážááẠáááºááá·áºááá¬ážááᯠááá¯ážáá¬ážááááá«á
XMLIndex
á¡ááœáŸááºážááᯠáááºááŸááºáááºá- áááºážááœááºáá áºáá¯ááá«áááºáá«á
MODEL
á¡ááá¯ááº- áááºážááœááºáá áºáá¯ááá«áááºáá«á
HAVING
subquery áá áºáá¯ááŸáá·áº clauseá- áááºážááœáẠáá«ááŸááá±á¬ nested queries ááá«áááºááá¯ááºáá«á
ANY
,ALL
áá«ááŸááá¯ááºNOT
EXISTS
.- áááºážááœááºáá áºáá¯ááá«áááºáá«á
[START WITH âŠ] CONNECT BY
á¡ááá¯ááº- áááºážááœáẠááá°áá®áá±á¬ááá¯ááºáá»á¬ážááœáẠá¡áá±ážá áááºááá¬ážáá»á¬ážá áœá¬ ááá«áááºááá¯ááºáá«á
ON
COMMIT
áá¯ááºáá¯á¶ážáá±á«áºáá¬áá±á¬ ááŒááºááœááºážáá»á¬ážááẠá¡áá±ážááŸá¡áá±ážá áááºááá¬ážáá»á¬áž ááááá¯ááºáá«á- á¡á á¯ááá¯ááºá¡ááŒá¯á¶ááá¯áẠáá¯ááºáá¯á¶ážáá±á«áºáá¬áá±á¬ á¡ááŒááºáá»á¬ážááẠáá±á«ááºážá ááºážááŒááºáž ááá¯á·ááá¯áẠá á¯á ááºážááŸá¯ ááŸáááá«áááºá
- áá±á«ááºážá ááºá¡ááŒááºáá»á¬ážááŸáá·áº áá¯ááºáá¯á¶ážáá±á«áºáá¬áá±á¬ á¡á á¯ááá¯ááºá¡ááŒááºáá»á¬áž a
GROUP
BY
á á¬ááá¯ááºááẠá¡ááœáŸááºáž-ááœá²á·á ááºážáá¬ážáá±á¬ ááá¬ážá០ááœá±ážááááá«á5.3.8.5 Joins ááŒáá·áºáᬠáá¯á¶áá±á¬áºáá¬ážáá±á¬ ááŒááºááœááºážáá»á¬ážá¡ááœáẠá¡ááŒááºááŒááºáááºáááºážáá áºááŒááºážá¡áá±á«áº ááá·áºáááºáá»ááºáá»á¬áž
Joins áá»á¬ážáá¬áá«áááºááŒá®áž áá¯ááºáá¯á¶ážáá±á«áºáá¬áá±á¬ááŒáá·áºááŸá¯ááŸá¯áá»á¬ážá¡ááœáẠá á¯á¶á ááºážáá±ážááŒááºážáá»ááºáá»á¬ážááᯠáááºááŸááºááŒááºážááŸáá·áº á á¯á ááºážááŸá¯áááŸááá±á¬ á¡ááŒááºááŒááºáááºáááºážáá áºááŒááºážá¡ááœáẠá¡á±á¬ááºáá«ááá·áºáááºáá»ááºáá»á¬ážááŸááááº-
- ááá·áºáááºáá»ááºáá»á¬ážá¡á¬ážáá¯á¶ážááᯠ«
á¡ááŒááºááŒááºáááºá áááºááŒááºážá¡ááœáẠá¡ááœá±ááœá±ááá·áºáááºáá»ááºáá»á¬áž "á- ááááá¯ááºáá«á
GROUP
BY
á¡ááá¯ááºáá»á¬áž ááá¯á·ááá¯áẠá á¯á ááºážáá»ááºáá»á¬ážá- á¡ááœááºážááŸá á á¬ážááœá²á¡á¬ážáá¯á¶ážá á¡áááºáž
FROM
á á¬áááºážáá²ááŸá¬ áá±á«áºáá¬ááá«áááºáSELECT
áá±ážááŒááºážááŸá¯á á¬áááºážá- áá¯ááºáá¯á¶ážáá±á«áºáá¬áá±á¬ ááŒááºááœááºážááŸááºáááºážáá»á¬ážááẠáááºážááŸá á¡ááŒá±áá¶ááá¬ážá¡á¬ážáá¯á¶ážá¡ááœáẠrowids ááŒáá·áº ááŸááá±ááá«áááºá
FROM
áá±ážááŒááºážááŸá¯á á¬áááºážá- ááá¯ážááŸááºážáá±á¬áá»áááºáááºááŸá¯áá»á¬ážááŒáá·áº ááá¬ážáá»á¬ážá áœá¬á០á¡ááŒááºááŒááºáááºáááºážáá áºááá¯ááºáá±á¬ áá¯ááºáá¯á¶ážáá±á«áºáá¬ááá·áºááŒááºááœááºážááᯠáááºáááºáá®ážááááá«á
SELECT
ááŒá±áá¬áá»ááºáá¯ááºááŒááºááŒááºážááŒá áºáááºáááá¯á·á¡ááŒááºá áááºááœá±ážáá»ááºáá±á¬ ááŒááºáááºáááºážáá áºááá·áºáááºážáááºážááẠá¡áá±á¬ááºážáá¯á¶ážááŒá áºáááºááá¯áá»áŸááº-
- á¡áááá¹áá¬ááºááœáá·áºááá¯áá»ááºááẠá¡ááœááºážáá«áááºááŸá¯áá²á·ááá¯á· ááŒá¯áá°áá±á¬ ááŒááºááá»áááºáááºááŸá¯ááᯠá¡áá¯á¶ážááŒá¯áááºá áááºááŸááºáá¬ážáá±á¬ query ááœáẠááá¯ááá¯á·áá±á¬ join áá áºáá¯áá«ááŸááááºááá¯áá«áá á¡ááœááºáž join áá áºáá¯áá«áááºááẠáááºááŸááºáá¬ážáá±á¬ query ááᯠááŒááºáááºáá±ážáá¬ážááẠá ááºážá á¬ážáá«á
- á¡ááá¯áá«
SELECT
áá¯ááºáá¯á¶ážáá±á«áºáá¬áá±á¬ ááŒááºááœááºážá á¬áááºážááœáẠááá¬ážáá»á¬ážá áœá¬á០áá±á¬áºáá¶áá»á¬ážááœáẠá áá¬ážáááºáá»á¬áž áá«ááŸááááºá5.3.8.6 á¡á á¯ááá¯ááºá¡ááŒá¯á¶ááá¯ááºááŒá¯áá¯ááºáá¬ážáá±á¬ááŒáá·áºááŸá¯ááŸá¯áá»á¬ážá¡áá±á«áº á¡ááŒááºááŒááºáááºáááºážáá áºááŒááºážá¡áá±á«áº ááá·áºáááºáá»ááºáá»á¬áž
á¡á á¯ááá¯áẠááá¯á·ááá¯áẠáá»áááºáááºááŸá¯áá»á¬ážááŒáá·áº áá¯ááºáá¯á¶ážáá±á«áºáá¬áá±á¬ááŒáá·áºááŸá¯ááŸá¯áá»á¬ážá¡ááœáẠá á¯á¶á ááºážáá±ážááŒááºážáá»ááºáá»á¬ážááᯠáááºááŸááºáá¬ááœáẠá¡ááŒááºááŒááºáááºáááºážáá áºááŒááºážá¡ááœáẠá¡á±á¬ááºáá«ááá·áºáááºáá»ááºáá»á¬ážááŸááááºá
- ááá·áºáááºáá»ááºáá»á¬ážá¡á¬ážáá¯á¶ážááᯠ«
á¡ááŒááºááŒááºáááºá áááºááŒááºážá¡ááœáẠá¡ááœá±ááœá±ááá·áºáááºáá»ááºáá»á¬áž "áá¡ááŒááºááŒááºáááºáááºážáá áºááŸá¯ááᯠááŸá áºáá»áá¯ážá áá¯á¶ážá¡ááœáẠáá¶á·ááá¯ážáá¬ážáááºá
ON
COMMIT
ááŸáá·áºON
DEMAND
áá¯ááºáá¯á¶ážáá±á«áºáá¬áá±á¬ á¡ááŒááºáá»á¬áž ááŒá áºáá±á¬áºáááºáž á¡á±á¬ááºáá« ááá·áºáááºáá»ááºáá»á¬áž áááºáá±á¬ááºáááº-
- áá¯ááºáá¯á¶ážáá±á«áºáá¬áá±á¬ ááŒááºááœááºážááŸá ááá¬ážáá»á¬ážá¡á¬ážáá¯á¶ážááœáẠáá¯ááºáá¯á¶ážáá±á«áºáá¬áá±á¬ ááŒááºááœááºážááŸááºáááºážáá»á¬áž áá«ááŸáááááºááŒá áºááŒá®áž áá¯ááºáá¯á¶ážáá±á«áºáá¬ááá·áº ááŒááºááœááºážááŸááºáááºážáá»á¬áž ááŸáááááº-
- áá¯ááºáá¯á¶ážáá±á«áºáá¬áá±á¬ ááŒááºááœááºážááœáẠáá±á¬áºááŒáá¬ážáá±á¬ ááá¬ážá០áá±á¬áºáá¶áá»á¬áž á¡á¬ážáá¯á¶ážááᯠáá«ááŸááááºá
- ááŒáá·áº áááºááŸááºáá«á
ROWID
ááŸáá·áºINCLUDING
NEW
VALUES
.- á¡ááá¯áá« specify
SEQUENCE
á¡áááºá ááá¬ážááœáẠááá·áºááœááºážááŸá¯áá»á¬áž/ááá¯ááºááá¯ááºáááºááŸá¯áá»á¬ážá áá»ááºááŸá¯áá»á¬ážááŸáá·áº á¡ááºááááºáá»á¬áž áá±á¬ááŸá±á¬áá±áááºááá¯áá«á á á¬ááá¯ááºá
- áá¬
SUM
,COUNT
,AVG
,STDDEV
,VARIANCE
,MIN
ááŸáá·áºMAX
á¡ááŒááºááŒááºáááºáááºážáá áºáááºá¡ááœáẠáá¶á·ááá¯ážáá¬ážáááºáCOUNT(*)
áááºááŸááºááá«áááºá- á á¯á ááºážáá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááẠá áá¬ážáááºá á¡ááŒááºáááºá¡áá»áá¯á¶ážá¡á áááºá¡ááá¯ááºážá¡ááŒá áºáᬠááŒá áºáá±á«áºááá«áááºá ááá¯ááá¯áááºááŸá¬ á¡á á¯ááá¯áẠá áááºááá¯á·ááŒá áºáááºá
AVG(AVG(x))
orAVG(x)
+AVG(x)
ááœáá·áºáááŒá¯áá«á- á¡á ááŸááá²á· á¡á á¯áá áºáá¯á á®á¡ááœááºáá«á
AVG(expr)
á áááºááá¯ááºáá¬COUNT(expr)
ááŸááá±ááááºá Oracle á á¡ááŒá¶ááŒá¯áá¬ážáá«áááºáSUM(expr)
áááºááŸááºáá¬ážáááºá- If
VARIANCE(expr)
orSTDDEV(expr
) áááºááŸááºáá¬ážáááºáCOUNT(expr)
ááŸáá·áºSUM(expr)
áááºááŸááºááá«áááºá Oracle á á¡ááŒá¶ááŒá¯áá¬ážáá«áááºáSUM(expr *expr)
áááºááŸááºáá¬ážáááºá- á¡ááá¯áá«
SELECT
áááºááŸááºáá¬ážáá±á¬ query ááŸá áá±á¬áºáá¶ááẠá¡ááŒá±áá¶ááá¬ážáá»á¬ážá áœá¬á០áá±á¬áºáá¶áá»á¬ážáá«ááŸááá±á¬ ááŸá¯ááºááœá±ážáá±á¬á¡áá¯á¶ážá¡ááŸá¯ááºážáááŒá áºááá¯ááºáá«á áááºážá¡ááœáẠááŒá áºááá¯ááºáá»á±ááŸááá±á¬ ááŒá±ááŸááºážáááºážááŸá¬ nested materialized view ááᯠá¡áá¯á¶ážááŒá¯áááºááŒá áºáááºá- á¡ááá¯áá«
SELECT
á á¬áááºážááœáẠá¡á¬ážáá¯á¶ážáá«áááºááá«áááºáGROUP
BY
áá±á¬áºáá¶á- áá¯ááºáá¯á¶ážáá±á«áºáá¬áá±á¬ ááŒááºááœááºážááẠá¡áá±ážááááºážááá¬ážáá áºáᯠááá¯á·ááá¯áẠáá áºáá¯áááºááá¯áá±á¬ ááá¬ážáá»á¬ážá¡áá±á«áº á¡ááŒá±áá¶áá¬ážááŒááºážááá¯ááºáá«á
- áááºáá ẠáŠáž ááá¯á¡áá¯á¶ážááŒá¯áá»áŸááº
CHAR
áá¯ááºáá¯á¶ážáá±á«áºáá¬áá±á¬ ááŒááºááœááºážááŸááºáááºážá á á áºáá¯ááºáá±á¬áºáá¶áá»á¬ážááœáẠáá±áá¬á¡áá»áá¯ážá¡á á¬ážá áá¬á áá¬ááá¯ááºá áá¬ááºáá±á¬ááºá¡ááœá²áá»á¬ážááŸáá·áº áá¯ááºáá¯á¶ážáá±á«áºáá¬áá±á¬ ááŒááºááœááºážááá¯á·ááẠáá°áá®ááá«áááºá- áá¯ááºáá¯á¶ážáá±á«áºáá¬áá±á¬ ááŒááºááœááºážááœáẠá¡á±á¬ááºáá«ááá¯á·á¡áááºá០áá áºáá¯áá«ááŸááá«áá ááá¬ážááá¯ážáá» DML ááá·áºááœááºážááŸá¯áá»á¬ážááŸáá·áº ááá¯ááºááá¯áẠloads áá»á¬ážááœááºáᬠá¡ááŒááºááŒááºáááºáááºážáá áºááŒááºážááᯠáá±á¬ááºááœááºáá±ážáá«áááºá
- áá¯ááºáá¯á¶ážáá±á«áºáá¬áá²á· á¡ááŒááºááœá±áá²á·
MIN
orMAX
á á¯á á¯áá±á«ááºáž- áá¯á¶áá±á¬áºáá¬ážáá±á¬ á¡ááŒááºáá»á¬áž
SUM(expr)
áá«áá±ááá·áºááá¯ááºáá°ážCOUNT(expr)
- áá¯ááºáá¯á¶ážáá±á«áºáá¬ááŒááºážáááŸááá² á¡ááŒááºáá»á¬áž
COUNT(*)
ááá¯áá²á·ááá¯á· áá¯ááºáá¯á¶ážáá±á«áºáá¬áá±á¬ ááŒááºááœááºážááᯠááá·áºááœááºáž-áááºááẠáá¯ááºáá¯á¶ážáá±á«áºáá¬ááá·áº á¡ááŒááºáá¯áá±á«áºáááºá
- áá¯ááºáá¯á¶ážáá±á«áºáá¬áá±á¬ á¡ááŒááºááŒáá·áº
MAX
orMIN
áááºážááœáẠDML ááŒá±áá¬áá»ááºáá»á¬ážááᯠáá»ááºááŒá®ážáá±á¬áẠááá¯á·ááá¯áẠáá±á¬ááŸá±á¬ááŒá®ážáá±á¬áẠá¡ááŒááºááŒááºáááºáááºážáá áºááá¯ááºáááºWHERE
á¡ááá¯ááº
áá»ááºáá áºááŒá®ážáá±á¬áẠááá¯á·ááá¯áẠáá±á¬ááŸá±á¬ááŒá®ážáá±á¬áẠá¡ááŒáá·áºáá¯á¶áž/áááá Ạá¡ááŒááºááŒááºáááºáááºážáá áºááŸá¯ááœáẠááá·áºááœááºážááá·áºááá á¹á áá²á·ááá¯á· áá°áá®áá±á¬á¡ááŒá¯á¡áá° áááŸááá«á áááºážááẠááááá¯ááºáá±áá±á¬á¡á¯ááºá á¯áá»á¬ážá¡ááœáẠá¡ááŒáá·áºáá¯á¶áž/áááá áºáááºááá¯ážáá»á¬ážááᯠáá»ááºááŒá®áž ááŒááºáááºááœááºáá»ááºáááºá áááºážá á áœááºážáá±á¬ááºááẠáááºáá±á¬ááºááŸá¯ááᯠáááºááááá¬ážááẠááá¯á¡ááºáááºá- á¡áááºááŸá á¡ááŒááºáá»á¬áž ááá¯á·ááá¯áẠá¡áá±ážá áááºáá±á¬áºááŒáá»ááºáá»á¬ážááŒáá·áº áá¯ááºáá¯á¶ážáá±á«áºáá¬áá±á¬ á¡ááŒááºáá»á¬áž
FROM
á¡ááá¯ááºáá»á¬ážááᯠáá»ááºááŒááºá áœá¬ ááŒááºáááºáááºážáá áºááá¯ááºááŒá®áž á¡ááŒááºáá»á¬ážááᯠáá¯á¶ážá áá±á«ááºážá ááºááá¯ááºáááºá áááºááá·áºá¡ááŒááºáá»á¬áž áá±á«ááºážá ááºážáááºááá¯ááá·áº á¡áá»ááºá¡áááºá¡ááœáẠááŒáá·áºáá«áOracle Database SQL Language ááá¯ážáá¬áž .- ááŒááºáááœááºáá«áááºááŸá¯áá»á¬ážáááŸááá«áá áááºááẠááááºáááá¯ááœá±ážáá»ááºááŸá¯áá»á¬ážááŸáá·áº áá°ážáá±á«ááºážáá«áááºááŸá¯áá»á¬ážááŸáááá¯ááºáááºá
WHERE
á¡ááá¯ááº- ááŒááºáááá¬ážáá»á¬ážááá¯áᬠááŒá¯ááŒááºááœááºážáá¶áá¬ážáá±á¬ááŒá±á¬áá·áº ááá¬ážááá¯ážáá» DML ááŸáá·áº ááá¯ááºááá¯ááºáááºááŸá¯áá»á¬ážááŒá®ážáá±á¬áẠááŒááºááá»áááºáááºááŸá¯áá»á¬ážáá«ááŸááá±á¬ á á¯á ááºážáá¬ážáá±á¬ á¡á á¯ááá¯ááºá¡ááŒááºáá»á¬ážááᯠáá»ááºááŒááºá áœá¬ ááŒááºáááºáááºážáá áºááá¯ááºáááºá ááá¯á·á¡ááŒááºá á¡ááœááºážááá¯ááºáž join table á join áá±á¬áºáá¶áá»á¬ážááœáẠáá°ážááŒá¬ážáá±á¬ááá·áºáááºáá»ááºáá»á¬áž ááŸááá±ááá«áááºá ááŒááºááá»áááºáááºááŸá¯áá»á¬ážááŸááá«áá áá»áááºáááºááŸá¯á¡á¬ážáá¯á¶ážááá¯áá»áááºáááºááá«áááºá
AND
s ááŸáá·áº áááºážáá°áá®áá»áŸááŸá¯ááᯠá¡áá¯á¶ážááŒá¯áááẠ(=
) á¡á±á¬áºááá±áá¬á- áá¯ááºáá¯á¶ážáá±á«áºáá¬áá±á¬ á¡ááŒááºáá»á¬ážááŸáá·áºá¡áá°
CUBE
,ROLLUP
áááºážááá¯á·ááᯠá¡á¯ááºá á¯ááœá²á·ááŒááºážá ááá¯á·ááá¯áẠáá±á«ááºážá ááºááŒááºážá á¡á±á¬ááºáá« ááá·áºáááºáá»ááºáá»á¬áž áááºáá±á¬ááºáááº-
- á¡ááá¯áá«
SELECT
á á¬áááºážááœáẠa ááŒá áºááá¯ááºááá·áº á¡á¯ááºá á¯ááœá²ááœá²ááŒá¬ážááŒá¬ážáá¬ážáá»áẠáá«áááºááá·áºáááºáGROUPING_ID
function á¡á¬ážáá¯á¶ážáá±á«áºááŸá¬GROUP
BY
á¡áá¯á¶ážá¡ááŸá¯ááºážáá»á¬áž ááá¯á·ááá¯ááºGROUPING
áá áºáá¯á á®á¡ááœáẠáá¯ááºáá±á¬ááºáá»ááºáá»á¬ážGROUP
BY
á¡áá¯á¶ážá¡ááŸá¯ááºážá á¥ááá¬á¡á¬ážááŒáá·áºááá¯áá«á áá¯á·GROUP
BY
áá¯ááºáá¯á¶ážáá±á«áºáá¬áá²á· á¡ááŒááºáá²á· á¡ááá¯ááºááá±á¬á· "GROUP
BY
CUBE(a, b)
", ááá¯á·áá±á¬ááºSELECT
á á¬áááºážááŸá¬ ááŒá áºááŒá áºáGROUPING_ID(a, b)
» ááá¯á·ááá¯áẠ«GROUPING(a)
AND
GROUPING(b)
» áá¯ááºáá¯á¶ážáá±á«áºáá¬áá±á¬ ááŒááºááœááºážááᯠáá»ááºááŒááºá áœá¬ ááŒááºáááºáááºážáá áºááá¯ááºá á±áááºáGROUP
BY
áááºáá±ááá·áº á¡á¯ááºá á¯áá»á¬áž áááŒá áºáá±á«áºááá·áºáá«á á¥ááá¬á¡á¬ážááŒááºá·, "GROUP BY a, ROLLUP(a, b)
"áááºáá±áá±á¬á¡á¯ááºá á¯áá»á¬ážááᯠááŒá áºáá±á«áºá á±áá±á¬ááŒá±á¬áá·áº á¡ááŒááºááŒááºáááºáááºážáá áºáááááá¯ááºáá«"(a), (a, b), AND (a)
"á5.3.8.7 UNION ALL ááŒáá·áº áá¯ááºáá¯á¶ážáá±á«áºáá¬áá±á¬ á¡ááŒááºáá»á¬ážá¡ááœáẠá¡ááŒááºááŒááºáááºáááºážáá áºááŸá¯á¡áá±á«áº ááá·áºáááºáá»ááºáá»á¬áž
áá¯ááºáá¯á¶ážáá±á«áºáá¬áá²á· á¡ááŒááºááœá±áá²á·
UNION
ALL
áááºááŸáẠoperator ááᯠáá¶á·ááá¯ážáá±ážáááºáREFRESH
FAST
á¡á±á¬ááºáá«á¡ááŒá±á¡áá±áá»á¬áž áá»á±áááºáá«á ááœá±ážáá»ááºááœáá·áº-
- Defining Query ááœáẠáá«ááŸáááá«áááºá
UNION
ALL
ááááºáááºážá¡ááá·áºááœááºá¡á±á¬áºááá±áá¬áá¡ááá¯áá«
UNION
ALL
ááŒáœááºážáá»ááºáá áºáá¯á¡áá±ááŒáá·áº á¡á±á¬áºááá±áá¬á¡á¬áž á á¯á¶á ááºážáá±ážááŒááºážááŸá¯áá áºáá¯á¡ááœááºážááœáẠááá·áºááœááºážááááá«áUNION
ALL
subquery ááœáẠááŸáááá¯ááºáá«áááºáFROM
áá±ážáá¬ážáá±á¬ clause ááẠdefining query ááẠáá¯á¶á á¶ááŒá áºáááºáSELECT * FROM
(ááŒáá·áºááŸá¯ááẠááá¯á·ááá¯áẠá á¯á¶á ááºážáá±ážááŒááºážááŸá¯ááŸáá·áºá¡áá°UNION
ALL
) á¡á±á¬ááºáá«á¥ááá¬á¡ááá¯ááºážview_with_unionall AS (SELECT c.rowid cridá c.cust_idá áá±á¬ááºáááºáá»á¬ážáá¶á០2 umarker c WHERE c.cust_last_name = 'Smith' UNION ALL SELECT c.rowid cridá c.cust_idá 3 umarker áá±á¬ááºáááºáá»á¬ážáá¶á០c_last_custá 'áá»á¯á¶ážá áº'); unionall_inside_view_mv ááᯠá áááºááŒáá¯ááºááœá±ážáá»ááºááŒá®áž áááºááá¯á¡á¬ážááᯠá¡ááŒááºááŒááºáááºáá±ážáá« * view_with_unionall FROM;á¡ááŒááºááᯠáááááŒá¯áá«á
view_with_unionall
á¡ááŒááºááŒááºáááºáááºážáá áºááŸá¯á¡ááœáẠááá¯á¡ááºáá»ááºáá»á¬ážááᯠááŒáá·áºáááºážáá±ážáááºá- áá áºáá¯áá»ááºážá á®ááᯠquery block áá²ááŸá¬
UNION
ALL
á á¯á ááºážááŸá¯áá»á¬ážááŒáá·áº áá»ááºááŒááºá áœá¬ ááŒááºáááºáááºážáá áºááá¯ááºáá±á¬ áá¯ááºáá¯á¶ážáá±á«áºáá¬ááá·áº ááŒááºááœááºážáá áºáᯠááá¯á·ááá¯áẠJoins ááŒáá·áº á¡ááŒááºááŒááºáááºáááºážáá áºááá¯ááºáá±á¬ áá¯ááºáá¯á¶ážáá±á«áºáá¬ááá·áº ááŒááºááœááºážáá áºáá¯á ááá¯á¡ááºáá»ááºáá»á¬ážááᯠááŒáá·áºáááºážáá±ážááá«áááºááá»ááºááŒááºá áœá¬ ááŒááºáááºáááºážáá áºááá¯ááºáá±á¬ áá¯ááºáá¯á¶ážáá±á«áºáá¬áá±á¬ ááŒááºááœááºážá¡áá»áá¯ážá¡á á¬ážá¡ááœáẠáááºááá¯ááºáᬠááá·áºáá»á±á¬áºáá±á¬ áá¯ááºáá¯á¶ážáá±á«áºáá¬ááá·áº ááŒááºááœááºážááŸááºáááºážáá»á¬ážááᯠááá¬ážáá»á¬ážáá±á«áºááœáẠááá¯á¡ááºáááᯠáááºáá®ážááá«áááºá
Oracle áá±áá¬áá±á·á áºááẠáá áºáá¯áááºážáá±á¬ ááá¬ážáá áºáá¯ááᯠáá¯ááºáá¯á¶ážáá±á«áºáá¬á á±áá±á¬ ááŒááºááœááºážá á¡áá°ážááá á¹á áááºááá¯áááºáž ááœáá·áºááŒá¯áá±ážáá¬ážááŒá±á¬ááºáž áááááŒá¯áá«áROWID
áá±á¬áºáá¶ááœáẠááá·áºááœááºážáá¬ážáááºáSELECT
á á¬áááºážááŸáá·áº áá¯ááºáá¯á¶ážáá±á«áºáá¬áá±á¬ ááŒááºááœááºážááŸááºáááºážááœááºá áááºážááᯠááŒáá·áºááŸá¯ááŸá¯á á¡áááá¹áá«ááºááœáá·áºááá¯áá»ááºááœáẠááŒáá¬ážáááºáview_with_unionall
.- á¡ááá¯áá«
SELECT
á á¯á¶á ááºážááŸá¯áá áºáá¯á á®áá á¬áááºážááœáẠa áá«áááºááááºáUNION
ALL
á¡ááŸááºá¡áá¬ážá ááŸáá·áºUNION
ALL
áá±á¬áºáá¶áá áºáá¯á á®ááœáẠááœá²ááŒá¬ážáá±á¬ ááááºážáá±áá¶áá«áẠááá¯á·ááá¯áẠá á¬ááŒá±á¬ááºážáááºááá¯ážáá áºáᯠááŸáááá«áááºáUNION
ALL
á¡áááºá ááá¯á·á¡ááŒááºá á¡ááŸááºá¡áá¬ážáá±á¬áºáá¶ááẠáá°áá®áá±á¬ áá¯á¶ááŸááºá¡áá±á¡áá¬ážááœáẠááŸááá±ááá«áááºáSELECT
query block áá áºáá¯á á®áá á¬áááºážá âááŒáá·áºáá«áUNION ALL Marker ááŸáá·áº Query Rewrite » ááŸáá·áº áááºáááºá ááá¯ááá¯ááááŸáááá¯áá«áUNION
ALL
á¡ááŸááºá¡áá¬ážáá»á¬ážá- ááŒááºááá»áááºáááºááŸá¯áá»á¬ážá ááá·áºááœááºáž-áááºááẠáá±á«ááºážá ááºáá¯ááºáá¯á¶ážáá±á«áºáá¬áá±á¬ ááŒááºááœááºážáá±ážááŒááºážáá»ááºáá»á¬ážááŸáá·áº á¡áá±ážááááºážááá¬ážáá»á¬ážáá²á·ááá¯á· á¡áá»áá¯á·áá±á¬á¡ááºá¹áá«áááºáá»á¬ážááẠáá¯ááºáá¯á¶ážáá±á«áºáá¬áá±á¬ á¡ááŒááºáá»á¬ážá¡ááœáẠáá¶á·ááá¯ážááá¬ážáá«á
UNION
ALL
. ááá¯á·áá±á¬áº áá»áááºáááºááŸá¯ ááá¯á·ááá¯áẠá á¯á ááºážááŸá¯áá»á¬áž ááá«áááºááá·áº áá°ážáá°ááŸá¯ááœáẠá¡áá¯á¶ážááŒá¯áá¬ážááá·áº áá¯ááºáá¯á¶ážáá±á«áºáá¬ááá·áº á¡ááŒááºáá»á¬ážááᯠááŸááºáá¬ážáá¬ážááá·áºá¡áá«ááœáẠááŒááºáááºáááºážáá áºááá¯ááºáááºUNION
ALL
ááá¯á·ááá¯áẠá¡áá±ážááááºážááá¬ážáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯áááºá- áá»ááºááŒááºá áœá¬ ááŒááºáááºáááºážáá áºááá¯ááºáá±á¬ áá¯ááºáá¯á¶ážáá±á«áºáá¬ááá·áº ááŒááºááœááºážááᯠáááºáá®ážáááºá¡ááœáẠááá¯ááºáááºáá®áá±á¬ áááŠážáááºááŸááºááŒááºáž ááá·áºáááºáá»ááºáá±á¬ááºááᯠ9.2.0 ááá¯á·ááá¯áẠááá¯á·áááºááá¯á áááºááŸááºááá«áááºá
UNION
ALL
.
Oracle ááááááºáá»á¬ážááᯠáá á±á¬áºáá¬ážáá»ááºáá±á¬áºáááºáž áááºážááá¯á·á ááá·áºáááºáá»ááºáá»á¬ážá á¬áááºážá¡á á€ááá¹ááá¬ážááẠáá±á¬áºáááºáá áºáá»áá¯ážáá»áá¯ážááᯠá¡áá¯á¶ážááŒá¯á áá±áá°áá»á¡á¬ážááŒáá·áº áá±ážáá¬ážáá¬ážááŒááºážááá¯ááºáá±á¬áºáááºáž áá°ááá¯ááºážááᯠá¡ááœáá·áºá¡áá±ážáá±ážááá·áº áá±á¬ááºáá±á«ááºážáá»á¬ážá áœá¬áá±á¬ á¡ááá¹ááááá°áá»áá¯ážáá»á¬ážá០áá±ážáá¬ážáá¬ážááŒááºážááŒá áºáááºá ááááááá¯á·áá¡ááá¯ááºážá¡áááºááᯠáá±ážááŸááºá á¡áá®ážáá®ážáááºááá¯ááºááá»áŸ áá¯ááºáá²á·ááŒáá á á áºááŸááºáá±á¬áá¯áá¹áááá±áá¡ááœáẠá€ááá¹ááá¬ážááá¯á¡áá¯á¶ážááŒá¯ááŒááºážááẠááá¯ááºážááœááºážáá áºáá¯á¡ááœááºáž áááºážáá»áŸá±á¬ááºááŒááºážááŸáá·áºáá°áááºá ááŸááºážááŸááºážáááºážáááºážááá¯ááºáá±á¬ ááá·áºáááºáá»ááºáá»á¬ážáá²á០áá áºáá¯ááᯠááŸáááºááŒááºážááŒáá·áº ááá¯ááºážáá áºáá¯á¶ážááᯠá¡áá»áááºáááœá±áž áááá¯ááºáááºá áááºážááẠáááºááá¯á·á¡áá¯ááºáá¯ááºáá¯á¶ááŸá¬áááºáž áá®ážááŒá¬ážáá±ážááœááºážáá áºáá¯ááŒá áºáááºá ááá¯á·áá±á¬áº áááºážááẠá€áá±á¬ááºážáá«ážá áá±á¬ááºááá¯áá»á±á¬áºááœááºáá«áááºá
Microsoft SQL Server
á¡ááá¯áá±á¬ááºážááá¯á¡ááºáá»ááºáá»á¬áž
SET ááœá±ážáá»ááºááŸá¯áá»á¬ážááŸáá·áº á¡áá¯á¶ážá¡ááŒááºáá±ážáá±á¬ áá¯ááºáá±á¬ááºááŸá¯ááá¯á¡ááºáá»ááºáá»á¬ážá¡ááŒááºá á¡á±á¬ááºáá«ááá¯á¡ááºáá»ááºáá»á¬ážááᯠááŒáá·áºáááºážáá±ážááááº-
- áá¯ááºáá±á¬ááºáá±á¬á¡áá¯á¶ážááŒá¯áá°
CREATE INDEX
á¡ááŒááºááá¯ááºááŸááºááŒá áºááááºá- á¡ááœáŸááºážááá¯áááºáá®ážáá±á¬á¡áá«á
IGNORE_DUP_KEY
ááœá±ážáá»ááºááŸá¯ááᯠOFF (áá¯á¶áá±áááºáááº) á¡ááŒá ẠáááºááŸááºááá«áááºá- ááá¬ážáá»á¬ážááᯠááŸá áºááá¯ááºážá¡áááºáá»á¬ážááŒáá·áº ááá¯ážáá¬ážááááºá schema.á á¬ážááœá²á¡ááẠá¡ááŒááºá¡áááá¹áá«ááºáá
- ááŒááºááœááºážááœáẠááá¯ážáá¬ážáá¬ážáá±á¬ á¡áá¯á¶ážááŒá¯áá°áááºááŸááºáá¬ážáá±á¬ áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯á áááºáá®ážááá«áááºá
WITH SCHEMABINDING
option ááá¯á- ááŒááºááœááºážááœáẠááá¯ážáá¬ážáá¬ážáá±á¬ á¡áá¯á¶ážááŒá¯áá°áááºááŸááºáá¬ážáá±á¬ áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááᯠá¡ááá¯ááºážááŸá áºááá¯ááºážá¡áááºáá»á¬ážááŒáá·áº ááá¯ážáá¬ážááá«áááºá ..
- á¡áá¯á¶ážááŒá¯áá°áááºááŸááºáá¬ážáá±á¬ áá¯ááºáá±á¬ááºáá»ááºáá áºáá¯á áá±áá¬áááºáá±á¬ááºááœáá·áºááá¯ááºááá¯ááºááŸá¯ááẠááŒá áºááá«áááºá
NO SQL
ááŸáá·áº ááŒááºááááºáá±á¬ááºááœáá·áº ááá¯ááºááá¯ááºááŸá¯ ááŸáááá«áááºáNO
.- áá¯á¶áá¬áá¬á áá¬ážáá¯á¶ážáá»ááẠ(CLR) áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááẠááŒááºááœááºážáááœá±ážáá»ááºáá¬ážáá±á¬á á¬áááºážááœáẠáá±á«áºáá¬ááá¯ááºáá±á¬áºáááºáž á¡á á¯ááá¯ááºá¡ááŒá¯á¶ááá¯ááºá¡ááœáŸááºážáá®ážá á¡áááá¹áá«ááºááœáá·áºááá¯áá»ááºá áá áºá áááºáá áºááá¯ááºážáááŒá áºááá¯ááºáá«á CLR áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááẠááŒááºááœááºážá WHERE á¡ááá¯áẠááá¯á·ááá¯áẠááŒááºááœááºážááŸá JOIN áá¯ááºáá±á¬ááºááŸá¯áá áºáá¯á ON á¡ááá¯ááºááœáẠááá±á«áºááá¯ááºáá«á
- CLR áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááŸáá·áº ááŒááºááœááºáž á¡áááá¹áá«ááºááœáá·áºááá¯áá»ááºááœáẠá¡áá¯á¶ážááŒá¯ááá·áº CLR á¡áá¯á¶ážááŒá¯áá°áááºááŸááºáá¬ážáá±á¬ á¡áá»áá¯ážá¡á á¬ážáá»á¬ážá áááºážáááºážáá»á¬ážááŸáá·áº áááºážáááºážáá»á¬ážááẠá¡á±á¬ááºáá«ááá¬ážááœáẠááŒáá¬ážááá·áºá¡ááá¯ááºáž áááºááŸááºáá¯ááºááá¹áááá»á¬áž ááŸáááá«áááºá
á¡áááºááŒá¶ááŒá±
ááŸááºá á¯DETERMINISTIC = á¡ááŸááº
Microsoft .NET Framework method á attribute áá áºáá¯á¡ááŒá Ạá¡ááá¡áááºážááŒá±ááŒá¬ááá«áááºáPRECISE = á¡ááŸááº
.NET Framework method á attribute áá áºáá¯á¡ááŒá Ạá¡ááá¡áááºážááŒá±ááŒá¬ááá«áááºáDATA ACCESS = SQL áááŸááá«á
DataAccess attribute ááᯠDataAccessKind.None ááŸáá·áº SystemDataAccess attribute á០SystemDataAccessKind.None ááá¯á· áááºááŸááºááŒááºážááŒáá·áº áááºááŸááºáááºáááŒááºááááºáá±á¬ááºááœáá·áº = áááŸááá«á
á€ááá¯ááºááá¯ááºááŸá¯ááẠCLR áá¯ááºááá¯ážáá¯ááºá ááºáá»á¬ážá¡ááœáẠNO á¡ááŒá ẠáááºááŸááºáááºá- ááŒááºááœááºážááᯠá¡áá¯á¶ážááŒá¯á áááºáá®ážááá«áááºá
WITH SCHEMABINDING
option ááá¯á- ááŒááºááœááºážááẠááŒááºááœááºážááŸáá·áº áá°áá®áá±á¬áá±áá¬áá±á·á áºááœááºááŸááá±á¬ á¡ááŒá±áá¶ááá¬ážáá»á¬ážááá¯áᬠáááºááœáŸááºážááá«áááºá ááŒááºááœááºážááẠá¡ááŒá¬ážá¡ááŒááºáá»á¬ážááᯠááá¯ážáá¬ážááááá«á
- á¡ááŒááºá¡áááá¹áá«ááºááœáá·áºááá¯áá»ááºááŸá SELECT áá¯ááºááŒááºáá»ááºááœáẠá¡á±á¬ááºáá« Transact-SQL á¡á áááºá¡ááá¯ááºážáá»á¬áž ááá«áááºááá«á
COUNT
ROWSET áá¯ááºáá±á¬ááºáá»ááºáá»á¬áž (OPENDATASOURCE
,OPENQUERY
,OPENROWSET
, ááŸáá·áºOPENXML
)
OUTER
áá«áááºááẠ(LEFT
,RIGHT
áá«ááŸááá¯ááºFULL
)Derived table (a ááᯠáááºááŸááºááŒááºážááŒáá·áº áááºááŸááºáááºá
SELECT
ááŒá±áá¬áá»ááºFROM
ááá±á¬áá±á«á·)
ááá¯ááºááá¯ááºáá«áááºáááºá
á¡áá¯á¶ážááŒá¯ááŒááºážááŒáá·áº áá±á¬áºáá¶áá»á¬ážááᯠáááºááŸááºááŒááºážáSELECT *
orSELECT <table_name>.*
DISTINCT
STDEV
,STDEVP
,VAR
,VARP
áá«ááŸááá¯ááºAVG
á¡áá¯á¶ážáá»á¬ážáá±á¬ááá¬ážá¡áá¯á¶ážá¡ááŸá¯ááºáž (CTE)ááŒá±á¬1, á á¬áá¬ážá, ntext, áá¯á¶ááááº, XML ááá¯áá«ááŸááá¯áẠááá¯ááºá á®ážááŒá±á¬ááºáž áá±á¬áºáá¶
Subquery
OVER
á¡ááá·áºáááºááŸááºááŒááºáž ááá¯á·ááá¯áẠá á¯á ááºážáááºážááá¯ážáá¯ááºáá±á¬ááºáá»ááºáá»á¬áž áá«áááºááá·áº á á¬ááá¯ááºá á¬áá¬ážá¡ááŒáá·áºá¡á á¯á¶ (
CONTAINS
,FREETEXT
)
SUM
nullable expression ááᯠááá¯ážáá¬ážáá±á¬ áá¯ááºáá±á¬ááºáá»ááº
ORDER BY
CLR á¡áá¯á¶ážááŒá¯áá°áááºááŸááºáá¬ážáá±á¬ á á¯á ááºážáá¯ááºáá±á¬ááºáá»ááº
TOP
CUBE
,ROLLUP
áá«ááŸááá¯ááºGROUPING SETS
á¡á±á¬áºááá±áá¬
MIN
,MAX
UNION
,EXCEPT
áá«ááŸááá¯ááºINTERSECT
á¡á±á¬áºááá±áá¬
TABLESAMPLE
ááá¬ážááœááºááŒá±á¬ááºážáááºá
OUTER APPLY
orCROSS APPLY
PIVOT
,UNPIVOT
áá»á²áá±á¬áºáá¶á¡á á¯á¶
Inline (TVF) ááá¯á·ááá¯áẠmulti-statement table-valued functions (MSTVF)
OFFSET
CHECKSUM_AGG
1 ááœáŸááºážáá¬ážáá±á¬ ááŒááºááœááºážááœáẠáá«áááºááá¯ááºáááºá ááŒá±á¬ áá±á¬áºáá¶áá»á¬áž; ááá¯á·áá±á¬áºá ááá¯áá±á¬áºáá¶áá»á¬ážááᯠá¡á á¯ááá¯ááºá¡ááœáŸááºážáá®ážááœáẠááá·áºááœááºážááááá«á
- If
GROUP BY
áááºááŸáááœááºá VIEW á á¡áááá¹áá«ááºááœáá·áºááá¯áá»áẠáá«áááºááá«áááºáCOUNT_BIG(*)
ááá«áááºááá«áHAVING
á á€GROUP BY
ááá·áºáááºáá»ááºáá»á¬ážááẠá¡ááœáŸááºážááŒá¯áá¬ážáá±á¬ ááŒááºááœááºážá¡áááá¹áá«ááºááŸáá·áºáᬠáááºááá¯ááºáá«áááºá á á¯á¶á ááºážááŸá¯áá áºáá¯ááẠáááºážááá¯á·á¡á¬áž áá»á±áááºááŸá¯áááŸááá«á áááºážááá¯ááºáá±á¬ááºááŸá¯á¡á á®á¡á ááºááœáẠá¡ááœáŸááºážáá±ážáá¬ážáá±á¬ááŒááºááœááºážááᯠá¡áá¯á¶ážááŒá¯ááá¯ááºáááºáGROUP BY
áááºá·áááºá- á¡ááŒáẠá¡áááá¹áá«ááºááŸá¬ a áá«ááŸááááºá
GROUP BY
clauseá áá°ážááŒá¬ážáá±á¬á¡á á¯á¡ááŒá¯á¶ááá¯ááºá¡ááœáŸááºážááááºážááá±á¬á·ááẠáááºááŸááºáá¬ážáá±á¬áá±á¬áºáá¶áá»á¬ážááá¯áᬠááá¯ážáá¬ážááá¯ááºáááºáGROUP BY
á¡ááá¯ááº
"áá«ááá¯á·áááºážáááºážáá¯ááºáááº" áá°áá±á¬á¡á á®á¡á á¥áºá¡ááá¯ááºážáá¯ááºáá±á¬ááºáááºáá¯á¶ážááŒááºáá²á·áá±á¬ááŒá±á¬áá·áºá¡ááá¹ááááá°áá»áá¯ážáá»á¬ážáá«áááºáááºáááºááŒááºážáááŸáááŒá±á¬ááºážá€áá±áá¬ááœááºááŸááºážááŸááºážáááºážáááºážááááááºá ááá¯ááá¯áááºááŸá¬á áááºážááá¯á·ááœáẠááá¯ááºážáá»á¬ážááá¯ááá¯ááŸááá±á¬áºáááºáž áááºážááá¯á·ááááºáá±áá¬ááẠááá¯ááá¯ááœáá·áºáááºážáááºá á áááºáá»ááºá áá¬á¡áá±á¬ááºážáá¯á¶ážááŸá¬ á€ááá·áºáááºáá»ááºááŒá áºáááºá
ááŒááºááœááºážááẠááŒááºááœááºážááŸáá·áº áá°áá®áá±á¬áá±áá¬áá±á·á áºááœááºááŸááá±á¬ á¡ááŒá±áá¶ááá¬ážáá»á¬ážááá¯áᬠáááºááœáŸááºážááá«áááºá ááŒááºááœááºážááẠá¡ááŒá¬ážá¡ááŒááºáá»á¬ážááᯠááá¯ážáá¬ážááááá«á
áá»áœááºá¯ááºááá¯á·á á¡áá¯á¶ážá¡ááŸá¯ááºážáá»á¬ážááœááºá ááá¯ááá¯áááºááŸá¬ áá¯ááºáá±á¬ááºáá»ááºáá
áºáá¯ááẠá¡ááŒá¬ážáá±á¬ áá¯ááºáá¯á¶ážáá±á«áºáá¬áá±á¬ áá¯ááºáá±á¬ááºáá»ááºááᯠááááºáá±á¬ááºááá¯ááºáᯠááá¯ááá¯áááºá áá«á á¡ááŒá±á¬áºá¡ááŒááºááŸáááŸá¯á¡á¬ážáá¯á¶ážááᯠááŒááºáá±á¬ááºáá
áºááá¯ááºáááºá
ááá¯á·á¡ááŒááºá á€ááá·áºáááºáá»áẠ(ááŸáá·áº áá±á¬ááºáááºá
á¬áá¬ážáá»á¬ážááœááº) á¡áá¯á¶ážááŒá¯ááŸá¯ááá
á¹á
áá»á¬ážááᯠá¡ááœááºáá»áŸá±á¬á·áá»áá±ážáááº-
á¡ááŒááºá¡áááá¹áá«ááºááœáá·áºááá¯áá»ááºááŸá SELECT áá¯ááºááŒááºáá»ááºááœáẠá¡á±á¬ááºáá« Transact-SQL á¡á áááºá¡ááá¯ááºážáá»á¬áž ááá«áááºááá«á
COUNT
ROWSET áá¯ááºáá±á¬ááºáá»ááºáá»á¬áž (OPENDATASOURCE
,OPENQUERY
,OPENROWSET
, ááŸáá·áºOPENXML
)
OUTER
áá«áááºááẠ(LEFT
,RIGHT
áá«ááŸááá¯ááºFULL
)Derived table (a ááᯠáááºááŸááºááŒááºážááŒáá·áº áááºááŸááºáááºá
SELECT
ááŒá±áá¬áá»ááºFROM
ááá±á¬áá±á«á·)
ááá¯ááºááá¯ááºáá«áááºáááºá
á¡áá¯á¶ážááŒá¯ááŒááºážááŒáá·áº áá±á¬áºáá¶áá»á¬ážááᯠáááºááŸááºááŒááºážáSELECT *
orSELECT <table_name>.*
DISTINCT
STDEV
,STDEVP
,VAR
,VARP
áá«ááŸááá¯ááºAVG
á¡áá¯á¶ážáá»á¬ážáá±á¬ááá¬ážá¡áá¯á¶ážá¡ááŸá¯ááºáž (CTE)ááŒá±á¬1, á á¬áá¬ážá, ntext, áá¯á¶ááááº, XML ááá¯áá«ááŸááá¯áẠááá¯ááºá á®ážááŒá±á¬ááºáž áá±á¬áºáá¶
Subquery
OVER
á¡ááá·áºáááºááŸááºááŒááºáž ááá¯á·ááá¯áẠá á¯á ááºážáááºážááá¯ážáá¯ááºáá±á¬ááºáá»ááºáá»á¬áž áá«áááºááá·áº á á¬ááá¯ááºá á¬áá¬ážá¡ááŒáá·áºá¡á á¯á¶ (
CONTAINS
,FREETEXT
)
SUM
nullable expression ááᯠááá¯ážáá¬ážáá±á¬ áá¯ááºáá±á¬ááºáá»ááº
ORDER BY
CLR á¡áá¯á¶ážááŒá¯áá°áááºááŸááºáá¬ážáá±á¬ á á¯á ááºážáá¯ááºáá±á¬ááºáá»ááº
TOP
CUBE
,ROLLUP
áá«ááŸááá¯ááºGROUPING SETS
á¡á±á¬áºááá±áá¬
MIN
,MAX
UNION
,EXCEPT
áá«ááŸááá¯ááºINTERSECT
á¡á±á¬áºááá±áá¬
TABLESAMPLE
ááá¬ážááœááºááŒá±á¬ááºážáááºá
OUTER APPLY
orCROSS APPLY
PIVOT
,UNPIVOT
áá»á²áá±á¬áºáá¶á¡á á¯á¶
Inline (TVF) ááá¯á·ááá¯áẠmulti-statement table-valued functions (MSTVF)
OFFSET
CHECKSUM_AGG
ááŒááºááá°ážáá±á«ááºážááŸá¯á áááá¹áá ááŸá¬áá°ááŸá¯ááŸáá·áº á¡ááŒá¬ážá¡áá¬áá»á¬ážááᯠáá¬ážááŒá áºáá¬ážáááºá á¡áá¯á¶ážáááŒá¯ááá¯ááºááá·áºá¡áá¬ááẠá¡áá¯á¶ážáááŒá¯ááá¯ááºáá±á¬á¡áá¬ááᯠáááºááŸááºááẠááá¯ááá¯ááœááºáá°áá±áááºá á á¬áááºážá ááá¯áá±ážáá±áááá·áºáááºá
á¡áá»ááºážáá»á¯ááºááŒá±á¬ááá»áŸááº- LGPL áááºážááá¬ááŸá DBMS ááŸáá·áº áá áºáá¯áá»áŸ (áá¯áá¹áááááºážáá»áá±á¬á áááºážááá¬ááá¯ááºáá±á¬ ááŒáœááºážáá»ááº) áá áºáá¯á á®ááœáẠ(á á®ážááœá¬ážááŒá áºáááááŒá¯ááŒáá«á áá¯á·) ááá·áºáááºáá»ááºáá»á¬ážá áœá¬ááŸááááºá ááá¯á·áá±á¬áºá áááºá ááºáá¯áá¹áááá±áááœáẠá€ááá¹ááá¬ážááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºáá¬ááœáẠáá±á¬áºááŒáá¬ážáá±á¬ functional logic ááẠá¡áááºážáááºááá¯áááºáá²áááºááᯠáááááŒá¯ááá·áºáááºá
á¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯
áááºááá¯á¡áá¯ááºáá¯ááºáá²? PostgreSQL ááᯠ"virtual machine" á¡ááŒá
áºá¡áá¯á¶ážááŒá¯áááºá á
á¯á¶á
ááºážáá±ážááŒááºážááŸá¯áá»á¬ážááᯠáááºáá®ážáá±ážááá·áº á¡ááœááºážááœáẠááŸá¯ááºááœá±ážáá±á¬ á¡ááºáááá¯áá®áááºáá
áºáᯠááŸááááºá áá®ááŸá¬
áááááá±á¬ááºáá±á¬áẠáá¯ááºáá±á¬ááºááá¯ááºáá«ááá¬ážá áá±á¬áºáá±á¬áºáááá±á¬ááºáááºá áá¶ááá±á¬ááºážá
áœá¬áá²á áá«ááááºáá±ááŒááá¯á·áááºáááºá á¡ááá®áá±ážááŸááºážááŒá®ážáá»á¬ážááœááºáá«ááŸááá±á¬ á
á¯á¶á
ááºážáá±ážááŒááºážááŸá¯áá±á¬ááºáá±á«ááºážáá»á¬ážá
áœá¬ááᯠáááºááá·áºááœááºážá
ááºážá
á¬ážáá«áá áá»ááºážáá»áŸá¡á¬ážááŒáá·áº áááºážááá¯á·ááẠáá±á¬ááºážááœááºáá±á¬ developer áá»á¬ážááẠááá¯ááá¯áááá±á¬ááºáááºáá¯áᬠáá»áœááºá¯ááºááŒá±á¬ááá¯ááºáááºá áá°ážáá»áœááºáá±á¬ SQL áááá¯ááááºáá¬áá
áºáŠážááẠáááºááá·áºáá±ážááœááºážááá¯áááᯠááá¯ááá¯áááá±á¬ááºá
áœá¬ áá±ážáá¬ážááá¯ááºáá±á¬áºáááºáž á
á¯á¶á
ááºážáá±ážááŒááºážáá»ááºáá
áºáá±á¬ááºááŒáá·áº áááºážááá¯ááŒá¯áá¯ááºááẠááŸá¯á¶á·áá±á¬áºááŸá¯ ááá¯á·ááá¯áẠá¡áá»áááºáááŸááá±á áááá±á¬ááºááŸá¯á¡áá±á¬ááºá¡áá¬ážá¡ááŒá
Ạááá¯áá»áœááºáá±á¬áºááá¯ážáá¬ážáá±á¬áºááŒááá¯ááºááá·áº áá
áºáá¯áááºážáá±á¬á¡áá¬ááŸá¬ DBMS áá±á«áºááœáẠáááºáá±á¬ááºáá¬ážáá±á¬ ááááºáá±á¬ááºážáá±á«áºááœáẠááá±á¬áá»ááºáá»á¬ážá
áœá¬ áá¯ááºáá±á¬ááºáá±ááŒááºážááŒá
áºáááºá
á¡á±á¬ááºáá«áá±á¬ááºážáá«ážáá»á¬ážááœááºá áááºááẠáá¯ááºáá±á¬ááºáá»ááºáá»á¬ážá¡áá±á«áº ááá·áºáááºáá»ááºáá»á¬ážááᯠáááºááá¯á·áááºááŸááºááá¯ááºáááºá á¡ááŒá±á¬ááºážá¡áá² sessions ááŸáá·áº áá¯ááºáá±á¬ááºááá¯ááºáá¯á¶ááŸáá·áº á¡ááŒá¬ážá¡áá¬áá»á¬ážá
áœá¬á¡ááŒá±á¬ááºážááá¯áááºáž ááœá±ážááœá±ážáá«áááºá
source: www.habr.com