ืื™ื–ื•ืŸ ื›ืชื™ื‘ื” ื•ืงืจื™ืื” ื‘ืžืกื“ ื ืชื•ื ื™ื

ืื™ื–ื•ืŸ ื›ืชื™ื‘ื” ื•ืงืจื™ืื” ื‘ืžืกื“ ื ืชื•ื ื™ื
ื‘ืงื•ื“ื ัั‚ะฐั‚ัŒะต ืชื™ืืจืชื™ ืืช ื”ืจืขื™ื•ืŸ ื•ื”ื™ื™ืฉื•ื ืฉืœ ืžืกื“ ื ืชื•ื ื™ื ืฉื ื‘ื ื” ืขืœ ื‘ืกื™ืก ืคื•ื ืงืฆื™ื•ืช, ื‘ืžืงื•ื ื˜ื‘ืœืื•ืช ื•ืฉื“ื•ืช ื›ืžื• ื‘ืžืกื“ื™ ื ืชื•ื ื™ื ื™ื—ืกื™ื™ื. ื”ื•ื ืกื™ืคืง ื“ื•ื’ืžืื•ืช ืจื‘ื•ืช ื”ืžืจืื•ืช ืืช ื”ื™ืชืจื•ื ื•ืช ืฉืœ ื’ื™ืฉื” ื–ื• ืขืœ ืคื ื™ ื”ื’ื™ืฉื” ื”ืงืœืืกื™ืช. ืจื‘ื™ื ืžืฆืื• ืื•ืชื ืœื ืžืกืคื™ืง ืžืฉื›ื ืขื™ื.

ื‘ืžืืžืจ ื–ื” ืืจืื” ื›ื™ืฆื“ ืžื•ืฉื’ ื–ื” ืžืืคืฉืจ ืœืื–ืŸ ื‘ืžื”ื™ืจื•ืช ื•ื‘ื ื•ื—ื•ืช ื›ืชื™ื‘ื” ื•ืงืจื™ืื” ืœืžืกื“ ื”ื ืชื•ื ื™ื ืœืœื ื›ืœ ืฉื™ื ื•ื™ ื‘ืœื•ื’ื™ืงืช ื”ื”ืคืขืœื”. ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช ื“ื•ืžื” ื ื•ืกืชื” ืœื™ื™ืฉื•ื ื‘ืžืขืจื›ื•ืช DBMS ืžืกื—ืจื™ื•ืช ืžื•ื“ืจื ื™ื•ืช (ื‘ืคืจื˜, 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(ืžืกืคืจ ืžื—ืœืงื•ืช) ืœืงื™ื‘ื•ืฅ ื•ื›ืŸ ื”ืœืื”.

ื‘ืจื•ืจ ืฉืชืงื•ืจืช ื”ื‘ื™ืฆื•ืข ืขืฉื•ื™ื” ืœื”ื™ื•ืช ืฉื•ื ื” ื‘ืžืขืจื›ื•ืช DBMS ืฉื•ื ื•ืช, ืืš ื”ืžื•ืจื›ื‘ื•ืช ืœื ืชืฉืชื ื” ื‘ืฉื•ื ืฆื•ืจื”.

ื‘ื™ื™ืฉื•ื ื”ืžื•ืฆืข, ื”-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;

ื”ืžืขืจื›ืช ืขืฆืžื” ืชื™ืฆื•ืจ ื˜ื‘ืœื” ืื—ืช ืขื ืžืงืฉื™ ืกื•ื’ ืœืงื•ื—, ื”ืžื•ืฆืจ ะธ ืžืกืคืจ ืฉืœื, ื™ื•ืกื™ืฃ ืœื• ืฉื ื™ ืฉื“ื•ืช ื•ื™ืขื“ื›ืŸ ืืช ืขืจื›ื™ ื”ืฉื“ื•ืช ืฉื‘ื”ื ื‘ื›ืœ ืฉื™ื ื•ื™. ื›ืืฉืจ ืžืชื‘ืฆืขื•ืช ืงืจื™ืื•ืช ื ื•ืกืคื•ืช ืœืคื•ื ืงืฆื™ื•ืช ื”ืœืœื•, ื”ืŸ ืœื ื™ื—ื•ืฉื‘ื•, ืืœื ื”ืขืจื›ื™ื ื™ื™ืงืจืื• ืžื”ืฉื“ื•ืช ื”ืžืชืื™ืžื™ื.

ื‘ืืžืฆืขื•ืช ืžื ื’ื ื•ืŸ ื–ื”, ืชื•ื›ืœ, ืœืžืฉืœ, ืœื”ื™ืคื˜ืจ ืžืจืงื•ืจืกื™ื•ืช (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;

ืžืื– ื‘ืฉื‘ื™ืœ ื”ืคื•ื ืงืฆื™ื” ื”ื•ื ื”ื•ืจื” ืžืกื•ืžืŸ MATERIALIZED, ืื– ืชื™ื•ื•ืฆืจ ืขื‘ื•ืจื• ื˜ื‘ืœื” ืขื ืฉื ื™ ืžืคืชื—ื•ืช (ืงื‘ื•ืฆื•ืช), ืฉื‘ื” ื”ืฉื“ื” ื”ื•ื ื”ื•ืจื” ื™ื”ื™ื” ื ื›ื•ืŸ ืจืง ืื ื”ืžืคืชื— ื”ืจืืฉื•ืŸ ื”ื•ื ื‘ืŸ ืฉืœ ื”ืฉื ื™. ืžืกืคืจ ื”ืขืจื›ื™ื ื‘ื˜ื‘ืœื” ื–ื• ื™ื”ื™ื” ืฉื•ื•ื” ืœืžืกืคืจ ื”ืงื‘ื•ืฆื•ืช ื›ืคื•ืœ ื”ืขื•ืžืง ื”ืžืžื•ืฆืข ืฉืœ ื”ืขืฅ. ืื ืืชื” ืฆืจื™ืš, ืœืžืฉืœ, ืœืกืคื•ืจ ืืช ืžืกืคืจ ื”ืฆืืฆืื™ื ืฉืœ ืงื‘ื•ืฆื” ืžืกื•ื™ืžืช, ืืชื” ื™ื›ื•ืœ ืœื”ืฉืชืžืฉ ื‘ืคื•ื ืงืฆื™ื” ื”ื–ื•:

childrenCount (Group g) = GROUP SUM 1 IF isParent(Group child, g);

ืœื ื™ื”ื™ื” CTE ื‘ืฉืื™ืœืชืช SQL. ื‘ืžืงื•ื ื–ืืช ื™ื”ื™ื” GROUP BY ืคืฉื•ื˜.

ื‘ืืžืฆืขื•ืช ืžื ื’ื ื•ืŸ ื–ื”, ืชื•ื›ืœ ื’ื ืœื‘ื˜ืœ ื‘ืงืœื•ืช ืืช ืžืกื“ ื”ื ืชื•ื ื™ื ื‘ืžื™ื“ืช ื”ืฆื•ืจืš:

CLASS Order 'ะ—ะฐะบะฐะท';
date 'ะ”ะฐั‚ะฐ' = DATA DATE (Order);

CLASS OrderDetail 'ะกั‚ั€ะพะบะฐ ะทะฐะบะฐะทะฐ';
order 'ะ—ะฐะบะฐะท' = DATA Order (OrderDetail);
date 'ะ”ะฐั‚ะฐ' (OrderDetail d) = date(order(d)) MATERIALIZED INDEXED;

ื‘ืขืช ืงืจื™ืื” ืœืคื•ื ืงืฆื™ื” ื ืชื•ื ื™ื ืขื‘ื•ืจ ืฉื•ืจืช ื”ื”ื–ืžื ื”, ื”ืฉื“ื” ืฉืขื‘ื•ืจื• ืงื™ื™ื ืื™ื ื“ืงืก ื™ื™ืงืจื ืžื”ื˜ื‘ืœื” ืขื ืฉื•ืจื•ืช ื”ื”ื–ืžื ื”. ื›ืืฉืจ ืชืืจื™ืš ื”ื”ื–ืžื ื” ืžืฉืชื ื”, ื”ืžืขืจื›ืช ืขืฆืžื” ืชื—ืฉื‘ ืžื—ื“ืฉ ืื•ื˜ื•ืžื˜ื™ืช ืืช ื”ืชืืจื™ืš ื”ืžืคื•ืจืง ื‘ืฉื•ืจื”.

ื™ืชืจื•ื ื•ืช

ื‘ืฉื‘ื™ืœ ืžื” ื›ืœ ื”ืžื ื’ื ื•ืŸ ื”ื–ื”? ื‘-DBMSs ืงืœืืกื™, ืœืœื ืฉื›ืชื•ื‘ ืฉืื™ืœืชื•ืช, ืžืคืชื— ืื• DBA ื™ื›ื•ืœื™ื ืจืง ืœืฉื ื•ืช ืื™ื ื“ืงืกื™ื, ืœืงื‘ื•ืข ืกื˜ื˜ื™ืกื˜ื™ืงื•ืช ื•ืœื”ื’ื™ื“ ืœืžืชื›ื ืŸ ื”ืฉืื™ืœืชื•ืช ื›ื™ืฆื“ ืœื‘ืฆืข ืื•ืชื (ื•ื”ื˜ื™ืคื™ื ื–ืžื™ื ื™ื ืจืง ื‘-DBMS ืžืกื—ืจื™ื™ื). ืœื ืžืฉื ื” ื›ืžื” ื”ื ื™ื ืกื•, ื”ื ืœื ื™ื•ื›ืœื• ืœื”ืฉืœื™ื ืืช ื”ืฉืื™ืœืชื” ื”ืจืืฉื•ื ื” ื‘ืžืืžืจ ื‘ O (ืžืกืคืจ ืžื—ืœืงื•ืช) ืžื‘ืœื™ ืœืฉื ื•ืช ืฉืื™ืœืชื•ืช ืื• ืœื”ื•ืกื™ืฃ ื˜ืจื™ื’ืจื™ื. ื‘ืกื›ื™ืžื” ื”ืžื•ืฆืขืช, ื‘ืฉืœื‘ ื”ืคื™ืชื•ื— ืื™ื ืš ืฆืจื™ืš ืœื—ืฉื•ื‘ ืขืœ ืžื‘ื ื” ืื—ืกื•ืŸ ื”ื ืชื•ื ื™ื ื•ื‘ืื™ืœื• ืฆื‘ื™ืจื•ืช ืœื”ืฉืชืžืฉ. ื›ืœ ื–ื” ื ื™ืชืŸ ืœืฉื™ื ื•ื™ ื‘ืงืœื•ืช ืชื•ืš ื›ื“ื™ ืชื ื•ืขื”, ื™ืฉื™ืจื•ืช ื‘ืคืขื•ืœื”.

ื‘ืคื•ืขืœ ื–ื” ื ืจืื” ื›ืš. ื™ืฉ ืื ืฉื™ื ืฉืžืคืชื—ื™ื ื”ื™ื’ื™ื•ืŸ ื™ืฉื™ืจื•ืช ืขืœ ืกืžืš ื”ืžืฉื™ืžื” ืฉืขืœ ื”ืคืจืง. ื”ื ืœื ืžื‘ื™ื ื™ื ืืœื’ื•ืจื™ืชืžื™ื ื•ืžื•ืจื›ื‘ื•ืชื, ืœื ืชื•ื›ื ื™ื•ืช ื‘ื™ืฆื•ืข, ืœื ืกื•ื’ื™ ื”ืฆื˜ืจืคื•ืช, ื•ืœื ื›ืœ ืจื›ื™ื‘ ื˜ื›ื ื™ ืื—ืจ. ื”ืื ืฉื™ื ื”ืืœื” ื”ื ื™ื•ืชืจ ืื ืœื™ืกื˜ื™ื ืขืกืงื™ื™ื ืžืืฉืจ ืžืคืชื—ื™ื. ืœืื—ืจ ืžื›ืŸ, ื›ืœ ื–ื” ื ื›ื ืก ืœื‘ื“ื™ืงื” ืื• ื”ืคืขืœื”. ืžืืคืฉืจ ืจื™ืฉื•ื ืฉืœ ืฉืื™ืœืชื•ืช ืืจื•ื›ื•ืช ื˜ื•ื•ื—. ื›ืืฉืจ ืžื–ื•ื”ื” ืฉืื™ืœืชื” ืืจื•ื›ื”, ืื– ืื ืฉื™ื ืื—ืจื™ื (ื˜ื›ื ื™ื™ื ื™ื•ืชืจ - ื‘ืขืฆื DBA) ืžื—ืœื™ื˜ื™ื ืœื”ืคืขื™ืœ MATERIALIZED ื‘ืคื•ื ืงืฆื™ื™ืช ื‘ื™ื ื™ื™ื ื›ืœืฉื”ื™. ื–ื” ืžืื˜ ืžืขื˜ ืืช ื”ื”ืงืœื˜ื” (ืฉื›ืŸ ื–ื” ืžืฆืจื™ืš ืขื“ื›ื•ืŸ ืฉื“ื” ื ื•ืกืฃ ื‘ืขืกืงื”). ืขื ื–ืืช, ืœื ืจืง ืฉืื™ืœืชื” ื–ื• ืžื•ืืฆืช ืžืฉืžืขื•ืชื™ืช, ืืœื ื’ื ื›ืœ ื”ืฉืืจ ืฉืžืฉืชืžืฉื™ื ื‘ืคื•ื ืงืฆื™ื” ื–ื•. ื™ื—ื“ ืขื ื–ืืช, ื”ื”ื—ืœื˜ื” ืื™ื–ื• ืคื•ื ืงืฆื™ื” ืœืžืžืฉ ื”ื™ื ืงืœื” ื™ื—ืกื™ืช. ืฉื ื™ ืคืจืžื˜ืจื™ื ืขื™ืงืจื™ื™ื: ืžืกืคืจ ืขืจื›ื™ ื”ืงืœื˜ ื”ืืคืฉืจื™ื™ื (ื–ื” ื›ืžื” ืจืฉื•ืžื•ืช ื™ื”ื™ื• ื‘ื˜ื‘ืœื” ื”ืžืชืื™ืžื”), ื•ื‘ืื™ื–ื• ืชื“ื™ืจื•ืช ื”ื•ื ืžืฉืžืฉ ื‘ืคื•ื ืงืฆื™ื•ืช ืื—ืจื•ืช.

ืื ืœื•ื’ื™ื

ืœืžืขืจื›ื•ืช DBMS ืžืกื—ืจื™ื•ืช ืžื•ื“ืจื ื™ื•ืช ื™ืฉ ืžื ื’ื ื•ื ื™ื ื“ื•ืžื™ื: MATERIALIZED VIEW ืขื FAST REFRESH (Oracle) ื•- INDEXED VIEW (Microsoft SQL Server). ื‘-PostgreSQL ืœื ื ื™ืชืŸ ืœืขื“ื›ืŸ MATERIALIZED VIEW ื‘ืขืกืงื”, ืืœื ืจืง ืขืœ ืคื™ ื‘ืงืฉื” (ื•ืืคื™ืœื• ื‘ื”ื’ื‘ืœื•ืช ืžืื•ื“ ืžื—ืžื™ืจื•ืช), ืื– ืื ื—ื ื• ืœื ืžืชื—ืฉื‘ื™ื ื‘ื–ื”. ืื‘ืœ ื™ืฉ ืœื”ื ื›ืžื” ื‘ืขื™ื•ืช ืฉืžื’ื‘ื™ืœื•ืช ื‘ืื•ืคืŸ ืžืฉืžืขื•ืชื™ ืืช ื”ืฉื™ืžื•ืฉ ื‘ื”ื.

ืจืืฉื™ืช, ืืชื” ื™ื›ื•ืœ ืœืืคืฉืจ ื”ืชืžืžืฉื•ืช ืจืง ืื ื›ื‘ืจ ื™ืฆืจืช VIEW ืจื’ื™ืœ. ืื—ืจืช, ืชืฆื˜ืจืš ืœื›ืชื•ื‘ ืžื—ื“ืฉ ืืช ื”ื‘ืงืฉื•ืช ื”ื ื•ืชืจื•ืช ื›ื“ื™ ืœื’ืฉืช ืœืชืฆื•ื’ื” ื”ื—ื“ืฉื” ืฉื ื•ืฆืจื” ื›ื“ื™ ืœื”ืฉืชืžืฉ ื‘ื”ืชืžืžืฉื•ืช ื–ื•. ืื• ืœื”ืฉืื™ืจ ื”ื›ืœ ื›ืžื• ืฉื”ื•ื, ืื‘ืœ ื–ื” ื™ื”ื™ื” ืœืคื—ื•ืช ืœื ื™ืขื™ืœ ืื ื™ืฉ ื ืชื•ื ื™ื ืžืกื•ื™ืžื™ื ืฉื›ื‘ืจ ืžื—ื•ืฉื‘ื™ื ืžืจืืฉ, ืื‘ืœ ืฉืื™ืœืชื•ืช ืจื‘ื•ืช ืœื ืชืžื™ื“ ืžืฉืชืžืฉื•ืช ื‘ื”ื, ืืœื ืžื—ืฉื‘ื•ืช ืื•ืชื ืžื—ื“ืฉ.

ืฉื ื™ืช, ื™ืฉ ืœื”ื ืžืกืคืจ ืขืฆื•ื ืฉืœ ื”ื’ื‘ืœื•ืช:

ืื•ืจืงืœ

5.3.8.4 ื”ื’ื‘ืœื•ืช ื›ืœืœื™ื•ืช ืขืœ ืจืขื ื•ืŸ ืžื”ื™ืจ

ื”ืฉืื™ืœืชื” ื”ืžื’ื“ื™ืจื” ืฉืœ ื”ืชืฆื•ื’ื” ื”ืžืžืฉื™ืช ืžื•ื’ื‘ืœืช ื‘ืื•ืคืŸ ื”ื‘ื:

  • ื”ืชืฆื•ื’ื” ื”ืžืชืžืžืฉืช ืื™ื ื” ื™ื›ื•ืœื” ืœื”ื›ื™ืœ ื”ืคื ื™ื•ืช ืœื‘ื™ื˜ื•ื™ื™ื ืฉืื™ื ื ื—ื•ื–ืจื™ื ืขืœ ืขืฆืžื ื›ืžื• SYSDATE ื• ROWNUM.
  • ืืกื•ืจ ืฉื”ืชืฆื•ื’ื” ื”ืžืžื•ืžืฉืช ืชื›ื™ืœ ื”ืคื ื™ื•ืช ืœ RAW or LONG RAW ืกื•ื’ื™ ืžื™ื“ืข.
  • ื–ื” ืœื ื™ื›ื•ืœ ืœื”ื›ื™ืœ ื SELECT ืฉืื™ืœืชืช ืžืฉื ื” ื‘ืจืฉื™ืžื”.
  • ื”ื•ื ืื™ื ื• ื™ื›ื•ืœ ืœื”ื›ื™ืœ ืคื•ื ืงืฆื™ื•ืช ืื ืœื™ื˜ื™ื•ืช (ืœื“ื•ื’ืžื”, RANK) ื‘ืชื•ืš ื” SELECT ืกืขื™ืฃ.
  • ื–ื” ืœื ื™ื›ื•ืœ ืœื”ืชื™ื™ื—ืก ืœื˜ื‘ืœื” ืฉื‘ื” ื XMLIndex ืžื“ื“ ืžื•ื’ื“ืจ.
  • ื–ื” ืœื ื™ื›ื•ืœ ืœื”ื›ื™ืœ ื MODEL ืกืขื™ืฃ.
  • ื–ื” ืœื ื™ื›ื•ืœ ืœื”ื›ื™ืœ ื HAVING ืกืขื™ืฃ ืขื ืฉืื™ืœืชืช ืžืฉื ื”.
  • ื”ื•ื ืœื ื™ื›ื•ืœ ืœื”ื›ื™ืœ ืฉืื™ืœืชื•ืช ืžืงื•ื ื ื•ืช ืฉื™ืฉ ืœื”ืŸ ANY, ALL, ืื• NOT EXISTS.
  • ื–ื” ืœื ื™ื›ื•ืœ ืœื”ื›ื™ืœ ื [START WITH โ€ฆ] CONNECT BY ืกืขื™ืฃ.
  • ื–ื” ืœื ื™ื›ื•ืœ ืœื”ื›ื™ืœ ื˜ื‘ืœืื•ืช ืคื™ืจื•ื˜ ืžืจื•ื‘ื•ืช ื‘ืืชืจื™ื ืฉื•ื ื™ื.
  • ON COMMIT ืœืชืฆื•ื’ื•ืช ืฉื”ืชืžืžืฉื• ืœื ื™ื”ื™ื• ื˜ื‘ืœืื•ืช ืคืจื˜ื™ื ืžืจื•ื—ืงื™ื.
  • ืชืฆื•ื’ื•ืช ืžืฉื•ื‘ืฆื•ืช ื—ื™ื™ื‘ื•ืช ืœื”ื™ื•ืช ืฆื™ืจื•ืฃ ืื• ืžืฆื˜ื‘ืจ.
  • ืชืฆื•ื’ื•ืช ื”ืฆื˜ืจืคื•ืช ืžืžื•ืžืฉื•ืช ื•ืฆืคื™ื•ืช ืžืฆื˜ื‘ืจื•ืช ืฉื”ืชืžืžืฉื• ืขื ื GROUP BY ืœื ื ื™ืชืŸ ืœื‘ื—ื•ืจ ื‘ืกืขื™ืฃ ืžืชื•ืš ื˜ื‘ืœื” ืžืื•ืจื’ื ืช ื‘ืื™ื ื“ืงืก.

5.3.8.5 ื”ื’ื‘ืœื•ืช ืขืœ ืจืขื ื•ืŸ ืžื”ื™ืจ ื‘ืฆืคื™ื•ืช ืฉื”ืชืžืžืฉื• ืขื ื”ืฆื˜ืจืคื•ืช ื‘ืœื‘ื“

ืœื”ื’ื“ืจืช ืฉืื™ืœืชื•ืช ืขื‘ื•ืจ ืชืฆื•ื’ื•ืช ืžื™ืžื•ืฉื•ืช ืขื ืฆื™ืจื•ืฃ ื‘ืœื‘ื“ ื•ืœืœื ืื’ืจื’ื˜ื™ื ื™ืฉ ืืช ื”ื”ื’ื‘ืœื•ืช ื”ื‘ืื•ืช ืขืœ ืจืขื ื•ืŸ ืžื”ื™ืจ:

  • ื›ืœ ื”ื”ื’ื‘ืœื•ืช ืž- ยซื”ื’ื‘ืœื•ืช ื›ืœืœื™ื•ืช ืขืœ ืจืขื ื•ืŸ ืžื”ื™ืจ".
  • ื”ื ืœื ื™ื›ื•ืœื™ื ืœืงื‘ืœ GROUP BY ืกืขื™ืคื™ื ืื• ืื’ืจื’ื˜ื™ื.
  • Rowids ืฉืœ ื›ืœ ื”ืฉื•ืœื—ื ื•ืช ื‘- FROM ื”ืจืฉื™ืžื” ื—ื™ื™ื‘ืช ืœื”ื•ืคื™ืข ื‘- SELECT ืจืฉื™ืžื” ืฉืœ ื”ืฉืื™ืœืชื”.
  • ื™ื•ืžื ื™ ืชืฆื•ื’ื” ืžืžื•ืžืฉื™ื ื—ื™ื™ื‘ื™ื ืœื”ืชืงื™ื™ื ืขื ืฉื•ืจื•ืช ืขื‘ื•ืจ ื›ืœ ื˜ื‘ืœืื•ืช ื”ื‘ืกื™ืก ื‘- FROM ืจืฉื™ืžื” ืฉืœ ื”ืฉืื™ืœืชื”.
  • ืื™ื ืš ื™ื›ื•ืœ ืœื™ืฆื•ืจ ืชืฆื•ื’ื” ืžืžื•ืžืฉืช ื ื™ืชื ืช ืœืจืขื ื•ืŸ ืžื”ื™ืจ ืžืžืกืคืจ ื˜ื‘ืœืื•ืช ืขื ื—ื™ื‘ื•ืจื™ื ืคืฉื•ื˜ื™ื ื”ื›ื•ืœืœื™ื ืขืžื•ื“ืช ืกื•ื’ ืื•ื‘ื™ื™ืงื˜ ื‘- SELECT ื”ืฆื”ืจื”.

ื›ืžื• ื›ืŸ, ืฉื™ื˜ืช ื”ืจืขื ื•ืŸ ืฉืชื‘ื—ืจ ืœื ืชื”ื™ื” ื™ืขื™ืœื” ื‘ืฆื•ืจื” ืžื™ื˜ื‘ื™ืช ืื:

  • ื”ืฉืื™ืœืชื” ื”ืžื’ื“ื™ืจื” ืžืฉืชืžืฉืช ื‘ืฆื™ืจื•ืฃ ื—ื™ืฆื•ื ื™ ืฉืžืชื ื”ื’ ื›ืžื• ืฆื™ืจื•ืฃ ืคื ื™ืžื™. ืื ื”ืฉืื™ืœืชื” ื”ืžื’ื“ื™ืจื” ืžื›ื™ืœื” ืฆื™ืจื•ืฃ ื›ื–ื”, ืฉืงื•ืœ ืœืฉื›ืชื‘ ืืช ื”ืฉืื™ืœืชื” ื”ืžื’ื“ื™ืจื” ื›ืš ืฉืชื›ื™ืœ ืฆื™ืจื•ืฃ ืคื ื™ืžื™.
  • ืืœ ื”ืื ื™ SELECT ืจืฉื™ืžื” ืฉืœ ื”ืชืฆื•ื’ื” ื”ืžืžื•ืžืฉืช ืžื›ื™ืœื” ื‘ื™ื˜ื•ื™ื™ื ืขืœ ืขืžื•ื“ื•ืช ืžืžืกืคืจ ื˜ื‘ืœืื•ืช.

5.3.8.6 ื”ื’ื‘ืœื•ืช ืขืœ ืจืขื ื•ืŸ ืžื”ื™ืจ ืฉืœ ืฆืคื™ื•ืช ืžืžื•ืžืฉื•ืช ืขื ืื’ืจื’ื˜ื™ื

ืœื”ื’ื“ืจืช ืฉืื™ืœืชื•ืช ืขื‘ื•ืจ ืชืฆื•ื’ื•ืช ืžืชืžืžืฉื•ืช ืขื ืฆื‘ื™ืจื•ืช ืื• ืฆื™ืจื•ืฃ ื™ืฉ ืืช ื”ื”ื’ื‘ืœื•ืช ื”ื‘ืื•ืช ืขืœ ืจืขื ื•ืŸ ืžื”ื™ืจ:

ืจืขื ื•ืŸ ืžื”ื™ืจ ื ืชืžืš ื‘ืฉื ื™ื”ื ON COMMIT ื• ON DEMAND ืฆืคื™ื•ืช ืฉื”ืชืžืžืฉื•, ืื•ืœื ื—ืœื•ืช ื”ื”ื’ื‘ืœื•ืช ื”ื‘ืื•ืช:

  • ื›ืœ ื”ื˜ื‘ืœืื•ืช ื‘ืชืฆื•ื’ืช ื”ืชืžืžืฉื•ืช ื—ื™ื™ื‘ื•ืช ืœื›ืœื•ืœ ื™ื•ืžื ื™ ืชืฆื•ื’ื•ืช ืฉื”ืชืžืžืฉื•, ื•ื™ื•ืžื ื™ ื”ืชืฆื•ื’ื•ืช ืฉื”ืชืžืžืฉื• ื—ื™ื™ื‘ื™ื:
    • ื”ื›ื™ืœ ืืช ื›ืœ ื”ืขืžื•ื“ื•ืช ืžื”ื˜ื‘ืœื” ืฉืืœื™ื”ื ืžืชื™ื™ื—ืกื™ื ื‘ืชืฆื•ื’ื” ื”ืžื™ื•ืฉืžืช.
    • ืฆื™ื™ืŸ ืขื ROWID ื• INCLUDING NEW VALUES.
    • ืฆื™ื™ืŸ ืืช SEQUENCE ืกืขื™ืฃ ืื ื”ื˜ื‘ืœื” ืฆืคื•ื™ื” ืœื›ืœื•ืœ ืฉื™ืœื•ื‘ ืฉืœ ื”ื•ืกืคื•ืช/ื˜ืขื™ื ื•ืช ื™ืฉื™ืจื”, ืžื—ื™ืงื•ืช ื•ืขื“ื›ื•ื ื™ื.

  • ืจืง SUM, COUNT, AVG, STDDEV, VARIANCE, MIN ื• MAX ื ืชืžื›ื™ื ืœืจืขื ื•ืŸ ืžื”ื™ืจ.
  • COUNT(*) ื™ืฉ ืœืฆื™ื™ืŸ.
  • ืคื•ื ืงืฆื™ื•ืช ืžืฆื˜ื‘ืจื•ืช ื—ื™ื™ื‘ื•ืช ืœื”ืชืจื—ืฉ ืจืง ื›ื—ืœืง ื”ื—ื™ืฆื•ื ื™ ื‘ื™ื•ืชืจ ืฉืœ ื”ื‘ื™ื˜ื•ื™. ื›ืœื•ืžืจ, ืื’ืจื’ื˜ื™ื ื›ื’ื•ืŸ AVG(AVG(x)) or AVG(x)+ AVG(x) ืœื ืžื•ืจืฉื™ื.
  • ืขื‘ื•ืจ ื›ืœ ืžืฆืจืฃ ื›ื’ื•ืŸ AVG(expr), ื”ืžืงื‘ื™ืœ COUNT(expr) ื—ื™ื™ื‘ ืœื”ื™ื•ืช ื ื•ื›ื—. ืื•ืจืงืœ ืžืžืœื™ืฆื” ืขืœ ื›ืš SUM(expr) ืœื”ื™ื•ืช ืžื•ื’ื“ืจ.
  • If VARIANCE(expr) or STDDEV(expr) ืžืฆื•ื™ืŸ, COUNT(expr) ื• SUM(expr) ื™ืฉ ืœืฆื™ื™ืŸ. ืื•ืจืงืœ ืžืžืœื™ืฆื” ืขืœ ื›ืš SUM(expr *expr) ืœื”ื™ื•ืช ืžื•ื’ื“ืจ.
  • ืืœ ื”ืื ื™ SELECT ื”ืขืžื•ื“ื” ื‘ืฉืื™ืœืชื” ื”ืžื’ื“ื™ืจื” ืื™ื ื” ื™ื›ื•ืœื” ืœื”ื™ื•ืช ื‘ื™ื˜ื•ื™ ืžื•ืจื›ื‘ ืขื ืขืžื•ื“ื•ืช ืžื˜ื‘ืœืื•ืช ื‘ืกื™ืก ืžืจื•ื‘ื•ืช. ื“ืจืš ืืคืฉืจื™ืช ืœืขืงื™ืคืช ื”ื‘ืขื™ื” ื”ื™ื ืœื”ืฉืชืžืฉ ื‘ืชืฆื•ื’ื” ืžืžื•ืžืฉืช ืžืงื•ื ื ืช.
  • ืืœ ื”ืื ื™ SELECT ื”ืจืฉื™ืžื” ื—ื™ื™ื‘ืช ืœื”ื›ื™ืœ ื”ื›ืœ GROUP BY ืขืžื•ื“ื•ืช.
  • ื”ืชืฆื•ื’ื” ื”ืžืชืžืžืฉืช ืื™ื ื” ืžื‘ื•ืกืกืช ืขืœ ื˜ื‘ืœื” ืžืจื•ื—ืงืช ืื—ืช ืื• ื™ื•ืชืจ.
  • ืื ืืชื” ืžืฉืชืžืฉ ื‘- CHAR ืกื•ื’ ื”ื ืชื•ื ื™ื ื‘ืขืžื•ื“ื•ืช ื”ืกื™ื ื•ืŸ ืฉืœ ื™ื•ืžืŸ ืชืฆื•ื’ื” ืžืžื•ืžืฉืช, ืขืจื›ื•ืช ื”ืชื•ื•ื™ื ืฉืœ ื”ืืชืจ ื”ืจืืฉื™ ื•ื”ืชืฆื•ื’ื” ื”ืžืžืžืฉืช ื—ื™ื™ื‘ื•ืช ืœื”ื™ื•ืช ื–ื”ื•ืช.
  • ืื ื”ืชืฆื•ื’ื” ืฉื”ืชืžืžืฉื” ื›ื•ืœืœืช ืื—ืช ืžื”ืืคืฉืจื•ื™ื•ืช ื”ื‘ืื•ืช, ืจืขื ื•ืŸ ืžื”ื™ืจ ื ืชืžืš ืจืง ื‘ืชื•ืกืคื•ืช DML ืงื•ื ื‘ื ืฆื™ื•ื ืœื™ื•ืช ื•ื‘ื˜ืขื™ื ื•ืช ื™ืฉื™ืจื”.
    • ืฆืคื™ื•ืช ืžืžื•ืžืฉื•ืช ืขื MIN or MAX ืื’ืจื’ื˜ื™ื
    • ื”ืฉืงืคื•ืช ืžืžื•ืžืฉื•ืช ืืฉืจ ื™ืฉ SUM(expr) ืื‘ืœ ืœื COUNT(expr)
    • ื”ืฉืงืคื•ืช ืžืžื•ืžืฉื•ืช ื‘ืœื™ COUNT(*)

    ื”ืฉืงืคื” ืžืชืžืžืฉืช ื›ื–ื• ื ืงืจืืช ืจืื™ื™ื” ืžืชืžืžืฉืช ื‘ืœื‘ื“.

  • ื ื•ืฃ ื”ืชืžืžืฉ ืขื MAX or MIN ื ื™ืชืŸ ืœืจืขื ืŸ ื‘ืžื”ื™ืจื•ืช ืœืื—ืจ ืžื—ื™ืงื” ืื• ื”ืฆื”ืจื•ืช DML ืžืขื•ืจื‘ื•ืช ืื ืื™ืŸ ืœื• ื WHERE ืกืขื™ืฃ.
    ืœืจืขื ื•ืŸ ื”ืžื”ื™ืจ ื”ืžืงืกื™ืžืœื™/ื“ืงื” ืœืื—ืจ ืžื—ื™ืงื” ืื• DML ืžืขื•ืจื‘ ืื™ืŸ ืื•ืชื” ื”ืชื ื”ื’ื•ืช ื›ืžื• ื‘ืžืงืจื” ืฉืœ ื”ื•ืกืคื” ื‘ืœื‘ื“. ื–ื” ืžื•ื—ืง ื•ืžื—ืฉื‘ ืžื—ื“ืฉ ืืช ืขืจื›ื™ ื”ืžืงืกื™ืžื•ื/ื“ืงื” ืขื‘ื•ืจ ื”ืงื‘ื•ืฆื•ืช ื”ืžื•ืฉืคืขื•ืช. ืืชื” ืฆืจื™ืš ืœื”ื™ื•ืช ืžื•ื“ืข ืœื”ืฉืคืขืช ื”ื‘ื™ืฆื•ืขื™ื ืฉืœื•.
  • ืชืฆื•ื’ื•ืช ืžืžื•ืžืฉื•ืช ืขื ืชืฆื•ื’ื•ืช ืื• ืฉืื™ืœืชื•ืช ืžืฉื ื” ื‘- FROM ื ื™ืชืŸ ืœืจืขื ืŸ ื‘ืžื”ื™ืจื•ืช ืืช ื”ืกืขื™ืฃ ื‘ืชื ืื™ ืฉื ื™ืชืŸ ืœืžื–ื’ ืœื—ืœื•ื˜ื™ืŸ ืืช ื”ืชืฆื•ื’ื•ืช. ืœืžื™ื“ืข ืขืœ ืื™ืœื• ืชืฆื•ื’ื•ืช ื™ืชืžื–ื’ื•, ืจืื” Oracle Database SQL Reference Language.
  • ืื ืื™ืŸ ืฆื™ืจื•ืฃ ื—ื™ืฆื•ื ื™, ื™ื™ืชื›ืŸ ืฉื™ืฉ ืœืš ื‘ื—ื™ืจื•ืช ืฉืจื™ืจื•ืชื™ื•ืช ื•ื”ืฆื˜ืจืคื•ืช ื‘- WHERE ืกืขื™ืฃ.
  • ืชืฆื•ื’ื•ืช ืžืฆื˜ื‘ืจื•ืช ืžืชืžืžืฉื•ืช ืขื ื—ื™ื‘ื•ืจื™ื ื—ื™ืฆื•ื ื™ื™ื ื ื™ืชื ื•ืช ืœืจืขื ื•ืŸ ืžื”ื™ืจ ืœืื—ืจ DML ืงื•ื ื‘ื ืฆื™ื•ื ืœื™ ื•ืขื•ืžืกื™ื ื™ืฉื™ืจื™ื, ื‘ืชื ืื™ ืฉืจืง ื”ื˜ื‘ืœื” ื”ื—ื™ืฆื•ื ื™ืช ืฉื•ื ืชื”. ื›ืžื• ื›ืŸ, ืื™ืœื•ืฆื™ื ื™ื™ื—ื•ื“ื™ื™ื ื—ื™ื™ื‘ื™ื ืœื”ืชืงื™ื™ื ื‘ืขืžื•ื“ื•ืช ื”ื—ื™ื‘ื•ืจ ืฉืœ ื˜ื‘ืœืช ื”ื—ื™ื‘ื•ืจ ื”ืคื ื™ืžื™ืช. ืื ื™ืฉ ื—ื™ื‘ื•ืจื™ื ื—ื™ืฆื•ื ื™ื™ื, ื›ืœ ื”ื—ื™ื‘ื•ืจื™ื ื—ื™ื™ื‘ื™ื ืœื”ื™ื•ืช ืžื—ื•ื‘ืจื™ื ืขืœ ื™ื“ื™ ANDื•ื—ื™ื™ื‘ื™ื ืœื”ืฉืชืžืฉ ื‘ืฉื•ื•ื™ื•ืŸ (=) ืžืคืขื™ืœ.
  • ืœืฆืคื™ื•ืช ืฉื”ืชืžืžืฉื• ืขื CUBE, ROLLUP, ืงื‘ื•ืฆื•ืช ืงื™ื‘ื•ืฅ ืื• ืฉืจืฉื•ืจ ืฉืœื”ืŸ, ื—ืœื•ืช ื”ื”ื’ื‘ืœื•ืช ื”ื‘ืื•ืช:
    • ืืœ ื”ืื ื™ SELECT ืจืฉื™ืžื” ืฆืจื™ื›ื” ืœื”ื›ื™ืœ ืžื‘ื—ื™ืŸ ืงื™ื‘ื•ืฅ ืฉื™ื›ื•ืœ ืœื”ื™ื•ืช ื GROUPING_ID ืœืชืคืงื“ ืขืœ ื›ื•ืœื 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 ืกื˜ ืžืคืขื™ืœ ืœืชืžื•ืš ืืช REFRESH FAST ืืคืฉืจื•ืช ืื ืžืชืงื™ื™ืžื™ื ื”ืชื ืื™ื ื”ื‘ืื™ื:

  • ื”ืฉืื™ืœืชื” ื”ืžื’ื“ื™ืจื” ื—ื™ื™ื‘ืช ืœื›ืœื•ืœ ืืช UNION ALL ืžืคืขื™ืœ ื‘ืจืžื” ื”ืขืœื™ื•ื ื”.

    ืืœ ื”ืื ื™ UNION ALL ืœื ื ื™ืชืŸ ืœื”ื˜ืžื™ืข ืื•ืคืจื˜ื•ืจ ื‘ืชื•ืš ืฉืื™ืœืชืช ืžืฉื ื”, ืœืžืขื˜ ื—ืจื™ื’ ืื—ื“: ื” UNION ALL ื™ื›ื•ืœ ืœื”ื™ื•ืช ื‘ืฉืื™ืœืชืช ืžืฉื ื” ื‘- FROM ืกืขื™ืฃ ื‘ืชื ืื™ ืฉื”ืฉืื™ืœืชื” ื”ืžื’ื“ื™ืจื” ื”ื™ื ื‘ืฆื•ืจื” SELECT * FROM (ื”ืฆื’ ืื• ืฉืื™ืœืชืช ืžืฉื ื” ืขื UNION ALL) ื›ืžื• ื‘ื“ื•ื’ืžื” ื”ื‘ืื”:

    CREATE VIEW view_with_unionall AS (SELECT c.rowid crid, c.cust_id, 2 umarker FROM customers c WHERE c.cust_last_name = 'Smith' UNION ALL SELECT c.rowid crid, c.cust_id, 3 umarker FROM customers c WHERE c.cust_last_name = 'ื’'ื•ื ืก'); ืฆื•ืจ ืชืฆื•ื’ื” ื—ื•ืžืจื™ืช unionall_inside_view_mv ืจืขื ื•ืŸ ืžื”ื™ืจ ืœืคื™ ื“ืจื™ืฉื” ืœืคื™ ื‘ื—ื™ืจื” * FROM view_with_unionall;
    

    ืฉื™ืžื• ืœื‘ ืฉื”ื ื•ืฃ view_with_unionall ืขื•ื ื” ืขืœ ื”ื“ืจื™ืฉื•ืช ืœืจืขื ื•ืŸ ืžื”ื™ืจ.

  • ื›ืœ ื‘ืœื•ืง ืฉืื™ืœืชื” ื‘- UNION ALL ื”ืฉืื™ืœืชื” ื—ื™ื™ื‘ืช ืœืขืžื•ื“ ื‘ื“ืจื™ืฉื•ืช ืฉืœ ืชืฆื•ื’ื” ืžืชืžืžืฉืช ื ื™ืชื ืช ืœืจืขื ื•ืŸ ืžื”ื™ืจื” ืขื ืื’ืจื’ื˜ื™ื ืื• ืชืฆื•ื’ื” ืžืžื•ืžืฉืช ื ื™ืชื ืช ืœืจืขื ื•ืŸ ืžื”ื™ืจื” ืขื ื—ื™ื‘ื•ืจื™ื.

    ื™ืฉ ืœื™ืฆื•ืจ ืขืœ ื”ื˜ื‘ืœืื•ืช ืืช ื™ื•ืžื ื™ ื”ืชืฆื•ื’ื” ื”ืžืžื•ืžืฉื™ื ื”ืžืชืื™ืžื™ื ื›ื ื“ืจืฉ ืขื‘ื•ืจ ื”ืกื•ื’ ื”ืžืชืื™ื ืฉืœ ืชืฆื•ื’ื” ืžืชืžืžืฉืช ื ื™ืชื ืช ืœืจืขื ื•ืŸ ืžื”ื™ืจ.
    ืฉื™ื ืœื‘ ืฉืžืกื“ ื”ื ืชื•ื ื™ื ืฉืœ Oracle ืžืืคืฉืจ ื’ื ืืช ื”ืžืงืจื” ื”ืžื™ื•ื—ื“ ืฉืœ ืชืฆื•ื’ืช ื˜ื‘ืœื” ืื—ืช ืฉื”ืชืžืžืฉื” ืขื ื—ื™ื‘ื•ืจื™ื ืจืง ื‘ืชื ืื™ ROWID ื”ืขืžื•ื“ื” ื ื›ืœืœื” ื‘- SELECT ืจืฉื™ืžื” ื•ื‘ื™ื•ืžืŸ ื”ืชืฆื•ื’ื” ื”ืžืžื•ืžืฉ. ื–ื” ืžื•ืฆื’ ื‘ืฉืื™ืœืชื” ื”ืžื’ื“ื™ืจื” ืฉืœ ื”ืชืฆื•ื’ื” view_with_unionall.

  • ืืœ ื”ืื ื™ SELECT ืจืฉื™ืžื” ืฉืœ ื›ืœ ืฉืื™ืœืชื” ื—ื™ื™ื‘ืช ืœื›ืœื•ืœ ื UNION ALL ืกืžืŸ, ื•ืืช UNION ALL ืขืžื•ื“ื” ื—ื™ื™ื‘ืช ืœื”ื™ื•ืช ื‘ืขืœืช ืขืจืš ืžืกืคืจื™ ืงื‘ื•ืข ืื• ืžื—ืจื•ื–ืช ืงื‘ื•ืขื” ื‘ื›ืœ ืื—ืช ืžื”ืŸ UNION ALL ืขื ืฃ. ื™ืชืจื” ืžื›ืš, ืขืžื•ื“ืช ื”ืกืžืŸ ื—ื™ื™ื‘ืช ืœื”ื•ืคื™ืข ื‘ืื•ืชื• ืžื™ืงื•ื ืกื™ื“ื•ืจื™ ื‘- SELECT ืจืฉื™ืžื” ืฉืœ ื›ืœ ื‘ืœื•ืง ืฉืื™ืœืชื”. ืจืื”"UNION ALL ืžืจืงืจ ื•ืฉื›ืชื•ื‘ ืฉืื™ืœืชื”ยป ืœืžื™ื“ืข ื ื•ืกืฃ ื‘ื ื•ืฉื UNION ALL ืกืžื ื™ื.
  • ืชื›ื•ื ื•ืช ืžืกื•ื™ืžื•ืช, ื›ื’ื•ืŸ ื—ื™ื‘ื•ืจื™ื ื—ื™ืฆื•ื ื™ื™ื, ืฉืื™ืœืชื•ืช ืชืฆื•ื’ื” ืžืฆื˜ื‘ืจืช ืžืฆื˜ื‘ืจืช ืœื”ื•ืกืคื” ื‘ืœื‘ื“ ื•ื˜ื‘ืœืื•ืช ืžืจื•ื—ืงื•ืช ืื™ื ืŸ ื ืชืžื›ื•ืช ืขื‘ื•ืจ ืชืฆื•ื’ื•ืช ืฉื”ืชืžืžืฉื• ืขื UNION ALL. ืขื ื–ืืช, ืฉื™ืžื• ืœื‘ ืฉื ื™ืชืŸ ืœืจืขื ืŸ ื‘ืžื”ื™ืจื•ืช ืชืฆื•ื’ื•ืช ืฉื”ืชืžืžืฉื• ื‘ืฉื™ืžื•ืฉ ื‘ืฉื›ืคื•ืœ, ืฉืื™ื ืŸ ืžื›ื™ืœื•ืช ืฆื™ืจื•ืฃ ืื• ืื’ืจื’ื˜ื™ื, ื›ืืฉืจ UNION ALL ืื• ืžืฉืชืžืฉื™ื ื‘ื˜ื‘ืœืื•ืช ืžืจื•ื—ืงื•ืช.
  • ื™ืฉ ืœื”ื’ื“ื™ืจ ืืช ืคืจืžื˜ืจ ืืชื—ื•ืœ ื”ืชืื™ืžื•ืช ืœ-9.2.0 ืื• ื’ื‘ื•ื” ื™ื•ืชืจ ื›ื“ื™ ืœื™ืฆื•ืจ ืชืฆื•ื’ื” ืžืชืžืžืฉืช ื”ื ื™ืชื ืช ืœืจืขื ื•ืŸ ืžื”ื™ืจ ืขื UNION ALL.

ืื ื™ ืœื ืจื•ืฆื” ืœื”ืขืœื™ื‘ ืืช ืžืขืจื™ืฆื™ ืื•ืจืงืœ, ืื‘ืœ ืื ืœืฉืคื•ื˜ ืœืคื™ ืจืฉื™ืžืช ื”ื”ื’ื‘ืœื•ืช ืฉืœื”ื, ื ืจืื” ืฉื”ืžื ื’ื ื•ืŸ ื”ื–ื” ื ื›ืชื‘ ืœื ื‘ืžืงืจื” ื”ื›ืœืœื™, ืชื•ืš ืฉื™ืžื•ืฉ ื‘ืžื•ื“ืœ ื›ืœืฉื”ื•, โ€‹โ€‹ืืœื ืขืœ ื™ื“ื™ ืืœืคื™ ื”ื•ื“ื™ื, ืฉื‘ื• ื ื™ืชื ื” ืœื›ื•ืœื ื”ื”ื–ื“ืžื ื•ืช ื›ืชื‘ื• ืืช ื”ืกื ื™ืฃ ืฉืœื•, ื•ื›ืœ ืื—ื“ ืžื”ื ืขืฉื” ืžื” ืฉื”ื•ื ื™ื›ื•ืœ ื•ืขืฉื”. ืฉื™ืžื•ืฉ ื‘ืžื ื’ื ื•ืŸ ื–ื” ืœื”ื™ื’ื™ื•ืŸ ืืžื™ืชื™ ื”ื•ื ื›ืžื• ื”ืœื™ื›ื” ื‘ืฉื“ื” ืžื•ืงืฉื™ื. ืืชื” ื™ื›ื•ืœ ืœื”ืฉื™ื’ ืžื•ืงืฉ ื‘ื›ืœ ืขืช ืขืœ ื™ื“ื™ ืคื’ื™ืขื” ื‘ืื—ืช ื”ื”ื’ื‘ืœื•ืช ื”ืœื ื‘ืจื•ืจื•ืช. ืื™ืš ื–ื” ืขื•ื‘ื“ ื–ื• ื’ื ืฉืืœื” ื ืคืจื“ืช, ืื‘ืœ ื–ื” ืžืขื‘ืจ ืœืชื—ื•ื ื”ืžืืžืจ ื”ื–ื”.

Microsoft SQL Server

ื“ืจื™ืฉื•ืช ื ื•ืกืคื•ืช

ื‘ื ื•ืกืฃ ืœืืคืฉืจื•ื™ื•ืช ื”-SET ื•ื“ืจื™ืฉื•ืช ื”ืคื•ื ืงืฆื™ื” ื”ื“ื˜ืจืžื™ื ื™ืกื˜ื™ืช, ื™ืฉ ืœืขืžื•ื“ ื‘ื“ืจื™ืฉื•ืช ื”ื‘ืื•ืช:

  • ื”ืžืฉืชืžืฉ ืฉืžื‘ืฆืข CREATE INDEX ื—ื™ื™ื‘ ืœื”ื™ื•ืช ื”ื‘ืขืœื™ื ืฉืœ ื”ืชืฆื•ื’ื”.
  • ื›ืืฉืจ ืืชื” ื™ื•ืฆืจ ืืช ื”ืื™ื ื“ืงืก, ื” IGNORE_DUP_KEY ื™ืฉ ืœื”ื’ื“ื™ืจ ืืช ื”ืืคืฉืจื•ืช ืœ-OFF (ื”ื’ื“ืจืช ื‘ืจื™ืจืช ื”ืžื—ื“ืœ).
  • ื™ืฉ ืœื”ืชื™ื™ื—ืก ืœื˜ื‘ืœืื•ืช ื‘ืฉืžื•ืช ืฉืœ ืฉื ื™ ื—ืœืงื™ื, ืกื›ื™ืžื”.ืฉื ืœื•ื— ื‘ื”ื’ื“ืจืช ื”ืชืฆื•ื’ื”.
  • ื™ืฉ ืœื™ืฆื•ืจ ืคื•ื ืงืฆื™ื•ืช ื”ืžื•ื’ื“ืจื•ืช ืขืœ ื™ื“ื™ ื”ืžืฉืชืžืฉ ืฉื”ืคื ื•ืชื ืืœื™ื”ื ื‘ืชืฆื•ื’ื” ื‘ืืžืฆืขื•ืช ื”- WITH SCHEMABINDING ืื•ึนืคึผึฐืฆึดื™ึธื”.
  • ื™ืฉ ืœื”ืคื ื•ืช ืœื›ืœ ืคื•ื ืงืฆื™ื” ื”ืžื•ื’ื“ืจืช ืขืœ ื™ื“ื™ ืžืฉืชืžืฉ ื‘ืชืฆื•ื’ื” ื‘ืืžืฆืขื•ืช ืฉืžื•ืช ืฉื ื™ ื—ืœืงื™ื, ..
  • ืžืืคื™ื™ืŸ ื”ื’ื™ืฉื” ืœื ืชื•ื ื™ื ืฉืœ ืคื•ื ืงืฆื™ื” ืžื•ื’ื“ืจืช ืขืœ ื™ื“ื™ ืžืฉืชืžืฉ ื—ื™ื™ื‘ ืœื”ื™ื•ืช NO SQL, ื•ืžืืคื™ื™ืŸ ื’ื™ืฉื” ื—ื™ืฆื•ื ื™ ื—ื™ื™ื‘ ืœื”ื™ื•ืช NO.
  • ืคื•ื ืงืฆื™ื•ืช ื–ืžืŸ ืจื™ืฆื” ืžืฉื•ืชืคื•ืช (CLR) ื™ื›ื•ืœื•ืช ืœื”ื•ืคื™ืข ื‘ืจืฉื™ืžืช ื”ื‘ื—ื™ืจื” ืฉืœ ื”ืชืฆื•ื’ื”, ืืš ืื™ื ืŸ ื™ื›ื•ืœื•ืช ืœื”ื™ื•ืช ื—ืœืง ืžื”ื”ื’ื“ืจื” ืฉืœ ืžืคืชื— ื”ืื™ื ื“ืงืก ื”ืžืงื•ื‘ืฅ. ืคื•ื ืงืฆื™ื•ืช CLR ืื™ื ืŸ ื™ื›ื•ืœื•ืช ืœื”ื•ืคื™ืข ื‘ืกืขื™ืฃ WHERE ืฉืœ ื”ืชืฆื•ื’ื” ืื• ื‘ืกืขื™ืฃ ON ืฉืœ ืคืขื•ืœืช JOIN ื‘ืชืฆื•ื’ื”.
  • ืคื•ื ืงืฆื™ื•ืช ื•ืฉื™ื˜ื•ืช CLR ืฉืœ ืกื•ื’ื™ื ืžื•ื’ื“ืจื™ื ืขืœ ื™ื“ื™ CLR ื”ืžืฉืžืฉื™ื ื‘ื”ื’ื“ืจืช ื”ืชืฆื•ื’ื” ื—ื™ื™ื‘ื™ื ืœื”ื™ื•ืช ื‘ืขืœื™ ื”ืžืืคื™ื™ื ื™ื ืžื•ื’ื“ืจื™ื ื›ืคื™ ืฉืžื•ืฆื’ ื‘ื˜ื‘ืœื” ื”ื‘ืื”.

    ื ื›ืก
    ื”ืขืจื•ืช

    ื“ื˜ืจืžื™ื ื™ืกื˜ื™ืช = ืืžืช
    ื™ืฉ ืœื”ืฆื”ื™ืจ ื‘ืžืคื•ืจืฉ ื›ืชื›ื•ื ื” ืฉืœ ืฉื™ื˜ืช Microsoft .NET Framework.

    ืžื“ื•ื™ืง = ื ื›ื•ืŸ
    ื™ืฉ ืœื”ืฆื”ื™ืจ ื‘ืžืคื•ืจืฉ ื›ืชื›ื•ื ื” ืฉืœ ืฉื™ื˜ืช .NET Framework.

    ื’ื™ืฉื” ืœื ืชื•ื ื™ื = ืœืœื SQL
    ื ืงื‘ืข ืขืœ ื™ื“ื™ ื”ื’ื“ืจืช ืชื›ื•ื ืช DataAccess ืœ-DataAccessKind.None ื•ืชื›ื•ื ืช SystemDataAccess ืœ-SystemDataAccessKind.None.

    ื’ื™ืฉื” ื—ื™ืฆื•ื ื™ืช = ืœื
    ื‘ืจื™ืจืช ื”ืžื—ื“ืœ ืฉืœ ืžืืคื™ื™ืŸ ื–ื” ื”ื•ื NO ืขื‘ื•ืจ ืฉื’ืจื•ืช CLR.

  • ื™ืฉ ืœื™ืฆื•ืจ ืืช ื”ืชืฆื•ื’ื” ื‘ืืžืฆืขื•ืช ื”- WITH SCHEMABINDING ืื•ึนืคึผึฐืฆึดื™ึธื”.
  • ื”ืชืฆื•ื’ื” ื—ื™ื™ื‘ืช ืœื”ืชื™ื™ื—ืก ืจืง ืœื˜ื‘ืœืื•ืช ื‘ืกื™ืก ืฉื ืžืฆืื•ืช ื‘ืื•ืชื• ืžืกื“ ื ืชื•ื ื™ื ื›ืžื• ื”ืชืฆื•ื’ื”. ื”ืชืฆื•ื’ื” ืื™ื ื” ื™ื›ื•ืœื” ืœื”ืชื™ื™ื—ืก ืœืชืฆื•ื’ื•ืช ืื—ืจื•ืช.
  • ื”ืฆื”ืจืช SELECT ื‘ื”ื’ื“ืจืช ื”ืชืฆื•ื’ื” ืื™ื ื” ื™ื›ื•ืœื” ืœื”ื›ื™ืœ ืืช ืจื›ื™ื‘ื™ Transact-SQL ื”ื‘ืื™ื:

    COUNT
    ืคื•ื ืงืฆื™ื•ืช ROWSET (OPENDATASOURCE, OPENQUERY, OPENROWSET, ื•- OPENXML)
    OUTER ืžืฆื˜ืจืฃ (LEFT, RIGHT, ืื• FULL)

    ื˜ื‘ืœื” ื ื’ื–ืจืช (ืžื•ื’ื“ืจืช ืขืœ ื™ื“ื™ ืฆื™ื•ืŸ ื SELECT ื”ืฆื”ืจื” ื‘ FROM ืกึธืขึดื™ืฃ)
    ืžืฆื˜ืจืคืช ืขืฆืžื™ืช
    ืฆื™ื•ืŸ ืขืžื•ื“ื•ืช ื‘ืืžืฆืขื•ืช SELECT * or SELECT <table_name>.*

    DISTINCT
    STDEV, STDEVP, VAR, VARP, ืื• AVG
    ื‘ื™ื˜ื•ื™ ื˜ื‘ืœื” ื ืคื•ืฅ (CTE)

    ืœืฆื•ืฃ1, ื˜ึถืงืกื˜, ntext, ืชืžื•ื ื”, XML, ืื• ืคื™ืœื ืกื˜ืจื™ื ืขืžื•ื“ื•ืช
    ืฉืื™ืœืชื ืžืฉื ื”
    OVER ืกืขื™ืฃ, ื”ื›ื•ืœืœ ื“ื™ืจื•ื’ ืื• ืคื•ื ืงืฆื™ื•ืช ื—ืœื•ืŸ ืžืฆื˜ื‘ืจ

    ืคืจื“ื™ืงื˜ื™ื ืฉืœ ื˜ืงืกื˜ ืžืœื (CONTAINS, FREETEXT)
    SUM ืคื•ื ืงืฆื™ื” ื”ืžืชื™ื™ื—ืกืช ืœื‘ื™ื˜ื•ื™ nullable
    ORDER BY

    ืคื•ื ืงืฆื™ื™ืช ืฆื‘ื™ืจื” ืžื•ื’ื“ืจืช ืขืœ ื™ื“ื™ CLR
    TOP
    CUBE, ROLLUP, ืื• GROUPING SETS ืžืคืขื™ืœื™

    MIN, MAX
    UNION, EXCEPT, ืื• INTERSECT ืžืคืขื™ืœื™
    TABLESAMPLE

    ืžืฉืชื ื™ ื˜ื‘ืœื”
    OUTER APPLY or CROSS APPLY
    PIVOT, UNPIVOT

    ืงื‘ื•ืฆื•ืช ืขืžื•ื“ื•ืช ื“ืœื™ืœื•ืช
    ืคื•ื ืงืฆื™ื•ืช ืžื•ื˜ื‘ืขื•ืช (TVF) ืื• ืจื‘-ื”ืฆื”ืจื•ืช ื‘ืขืœื•ืช ืขืจื›ื™ ื˜ื‘ืœื” (MSTVF)
    OFFSET

    CHECKSUM_AGG

    1 ื”ืชืฆื•ื’ื” ื”ืื™ื ื“ืงืกื™ืช ื™ื›ื•ืœื” ืœื”ื›ื™ืœ ืœืฆื•ืฃ ืขืžื•ื“ื™ื; ืขื ื–ืืช, ืœื ื ื™ืชืŸ ืœื›ืœื•ืœ ืขืžื•ื“ื•ืช ื›ืืœื” ื‘ืžืคืชื— ื”ืื™ื ื“ืงืก ื”ืžืงื•ื‘ืฅ.

  • If GROUP BY ืงื™ื™ื, ื”ื”ื’ื“ืจื” VIEW ื—ื™ื™ื‘ืช ืœื”ื›ื™ืœ COUNT_BIG(*) ื•ืืกื•ืจ ืœื”ื›ื™ืœ HAVING. ืืœื” GROUP BY ื”ื”ื’ื‘ืœื•ืช ื—ืœื•ืช ืจืง ืขืœ ื”ื’ื“ืจืช ื”ืชืฆื•ื’ื” ื”ืื™ื ื“ืงืกื™ืช. ืฉืื™ืœืชื” ื™ื›ื•ืœื” ืœื”ืฉืชืžืฉ ื‘ืชืฆื•ื’ืช ืื™ื ื“ืงืก ื‘ืชื•ื›ื ื™ืช ื”ื‘ื™ืฆื•ืข ืฉืœื” ื’ื ืื ื”ื™ื ืœื ืขื•ืžื“ืช ื‘ืืœื” GROUP BY ื”ื’ื‘ืœื•ืช.
  • ืื ื”ื’ื“ืจืช ื”ืชืฆื•ื’ื” ืžื›ื™ืœื” ื GROUP BY ืกืขื™ืฃ, ื”ืžืคืชื— ืฉืœ ื”ืื™ื ื“ืงืก ื”ืžืงื•ื‘ืฅ ื”ื™ื™ื—ื•ื“ื™ ื™ื›ื•ืœ ืœื”ืชื™ื™ื—ืก ืจืง ืœืขืžื•ื“ื•ืช ื”ืžืฆื•ื™ื ื•ืช ื‘- GROUP BY ืกืขื™ืฃ.

ื‘ืจื•ืจ ื›ืืŸ ืฉื”ืื™ื ื“ื™ืื ื™ื ืœื ื”ื™ื• ืžืขื•ืจื‘ื™ื, ืžื›ื™ื•ื•ืŸ ืฉื”ื ื”ื—ืœื™ื˜ื• ืœืขืฉื•ืช ื–ืืช ืขืœ ืคื™ ื”ืชื•ื›ื ื™ืช "ืื ื—ื ื• ื ืขืฉื” ืžืขื˜, ืื‘ืœ ื˜ื•ื‘". ื›ืœื•ืžืจ, ื™ืฉ ืœื”ื ื™ื•ืชืจ ืžื•ืงืฉื™ื ื‘ืฉื˜ื—, ืื‘ืœ ื”ืžื™ืงื•ื ืฉืœื”ื ืฉืงื•ืฃ ื™ื•ืชืจ. ื”ื“ื‘ืจ ื”ืžืื›ื–ื‘ ื‘ื™ื•ืชืจ ื”ื•ื ื”ืžื’ื‘ืœื” ื”ื–ื•:

ื”ืชืฆื•ื’ื” ื—ื™ื™ื‘ืช ืœื”ืชื™ื™ื—ืก ืจืง ืœื˜ื‘ืœืื•ืช ื‘ืกื™ืก ืฉื ืžืฆืื•ืช ื‘ืื•ืชื• ืžืกื“ ื ืชื•ื ื™ื ื›ืžื• ื”ืชืฆื•ื’ื”. ื”ืชืฆื•ื’ื” ืื™ื ื” ื™ื›ื•ืœื” ืœื”ืชื™ื™ื—ืก ืœืชืฆื•ื’ื•ืช ืื—ืจื•ืช.

ื‘ื˜ืจืžื™ื ื•ืœื•ื’ื™ื” ืฉืœื ื•, ื–ื” ืื•ืžืจ ืฉืคื•ื ืงืฆื™ื” ืœื ื™ื›ื•ืœื” ืœื’ืฉืช ืœืคื•ื ืงืฆื™ื” ืฉื”ืชืžืžืฉื” ืื—ืจืช. ื–ื” ืžืงืฆืฅ ืืช ื›ืœ ื”ืื™ื“ื™ืื•ืœื•ื’ื™ื” ืฉื‘ื ื™ืฆืŸ.
ื›ืžื• ื›ืŸ, ืžื’ื‘ืœื” ื–ื• (ื•ืขื•ื“ ื‘ื˜ืงืกื˜) ืžืคื—ื™ืชื” ืžืื•ื“ ืืช ืžืงืจื™ ื”ืฉื™ืžื•ืฉ:

ื”ืฆื”ืจืช SELECT ื‘ื”ื’ื“ืจืช ื”ืชืฆื•ื’ื” ืื™ื ื” ื™ื›ื•ืœื” ืœื”ื›ื™ืœ ืืช ืจื›ื™ื‘ื™ Transact-SQL ื”ื‘ืื™ื:

COUNT
ืคื•ื ืงืฆื™ื•ืช ROWSET (OPENDATASOURCE, OPENQUERY, OPENROWSET, ื•- OPENXML)
OUTER ืžืฆื˜ืจืฃ (LEFT, RIGHT, ืื• FULL)

ื˜ื‘ืœื” ื ื’ื–ืจืช (ืžื•ื’ื“ืจืช ืขืœ ื™ื“ื™ ืฆื™ื•ืŸ ื SELECT ื”ืฆื”ืจื” ื‘ FROM ืกึธืขึดื™ืฃ)
ืžืฆื˜ืจืคืช ืขืฆืžื™ืช
ืฆื™ื•ืŸ ืขืžื•ื“ื•ืช ื‘ืืžืฆืขื•ืช SELECT * or SELECT <table_name>.*

DISTINCT
STDEV, STDEVP, VAR, VARP, ืื• AVG
ื‘ื™ื˜ื•ื™ ื˜ื‘ืœื” ื ืคื•ืฅ (CTE)

ืœืฆื•ืฃ1, ื˜ึถืงืกื˜, ntext, ืชืžื•ื ื”, XML, ืื• ืคื™ืœื ืกื˜ืจื™ื ืขืžื•ื“ื•ืช
ืฉืื™ืœืชื ืžืฉื ื”
OVER ืกืขื™ืฃ, ื”ื›ื•ืœืœ ื“ื™ืจื•ื’ ืื• ืคื•ื ืงืฆื™ื•ืช ื—ืœื•ืŸ ืžืฆื˜ื‘ืจ

ืคืจื“ื™ืงื˜ื™ื ืฉืœ ื˜ืงืกื˜ ืžืœื (CONTAINS, FREETEXT)
SUM ืคื•ื ืงืฆื™ื” ื”ืžืชื™ื™ื—ืกืช ืœื‘ื™ื˜ื•ื™ nullable
ORDER BY

ืคื•ื ืงืฆื™ื™ืช ืฆื‘ื™ืจื” ืžื•ื’ื“ืจืช ืขืœ ื™ื“ื™ CLR
TOP
CUBE, ROLLUP, ืื• GROUPING SETS ืžืคืขื™ืœื™

MIN, MAX
UNION, EXCEPT, ืื• INTERSECT ืžืคืขื™ืœื™
TABLESAMPLE

ืžืฉืชื ื™ ื˜ื‘ืœื”
OUTER APPLY or CROSS APPLY
PIVOT, UNPIVOT

ืงื‘ื•ืฆื•ืช ืขืžื•ื“ื•ืช ื“ืœื™ืœื•ืช
ืคื•ื ืงืฆื™ื•ืช ืžื•ื˜ื‘ืขื•ืช (TVF) ืื• ืจื‘-ื”ืฆื”ืจื•ืช ื‘ืขืœื•ืช ืขืจื›ื™ ื˜ื‘ืœื” (MSTVF)
OFFSET

CHECKSUM_AGG

OUTER JOINS, UNION, ORDER BY ื•ืื—ืจื™ื ืืกื•ืจื™ื. ืื•ืœื™ ื”ื™ื” ืงืœ ื™ื•ืชืจ ืœืฆื™ื™ืŸ ื‘ืžื” ืืคืฉืจ ืœื”ืฉืชืžืฉ ื•ืœื ื‘ืžื” ืื™ ืืคืฉืจ ืœื”ืฉืชืžืฉ. ื”ืจืฉื™ืžื” ื›ื ืจืื” ืชื”ื™ื” ื”ืจื‘ื” ื™ื•ืชืจ ืงืฆืจื”.

ืœืกื™ื›ื•ื: ืกื˜ ืขืฆื•ื ืฉืœ ื”ื’ื‘ืœื•ืช ื‘ื›ืœ (ื‘ื•ืื• ื ืฆื™ื™ืŸ ืžืกื—ืจื™) DBMS ืœืขื•ืžืช ืืฃ ืื—ื“ (ืœืžืขื˜ ืื—ื“ ื”ื’ื™ื•ื ื™, ืœื ื˜ื›ื ื™) ื‘ื˜ื›ื ื•ืœื•ื’ื™ื™ืช LGPL. ืขื ื–ืืช, ื™ืฉ ืœืฆื™ื™ืŸ ืฉื”ื˜ืžืขืช ืžื ื’ื ื•ืŸ ื–ื” ื‘ืœื•ื’ื™ืงื” ืจืœืฆื™ื•ื ื™ืช ื”ื™ื ืงืฆืช ื™ื•ืชืจ ืงืฉื” ืžืืฉืจ ื‘ืœื•ื’ื™ืงื” ื”ืคื•ื ืงืฆื™ื•ื ืœื™ืช ื”ืžืชื•ืืจืช.

ะ ะตะฐะปะธะทะฐั†ะธั

ืื™ืš ื–ื” ืขื•ื‘ื“? PostgreSQL ืžืฉืžืฉ ื›"ืžื›ื•ื ื” ื•ื™ืจื˜ื•ืืœื™ืช". ื™ืฉ ื‘ืคื ื™ื ืืœื’ื•ืจื™ืชื ืžื•ืจื›ื‘ ืฉื‘ื•ื ื” ืฉืื™ืœืชื•ืช. ื›ืืŸ ืงื•ื“ ื”ืžืงื•ืจ. ื•ืื™ืŸ ืจืง ืงื‘ื•ืฆื” ื’ื“ื•ืœื” ืฉืœ ื”ื™ื•ืจื™ืกื˜ื™ื•ืช ืขื ื—ื‘ื•ืจื” ืฉืœ ืื. ืื– ืื ื™ืฉ ืœืš ื›ืžื” ื—ื•ื“ืฉื™ื ืœืœืžื•ื“, ืืชื” ื™ื›ื•ืœ ืœื ืกื•ืช ืœื”ื‘ื™ืŸ ืื“ืจื™ื›ืœื•ืช.

ื”ืื ื–ื” ืขื•ื‘ื“ ื‘ื™ืขื™ืœื•ืช? ื“ื™ ื™ืขื™ืœ. ืœืžืจื‘ื” ื”ืฆืขืจ, ืงืฉื” ืœื”ื•ื›ื™ื— ื–ืืช. ืื ื™ ื™ื›ื•ืœ ืจืง ืœื•ืžืจ ืฉืื ืœื•ืงื—ื™ื ื‘ื—ืฉื‘ื•ืŸ ืืช ืืœืคื™ ื”ืฉืื™ืœืชื•ืช ืฉืงื™ื™ืžื•ืช ื‘ืืคืœื™ืงืฆื™ื•ืช ื’ื“ื•ืœื•ืช, ืื– ื‘ืžืžื•ืฆืข ื”ืŸ ื™ืขื™ืœื•ืช ื™ื•ืชืจ ืžืืœื” ืฉืœ ืžืคืชื— ื˜ื•ื‘. ืžืชื›ื ืช SQL ืžืขื•ืœื” ื™ื›ื•ืœ ืœื›ืชื•ื‘ ื›ืœ ืฉืื™ืœืชื” ื‘ืฆื•ืจื” ื™ืขื™ืœื” ื™ื•ืชืจ, ืื‘ืœ ืขื ืืœืฃ ืฉืื™ืœืชื•ืช ืคืฉื•ื˜ ืœื ืชื”ื™ื” ืœื• ื”ืžื•ื˜ื™ื‘ืฆื™ื” ืื• ื”ื–ืžืŸ ืœืขืฉื•ืช ืืช ื–ื”. ื”ื“ื‘ืจ ื”ื™ื—ื™ื“ ืฉืื ื™ ื™ื›ื•ืœ ืœืฆื˜ื˜ ื›ืขืช ื›ื”ื•ื›ื—ื” ืœืืคืงื˜ื™ื‘ื™ื•ืช ื”ื•ื ืฉื›ืžื” ืคืจื•ื™ืงื˜ื™ื ืขื•ื‘ื“ื™ื ืขืœ ื”ืคืœื˜ืคื•ืจืžื” ื”ื‘ื ื•ื™ื” ืขืœ DBMS ื–ื” ืžืขืจื›ื•ืช ERP, ืฉื™ืฉ ืœื”ื ืืœืคื™ ืคื•ื ืงืฆื™ื•ืช MATERIALIZED ืฉื•ื ื•ืช, ืขื ืืœืคื™ ืžืฉืชืžืฉื™ื ื•ืžืกื“ื™ ื ืชื•ื ื™ื ืฉืœ ื˜ืจื”-ื‘ื™ื™ื˜ ืขื ืžืื•ืช ืžื™ืœื™ื•ื ื™ ืจืฉื•ืžื•ืช ื”ืคื•ืขืœื•ืช ืขืœ ืฉืจืช ืจื’ื™ืœ ืฉืœ ืฉื ื™ ืžืขื‘ื“ื™ื. ืขื ื–ืืช, ื›ืœ ืื—ื“ ื™ื›ื•ืœ ืœื‘ื“ื•ืง/ืœื”ืคืจื™ืš ืืช ื”ืืคืงื˜ื™ื‘ื™ื•ืช ืขืœ ื™ื“ื™ ื”ื•ืจื“ื” ืคืœื˜ืคื•ืจืžื” ื•-PostgreSQL, ื ื“ืœืง ืจื™ืฉื•ื ืฉืื™ืœืชื•ืช SQL ื•ืžื ืกื” ืœืฉื ื•ืช ืืช ื”ื”ื™ื’ื™ื•ืŸ ื•ื”ื ืชื•ื ื™ื ืฉื.

ื‘ืžืืžืจื™ื ื”ื‘ืื™ื ืื“ื‘ืจ ื’ื ืขืœ ืื™ืš ืืคืฉืจ ืœื”ื’ื“ื™ืจ ื”ื’ื‘ืœื•ืช ืขืœ ืคื•ื ืงืฆื™ื•ืช, ืขื‘ื•ื“ื” ืขื ื”ืคืขืœื•ืช ืฉื™ื ื•ื™ ื•ืขื•ื“ ื•ืขื•ื“.

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”