á áá°áá
á áá
á˝áá ááľáĽ, áá
á˝áá°-ááłáĽ á á á áŤá á áááᎠáá ááá ááἠáłááá áá° áłáłá¤á ááťá áĽá ááá ἠá ááĽááľ áĽá á á°ááŁáŁá ááá áĽáá´áľ áĽáá°ááá
áľ á áłááťáá. á°ááłáłá á°ááŁá á áááá á¨áááľ á˛á˘á¤áá¤áľ (á á°ááᣠ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);
áá áá áĽáŤá á ááááá á˛á˘á¤áá¤áľ á¨ááľáá¸á ááľáĽáľáĽááľ á¨áá áá áĽáŠá ááááᢠጠ(á¨á°áŤá°áá˝ áĽááľ)ááááŤáąá áá áľááľ áááá á¨á°áŤá°áá˝ á°áá á¨áĽ ááááľ áĽá á¨ááŤá á ááá áá§á°á áá áááᢠá á°áá¨á á áĽá áľ áá°á¨áľ áľáá˝ (á¨á˛áááľáááśá˝ á¨á áá áĽá á°áŤá°áá˝ áĽááłá áĽááááá) áááŤá áááŤá áŚ(á¨á°áŤá°áá˝ áĽááľ) ááá áŚ(á¨ááá áĽááľ) ááĄáľá áĽá ááá°.
á á°ááŤáŠ á˛á˘á¤áá¤áľ ááľáĽ á¨ááľáá¸ááŤá á áá ááá áĽáá°áá˝á ááá˝ áá, ááá áá ááľáĽáľáĽááą á ááá ááአá ááááĽá.
á áłáá°á áľáá áŤáŁ á°ááŁáŤá á¨ááá á˛á˘á¤áá¤áľ ááááŞáŤá á¨ááŤáľááááľá áĽá´áśá˝ á¨ááŤá°á á ááľ áááľ áá áá áŤáááŤá áĽá áľáá áááááľ á¨áááŞáŤá á áá á¨áĽ áá áááááᢠááá ááᣠááĽáŤááłááą á°ááŁáᣠá˛ááášáŁ áአáá´áŞáŤááááľ ááá¨á áááááľ ááťááᢠáľáááą ááĽáŤááłááą áĽáá°áá á áááľ á°ááŁá á°ááłá ááľáá á áŤáľ-á°á áááĽáŤáᢠá¨á ááľ á°ááŁá áĽá´áľ á˛ááአá¨ááľá áá á á°ááłáłá ááĽááľ ááľáĽ ááááŁáᢠáá áá á°ááŁá á áá°ááąá áľ áá á áľááľá á¨á°á°áá ááľá áá°ááłáá˘
á á°ááá MATERIALIZEDá áá°ááŁá áŤááአáá ፠á°áŤá°áὠи á°ááá áľáá, á¨ááŤá áááľ ááľáŽá˝ á¨á˛áááľáááśá˝ áááá áá áá° á á¨á´áá ááľáĽ áá¨ááŤá, áá á á¨á°áŤá°áá˝á áĽááľ áĽá á á ááá á°áááá¸áá áŤá¨ááťá. á á áŤá°áὠᣠá á°áááá¸á ááá á áááŞáŤá áľáľáľá áá ááἠá áááá áľ áá áľáááą á¨áĽááá á ááľáŽá˝ áĽá´áśá˝ á áŤáľ-á°á ááááŁáᢠá¨áá áŤáá áá áá á ááĽáł áĽááá á ááľáŽá˝ áá°ááłá áĽá áá° ááľáĽ áá¨áááá áŚ(á¨ááá áĽááľ).
áá°áŚá˝ áááľá áá¸á? á ááľ ááá áĽáť: áĽáá˛á ááááą á°ááŁá áĽá´áą á¨áááá˝á áľ á¨á°áá°á á¨áá¤áľ áĽá´áśá˝ áĽááľ ááá¨á áááŁáᢠáŤáá áá፠ᣠááá፠á¨ááá á¨á¨áľáá˝ áĽááľ áŤáá á á¨á´á ááá áľáááá˝á áááá áĽá´áśášá á¨ááŤá¨áá˝ á á¨á´á ááááŁáľ á¨áááťá ááá˘
áááłá:
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;
áá°ááŁáááą ááá ááᢠáá´áŞáŤááááľ á¨áá ááááľ á°á°ááá áłáᣠá¨ááŤá áááľ áááá˝ (áĄáľáá˝) áŤááľ á á¨á´á ááá áááłáᣠá ááŤá ááľáŠ ááá ááᢠáĽáááľ á¨áááá á¨ááááŞáŤá ááá á¨ááá°áá áá á¨áá áĽáť ááᢠá áá á áá á¨áĽ ááľáĽ áŤááľ á¨ááá˘áŤáá˝ áĽááľ á áá á ááŤá áĽáááľ á¨á°áŁá á¨áĄáľáá˝ áĽááľ áá áĽáŠá áááá. á¨ááá ᣠáááłá ᣠá¨á ááľ á¨á°áá°á áĄáľá ááŽá˝á ááĽá áááá á ᣠáá áá á°ááŁá áá áá áá˝áá-
childrenCount (Group g) = GROUP SUM 1 IF isParent(Group child, g);
á SQL áá áá ááľáĽ ááá CTE á ááááᢠá ááľáŠ ááá GROUP BY áááŤáá˘
áá áá áá´ á áá áá ᣠá áľááá á¨áá á¨áá¨á ááąá á ááá áá áá¸áľ áá˝áá-
CLASS Order 'ĐакаС';
date 'ĐĐ°ŃĐ°' = DATA DATE (Order);
CLASS OrderDetail 'ĐĄŃŃОка СакаСа';
order 'ĐакаС' = DATA Order (OrderDetail);
date 'ĐĐ°ŃĐ°' (OrderDetail d) = date(order(d)) MATERIALIZED INDEXED;
á ááľ á°ááŁá á˛á°áá áá ááľááá ááľáá, á˘áá´ááľ áŤáá áľ ááľá á¨á á¨á´áá áá á¨áľááá ááľááŽá˝ áá ááá áŁá. á¨áľááá áá á˛áá¨á áľáááą áŤáą á ááľáአááľáĽ áŤááá áá°á á áŤááááá áá á áŤáľ-á°á áŤá°ááá˘
áĽá áá˝
áá á á ááá áá´ áááľáá? á áĽááłá á˛á˘á¤áá¤áľ ááľáĽáŁ áá ááá˝á áĽáá°áá áłáá˝áᣠááᢠááá DBA á˘áá´ááśá˝á áĽáť ááááĽáŁ áľáłá˛áľá˛ááľá áááľá áĽá ááá áá áĽá áľ á ááŞá áĽáá´áľ áĽááąá áĽáá°ááá˝á áááá áá˝áá (áĽá HINTáá˝ á áááľ DBMSáá˝ ááľáĽ áĽáť áááá)ᢠááá áŤá á á˘áááŠáŁ á á˝áá ááľáĽ á¨ááááŞáŤáá áĽáŤá áá ááá á áá˝áá ጠ(á¨ááá áĽááľ) áĽáŤááá˝á áłáááአááá ááľá á´áá˝á áłáá¨ááŠ. á áłáá°á áĽá áľ ááľáĽ, á áĽáľááľ á°á¨á áá áľá á¨ááἠáá¨ááť á áááአáĽá á¨áľááš áľáĽáľáŚá˝ áĽáá°áá áá áá°áĽ á¨ááĽááľá. áá áá á á á¨áŤ áá á ááá áááἠáá˝áá, á ááĽáł á áĽáá áľáá´ áá.
á á°ááŁá áá á áááľááᢠá ááłááľ á°áá˝ á á°áŤáá á°ááŁá áá á áááľá¨áľ áááá á ááĽáł áŤáłáĽáŤáᢠáľáá° áááŽá˝á áĽá ááľáĽáľáĽááłá¸ááᣠááá á¨ááľáá¸á፠áá áśá˝áᣠááá á¨ááááá ááááśá˝áᣠááá áá á´áááŤá áááá˝á á áá¨áąáᢠáĽááá á°áá˝ á¨ááá˘áá˝ á¨á áá á¨áááľ á°ááłáá˝ áá¸áᢠá¨á፠áá áá áá° áá¨áŤ ááá ááá áááłáᢠá¨á¨áĽá áá áá ááá˝á áááááĽá áŤáľá˝ááᢠá¨á á áá áá á˛ááᣠááá˝ á°áá˝ (á¨á áá á´áááŤá - á áá á¨áą DBA) á á°áá°á ááŤá¨áá á°ááŁá áá MATERIALIZEDá áááááľ áááľááᢠáá áá¨áťáá áľáá˝ ááááłá (á ááĽááą ááľáĽ á°á¨á᪠ááľá áááá áľáááŤáľáááá)ᢠááá áá, áá áá áá á á¨áá°á ááĽááľ á¨á°áá á áĽáť áłááá, áá áá á°ááŁá á¨áá áá ááá˝á ááá áá. á á°ááłáłá áá, á¨áľáá á°ááŁá á°ááŁáŤá áĽáá°ááá ááá°á á á ááťáŤáááľ ááá áá. áááľ áá áááŞáŤáá˝-á¨ááťááľ á¨áá¤áľ áááá˝ áĽááľ (áá á á°ááá á áá á¨áĽ ááľáĽ áá áŤá á ááááŚá˝ áĽáá°ááአáá) áĽá á ááá˝ á°ááŁáŤáľ ááľáĽ áá áŤá á áá áĽá á áá ááááá˘
á¨áááłá°á
áááá á¨áááľ á˛á˘á¤áá¤áľ á°ááłáłá áľááśá˝ á áá¸ááĄ- áá´áŞáŤááááľ áĽááł á ááŁá áá°áľ (áŚáŤáá) áĽá á˘áá´áá°áľ áĽááł (ááááŽáśááľ SQL á áááá)ᢠá PostgreSQLᣠMATERIALIZED VIEW á ááĽááľ ááľáĽ áááá á ááťááᣠááá áá á áĽáŤá áĽáť (áĽá á áŁá áĽáĽá á áá áá°áŚá˝á)ᣠáľááá á ááľá ááᢠáá á á áááá¸áá á áĽá á á¨áááľáĄ á ááŤáł á˝ááŽá˝ á áá¸áá˘
á ááááŞáŤáŁ áá´áŞáŤáá˝á ááááľ á¨áá˝ááľ á áľááľáá áá°á á áĽááł á¨áá አáĽáť ááᢠáŤáá áááŤáŁ áá áá áá´áŞáŤá ááá áá á á˛áľ á¨á°áá á¨áá áĽááł áááľá¨áľ á¨ááŠáľá áĽáŤááá˝ áĽáá°áá ááá ááááĽááłáᢠááá áááá ááá áĽááłá áá°ááľ, ááá áá á áľááľá á¨á°á°á áá¨á áŤá á˘áŤááľ á˘áŤááľ áá¤áłá á áááá, ááá áá áĽá áá ááá˝ áááá á áá ááá áľá, áá áĽáá°áá áŤá°á.
á ááá°á á°á¨á, áĽá á á áŁá áĽá áá°áŚá˝ á áá¸á:
Oracle
5.3.8.4 ááŁá áá°áľ áá á á ááá áá°áŚá˝
á¨ááłááľ áĽááł áá áá á áá¨á°áá ááአá¨á°áá°á ááá˘
- á ááłááľ á¨á°á°á¨áá áĽááł áĽáá° á°á°ááá áŤááá á áŁáŁáá˝ ááŁááťáá˝á ááŤá á¨áá áľá
SYSDATE
áROWNUM
.- á ááłááľ á¨á°á áŤá áĽááł ááŁááťáá˝á ááŤá á¨áá áľá
RAW
orLONG
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
á ááážá˝ ááá áľáá.- á ááľáĽ á¨ááá á á¨á´ááá˝ á¨áľá
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))
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
á ááááŤá ááľáĽ áŤáá á ááľ á¨á ááŤáł á¨áá á¨áľ á áá á¨áŚá˝ á ááśá˝ áŤááľ ááľáĽáľáĽ á áááá˝ ááá á áá˝ááᢠááá áá¨áłá á¨áá˝áá á ááłááľ á¨á°áá áĽááłá áá áá ááá˘- á¨
SELECT
áááአáááá ááŤá á áá áľGROUP
BY
á ááśá˝á˘- á ááłááľ á¨á°á áŤá áĽááł á á ááľ ááá á áĽá á¨áááľ á á¨á´ááá˝ áá á¨á°áá°á¨á° á áá°áá.
- áĽááľá á¨áá áá á¨áá á
CHAR
á ááłááľ á á°á°áŤ á¨áĽááł áááἠááľáłááť á¨ááŁáŞáŤ á ááśá˝ ááľáĽ áŤáá á¨ááἠá áááľáŁ á¨ááá áŁá˘áŤ á¨ááá áľáĽáľáŚá˝ áĽá á ááłááľ á¨á°á áŤá áĽááł á°ááłáłá ááá á áá áľá˘- á ááłááľ á¨á°á°á¨áá áĽááł á¨áá¨á°ááľ ááľáĽ á ááą áŤááᣠááŁá áá°áľ á¨áá°ááá á á°ááá°á á¨á˛á¤áá¤á ááľáá˘áŤáá˝ áĽá ááĽáł áááśá˝ áá áĽáť ááá˘
- ááłá áĽááłáὠᨠáá
MIN
orMAX
áľááá˘- áŤáá¸á ááłá áĽááłáá˝
SUM(expr)
áá á ááááCOUNT(expr)
- áŤá ááłá áĽááłáá˝
COUNT(*)
áĽáá˛á ááááą á ááłááľ á¨á°á ፠áĽááł ááľáá˘áŤ-áĽáť ááłá áĽááł ááŁááá˘
- á ááłááľ á¨á°áá áĽááł
MAX
orMIN
á¨á˛á¤áá¤á ááááŤáá˝ á¨á°á°á¨á ááá á¨á°á°áŁáá á áá á ááĽááľ á¨ááłá°áľ ááá˘WHERE
á ááá˝.
á˛á¤áá¤á á¨á°á°á¨á ááá á¨á°áááá á áá áŤáá á¨áá°á/á°áá ááŁá áĽáľáłáľ á¨ááľáá˘áŤ-áĽáť ááŤáŁ áá á°ááłáłá áŁá ᪠á¨áááᢠáá°ááą áĄáľáá˝ á¨áá°ááá/á°ááá áá°ááá áĽá áŤá°ááᢠá¨áĽáąá á¨á áááá á°á áĽá ááá á ááĽááľ.- á á°á°á¨á áĽááłáá˝ ááá áááľ áá ááá˝ ááľáĽ ááłá áĽááłáá˝
FROM
áĽááłáá˝ áá á áá á¨á°áááą á ááá˝ á ááĽááľ áá°áľ ááťááᢠá¨áľááš áĽááłáá˝ áĽáá°ááááą áá¨á áááááľ áááá¨áąOracle á¨ááἠááł SQL á¨ááá ááŁááť .- á¨á᪠ááá ááŤáá˝ á¨áá á áááá° áááŤáá˝ áĽá ááááá áááááľ áá˝ááá˘
WHERE
á ááá˝.- ááŤá ááŤáŤáŁáá˝ áŤááľ ááłá áľáá áĽááłáá˝ á¨á°ááá°á á˛á¤áá¤á áĽá ááĽáł áááśá˝ á áá á ááĽááľ á¨ááłá°áą áá¸áᣠááŤáá á á¨á´á áĽáť á¨á°áťáťáᢠáĽáá˛áá á ááľá áá ááá á፠á á¨á´áá ááá á፠á ááśá˝ áá áአáá°áŚá˝ ááá á ááŁá¸áᢠá¨áá ááá ááŤáá˝ áŤá, ááá ááá ááŤáá˝ á ááŤáŤá á ááŁá¸á
AND
s áĽá áĽáŠáááľá áá áá á áá áľ (=
) áŚááŹá°á.- áá ááłá áĽááłáá˝ á
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
ááľáĽ subquery ááľáĽ ááá áá˝ááFROM
á ááá˝ á¨áááá˝ áĽáŤá á áš á¨ááSELECT * FROM
(áááá¨áą ááá ááá áUNION
ALL
) á áá¨á°áá ááłááĄ-áĽááłá áá á_unionall AS (ááá¨áĄ c.rowid cridᣠc.cust_idᣠ2 umarker á¨á°áá áá˝ c WHERE c.cust_last_name = 'áľáá' UNION áááá ááá¨áĄ c.rowid crid, c.cust_id, 3 umarker á¨á°áá áá˝ á = á¨áľ c.cust_last_last_name "áááľ"); ááłá á¨áá áĽááł áá á ááá_ááľáĽ_áááł_á¤á᪠áĽáá° áá¨áŁ á ááááľ á ááĽááľ á áľáľ * á¨áĽááł_á¨ááá_áá;áĽááłá áááá áἠáá á
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
.
ᨠOracle á áľáááá˝á áá°áá¨á á ááááá, ááá áá á áĽááłááťá¸á áááá ááľáĽ, áá áá´ á á á ááá áááł ááľáĽ á¨á°áťá áááľáá, á ááľ ááááľ áá´á á áá áá, ááá áá á áşáá˝ á ááá አá ááśá˝, ááá á°á áĽáľá á°á°áĽáśáłá. á¨áŤáłá¸áá á áááŤá á˝áá áĽáŤááłááłá¸á á¨áá˝ááľá á á°á¨áᤠá á°á¨ááᢠáá áá áá´ ááľáááá á áááᎠáá áá á áááľá ááľáĽ áĽáá° áááľ ááᢠááá˝ áŤááá áá°áŚá˝ ááľáĽ á ááąá á áááłáľ á ááááá áá áááľá ááááľ áá˝ááᢠáĽáá´áľ áĽáá°áá°áŤ á°áá á¨á°áᨠáĽáŤá áá, ááá áá á¨áá á˝áá áá°á á áá áá.
Microsoft SQL Server
á°á¨á᪠ááľáááśá˝
ᨠSET á ááŤáŽá˝ áĽá á¨ááá°á á°ááŁá ááľáááśá˝ á á°á¨á᪠á¨áá¨á°ááľ ááľáááśá˝ ááááľ á ááŁá¸áá˘
- á¨ááŤá¨áááá á°á áá
CREATE INDEX
á¨á áááŤá¨áľ áŁáá¤áľ ááá á áá áľ.- áá¨á á áááá á˛ááĽáŠ, á¨
IGNORE_DUP_KEY
á ááŤá áá° á ááˇá (ááŁáŞá ááźáľ) áááá á á áá áľá˘- á°áá á¨áŚá˝ á áááľ-ááá áľáá˝ áá áá á ááŁá¸á, áá´.á¨á á¨á´á áľá á á áááŤá¨áľ áľááá.
- á áĽááł ááľáĽ á¨á°á ááą á á°á áá á¨á°áááš á°ááŁáŤáľ ááá á á ááŁá¸á
WITH SCHEMABINDING
á ááŤá.- á áĽááł ááľáĽ á¨á°á ááą áááá¸áá á á°á áá á¨á°áááš á°ááŁáŤáľ á áááľ ááá áľáá˝ áá áá á ááŁá¸áᣠ..
- á á°á áá á¨á°ááḠá°ááŁá á¨ááἠááłá¨áť ááĽá¨áľ ááá á áá áľá˘
NO SQL
, áĽá á¨áá ááłá¨áť ááĽá¨áľ ááá á áá áľNO
.- á¨á፠ááá á¨áŠáŤ áá (CLR) á°ááŁáŤáľ á áĽááł áá¨áĽ áááá ááľáĽ ááłáŠ áá˝ááᣠááá áá á¨á°á°áŁá°á á á¨áá¨á á áá ááá ááş á áŤá ááá á áá˝ááᢠᨠCLR á°ááŁáŤáľ áĽááł WHERE á ááá˝ ááá ᨠJOIN ááá á áĽááł áá áŁáá á ááá˝ ááľáĽ ááłáŠ á áá˝ááá˘
- ᨠCLR á°ááŁáŤáľ áĽá ᨠCLR á á°á áá á¨á°áááš á áááśá˝ á áĽááł ááş ááľáĽ áĽá á áá á¨ááá áľááśá˝ á áá¨á°áá á áá á¨áĽ áá áĽáá°ááłá¨á á¨á°ááᥠááĽá¨áśá˝ áááŤá¸á áááŁáá˘
ááĽá¨áľ
ááľáłááťááŤáĽ = áĽáááľ
áĽáá° Microsoft .NET Framework áá´ áŁá ᪠á ááá ááłáá á áá áľá˘áľáááá = áĽáááľ
áĽáá° á¨.NET Framework áá´ áŁá ᪠á ááá ááłáá á áá áľá˘á¨ááἠááłá¨áť = ááá SQL
á¨DataAccess á áááłá áá° DataAccessKind.None áĽá SystemDataAccess áŁá ᪠á¨SystemDataAccessKind.None á áááá á á¨ááá°á ááá˘á¨áá ááłá¨áť = á á
áá ááĽá¨áľ á CLR áááśá˝ ááŁáŞá NO ááá˘- áĽááłáá á áá áá ááá á á áá áľ
WITH SCHEMABINDING
á ááŤá.- áĽááłá á¨áĽááł áá á á°ááłáłá á¨ááἠááł ááľáĽ áŤááľá á¨áá á¨áľ á áá á¨áŚá˝á áĽáť ááŁááľ á áá áľá˘ áĽááłá ááá˝ áĽááłáá˝á ááŤááááľ á áá˝ááá˘
- á áĽááł áľááá ááľáĽ áŤáá ᨠSELECT ááá፠á¨áá¨á°ááľá ᨠTransact-SQL á áŁáá˝á ááŤá á¨áá áľáá˘
COUNT
ROWSET á°ááŁáŤáľ (OPENDATASOURCE
,OPENQUERY
,OPENROWSET
ᣠáĽáOPENXML
)
OUTER
áááááá (LEFT
,RIGHT
, áááFULL
)á¨á°áá á áá á¨áĽ (á á ááĽááľ ááááťá
SELECT
ááľáĽ ááááŤFROM
á ááá˝)
áŤáľá ááááá
á áá áá áááśá˝á áááá˝SELECT *
orSELECT <table_name>.*
DISTINCT
STDEV
,STDEVP
,VAR
,VARP
, áááAVG
á¨á፠á°áá á¨áĽ á áááá˝ (á˛á˛á˘)á°ááłáá1, á˝áá, á˝áá, ááľá, XML, ááá á¨ááá áĽá¨áľ á ááśá˝
áááľ áá áá
OVER
á ááá˝, á°á¨á á á°áŁáĽ ááá á¨ááľáŽáľ á°ááŁáŤáľá áŤá áááááá-á˝áá áľáá áŤáá˝ (
CONTAINS
,FREETEXT
)
SUM
á¨ááą á áááá˝ á¨áá á áľ á°ááŁá
ORDER BY
CLR á á°á áá á¨á°ááḠáľáá á°ááŁá
TOP
CUBE
,ROLLUP
, áááGROUPING SETS
áŚááŹá°áŽá˝
MIN
,MAX
UNION
,EXCEPT
, áááINTERSECT
áŚááŹá°áŽá˝
TABLESAMPLE
á¨á áá á¨áĽ á°ááááŽá˝
OUTER APPLY
orCROSS APPLY
PIVOT
,UNPIVOT
áľáá˝ á¨á ááľ áľáĽáľáŚá˝
á¨ááľáá áá (TVF) ááá áŁááĽá-ááá፠á°áá á¨áĽ áá áŤáá¸á á°ááŁáŤáľ (MSTVF)
OFFSET
CHECKSUM_AGG
1 á¨á°á ááá áĽááł ááá áá˝ááᢠá°ááłáá á ááśá˝; ááá áĽáá áĽáá°ááá áŤá áááśá˝ á á°á°á á°á á á¨áá¨á á áá ááá ááľáĽ ááŤá°áą á áá˝áá.
- If
GROUP BY
á áᣠá¨áĽááł áľáááá ááŤá á áá áľá˘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 *
orSELECT <table_name>.*
DISTINCT
STDEV
,STDEVP
,VAR
,VARP
, áááAVG
á¨á፠á°áá á¨áĽ á áááá˝ (á˛á˛á˘)á°ááłáá1, á˝áá, á˝áá, ááľá, XML, ááá á¨ááá áĽá¨áľ á ááśá˝
áááľ áá áá
OVER
á ááá˝, á°á¨á á á°áŁáĽ ááá á¨ááľáŽáľ á°ááŁáŤáľá áŤá áááááá-á˝áá áľáá áŤáá˝ (
CONTAINS
,FREETEXT
)
SUM
á¨ááą á áááá˝ á¨áá á áľ á°ááŁá
ORDER BY
CLR á á°á áá á¨á°ááḠáľáá á°ááŁá
TOP
CUBE
,ROLLUP
, áááGROUPING SETS
áŚááŹá°áŽá˝
MIN
,MAX
UNION
,EXCEPT
, áááINTERSECT
áŚááŹá°áŽá˝
TABLESAMPLE
á¨á áá á¨áĽ á°ááááŽá˝
OUTER APPLY
orCROSS APPLY
PIVOT
,UNPIVOT
áľáá˝ á¨á ááľ áľáĽáľáŚá˝
á¨ááľáá áá (TVF) ááá áŁááĽá-ááá፠á°áá á¨áĽ áá áŤáá¸á á°ááŁáŤáľ (MSTVF)
OFFSET
CHECKSUM_AGG
á¨áá áááááᣠáŠáá¨áᣠáľáĽáá á áĽá ááá˝ á¨á°á¨áá¨á áá¸áᢠáĽá á áá ááá á¨ááá˝ááá áłááá áĽá á áá ááá á¨áá˝ááá áááá˝ ááá ááá áá˝ááᢠáááአááááŁáľ á áŁá áŤáá° ááá áá˝ááá˘
ááá áááᥠá á¤áááá¤á á´áááá ááľáĽ áľáá á¨áĽááłáá˝ áľáĽáľáĽ á áĽáŤááłááą (áááľ áĽááľá°áá) DBMS vs á ááłá¸áá (á¨á ááą ááááŤáłá áŤááá á áľá°áá)ᢠááá áá áá áá áá´ á áááááľ á áááᎠáá°áá á á¨á°áááá á°ááŁáŤá ááá ááá á á°áá°á á°á¨á á¨áŁáľ áááá áἠááŁá áááŁáá˘
áľáá áŤ
áĽáá´áľ áĽáá°áá°áŤ? PostgreSQL áĽáá° "áááŁá áá˝á" áĽá
á áá áááá. áĽáŤááá˝á á¨áááᣠááľáĽáľáĽ á áááŞáá á áᢠáĽáá
áá¤áłá á áá ááአáá°áŤá? á áŁá áá¤áłáᢠá ááŤáłáá áááł, áá
ááá¨ááἠá áľá¸á᪠áá. á áľááá
á áááŹá˝áá˝ ááľáĽ áŤááľá á áşáá˝ á¨ááá አáĽáŤááá˝á á¨áááľ ááľáĽ áŤáľááŁá
á á ááŤá áĽááą á¨áĽáŠ ááá˘áá˝ á¨á áá áááŁá áá¸á áááľ áĽá˝áááᢠáĽá
á á áŁá áĽáŠ ᨠSQL ááŽááŤá á áľáŤá áááááá áĽáŤá á áĽááľ ááá áá˝áá ᣠáá á áşá
áá ááá˝ áĽáą á ááá áááľáŤáľ á°ááłá˝ááľ ááá áá á ááá¨ááᢠá áá áĽáá° áá¤áłáááľ áá¨áá፠á¨áá á
á°á áĽá¸áá ááá á áá
á˛á˘á¤áá¤áľ áá á á°áááŁá ááľá¨á áá á ááŤáł ááŽáááśá˝ áĽá¨á°áŠ áá
á áááĽááľ ááŁáĽáá˝ ááľáĽ ᣠá á°ááŁáŽá˝ áá áá°áŚá˝á áĽáá´áľ áááá á áĽáá°áá˝á ᣠá¨ááἠááá-áááá˝ áá áááľáŤáľ áĽá ááá˝áá áĽáááŤáá á˘
ááá: hab.com