åã«
ãã®èšäºã§ã¯ããã®æŠå¿µã«ãããæäœããžãã¯ãå€æŽããããšãªããããŒã¿ããŒã¹ãžã®æžã蟌ã¿ãšèªã¿åãã®ãã©ã³ã¹ãè¿
éãã€äŸ¿å©ã«å®çŸã§ããæ¹æ³ã説æããŸãã åæ§ã®æ©èœããææ°ã®åçš 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 ã¯éšéã«å¿ èŠãªå€ãèšç®ãã XNUMX ã€ã®ãµãã¯ãšãªãçæããéšéããŒãã«ãš JOIN ãäœæããŠååãååŸããŸãã ãã ããé¢æ°ããšã«ã宣èšæã«ç¹å¥ãª MATERIALIZED ããŒã«ãŒãèšå®ããããšãã§ããŸãã ã·ã¹ãã ã¯ããã®ãããªé¢æ°ããšã«å¯Ÿå¿ãããã£ãŒã«ããèªåçã«äœæããŸãã é¢æ°ã®å€ãå€æŽãããšãåããã©ã³ã¶ã¯ã·ã§ã³å ã§ãã£ãŒã«ãã®å€ãå€æŽãããŸãã ãã®é¢æ°ã«ã¢ã¯ã»ã¹ãããšãäºåèšç®ããããã£ãŒã«ãã«ã¢ã¯ã»ã¹ããŸãã
ç¹ã«ãé¢æ°ã« MATERIALIZED ãèšå®ããå Žå åŸæ¥å¡æ° О 絊äžåèš, 次ã«ãéšéã®ãªã¹ããå«ã XNUMX ã€ã®ãã£ãŒã«ããããŒãã«ã«è¿œå ãããåŸæ¥å¡ã®æ°ãšãã®åèšçµŠäžãä¿åãããŸãã åŸæ¥å¡ã絊äžãæå±éšéã«å€æŽããããšãã·ã¹ãã ã¯ãããã®ãã£ãŒã«ãã®å€ãèªåçã«å€æŽããŸãã äžèšã®ã¯ãšãªã¯ãããã®ãã£ãŒã«ãã«çŽæ¥ã¢ã¯ã»ã¹ãã次ã®ããã«å®è¡ãããŸãã 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;
ã·ã¹ãã èªäœãã¿ã€ãããŒãæ〠XNUMX ã€ã®ããŒãã«ãäœæããŸãã 顧客, ãããã¯ã О æŽæ°ãããã« XNUMX ã€ã®ãã£ãŒã«ããè¿œå ããå€æŽãããã°ãããã®ãã£ãŒã«ãå€ãæŽæ°ããŸãã ãããã®é¢æ°ãžã®ãããªãåŒã³åºããè¡ããããšããããã¯èšç®ãããã察å¿ãããã£ãŒã«ãããå€ãèªã¿åãããŸãã
ãã®ã¡ã«ããºã ã䜿çšãããšãããšãã°ãã¯ãšãªå ã®ååž° (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 ãšããŒã¯ãããŠããå ŽåãXNUMX ã€ã®ã㌠(ã°ã«ãŒã) ãæã€ããŒãã«ãäœæãããŸãã 芪ã§ã æåã®ããŒã XNUMX çªç®ã®ããŒã®åã®å Žåã«ã®ã¿ true ã«ãªããŸãã ãã®ããŒãã«å ã®ãšã³ããªã®æ°ã¯ãã°ã«ãŒãã®æ°ã«ããªãŒã®å¹³åæ·±ããä¹ç®ãããã®ã«çãããªããŸãã ããšãã°ãç¹å®ã®ã°ã«ãŒãã®åå«ã®æ°ãæ°ããå¿ èŠãããå Žåã¯ã次ã®é¢æ°ã䜿çšã§ããŸãã
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;
é¢æ°ãåŒã³åºããšã date 泚ææ现ã®å Žåãã€ã³ããã¯ã¹ããããã£ãŒã«ãã泚ææ现ã®ããããŒãã«ããèªã¿åãããŸãã 泚ææ¥ãå€æŽããããšãã·ã¹ãã èªäœãæ现è¡ã®éæ£èŠåãããæ¥ä»ãèªåçã«åèšç®ããŸãã
å©ç¹
ãã®ä»çµã¿å šäœã¯äœã®ããã«ããã®ã§ãããã? åŸæ¥ã® DBMS ã§ã¯ãã¯ãšãªãæžãæããããšãªããéçºè ãŸã㯠DBA ã¯ã€ã³ããã¯ã¹ãå€æŽããçµ±èšã決å®ãããããã®å®è¡æ¹æ³ãã¯ãšãª ãã©ã³ãã«æ瀺ããããšããã§ããŸãã (HINT ã¯åçš DBMS ã§ã®ã¿äœ¿çšã§ããŸã)ã ã©ããªã«é 匵ã£ãŠããèšäºã®æåã®ã¯ãšãªãå®äºããããšã¯ã§ããŸããã O (éšéã®æ°) ã¯ãšãªãå€æŽãããããªã¬ãŒãè¿œå ãããããå¿ èŠã¯ãããŸããã ææ¡ãããã¹ããŒã ã§ã¯ãéçºæ®µéã§ããŒã¿ ã¹ãã¬ãŒãžæ§é ãã©ã®éèšã䜿çšããããèããå¿ èŠã¯ãããŸããã ãããã¯ãã¹ãŠãæäœäžã«çŽæ¥ããã®å Žã§ç°¡åã«å€æŽã§ããŸãã
å®éã«ã¯ãããªæãã«ãªããŸãã ç®ã®åã®ã¿ã¹ã¯ã«çŽæ¥åºã¥ããŠããžãã¯ãéçºãã人ãããŸãã 圌ãã¯ãã¢ã«ãŽãªãºã ãšãã®è€éããå®è¡èšç»ãçµåã®çš®é¡ããã®ä»ã®æè¡ã³ã³ããŒãã³ããç解ããŠããŸããã ãããã®äººã ã¯éçºè ãšãããããããžãã¹ ã¢ããªã¹ãã§ãã ãã®åŸãããããã¹ãŠããã¹ããŸãã¯éçšã«å ¥ããŸãã é·æéå®è¡ãããã¯ãšãªã®ãã°ãæå¹ã«ããŸãã é·ãã¯ãšãªãæ€åºããããšãä»ã®äºº (ããæè¡ç㪠- æ¬è³ªçã«ã¯ DBA) ããäœããã®äžéé¢æ°ã§ MATERIALIZED ãæå¹ã«ããããšã決å®ããŸãã ããã«ãããèšé²ãå°ãé ããªããŸã (ãã©ã³ã¶ã¯ã·ã§ã³å ã®è¿œå ãã£ãŒã«ããæŽæ°ããå¿ èŠããããã)ã ãã ãããã®ã¯ãšãªã ãã§ãªãããã®é¢æ°ã䜿çšããä»ã®ãã¹ãŠã®ã¯ãšãªãå€§å¹ ã«é«éåãããŸãã åæã«ãã©ã®æ©èœãå®çŸãããã決å®ããããšã¯æ¯èŒçç°¡åã§ãã XNUMX ã€ã®äž»ãªãã©ã¡ãŒã¿: å¯èœãªå ¥åå€ã®æ° (ããã¯ã察å¿ããããŒãã«ã«å«ãŸããã¬ã³ãŒãã®æ°ã§ã)ãããã³ä»ã®é¢æ°ã§äœ¿çšãããé »åºŠã§ãã
é¡äŒŒäœ
ææ°ã®åçš DBMS ã«ã¯ãFAST REFRESH ãåãã MATERIALIZED VIEW (Oracle) ããã³ INDEXED VIEW (Microsoft SQL Server) ãªã©ãåæ§ã®ã¡ã«ããºã ããããŸãã PostgreSQL ã§ã¯ãMATERIALIZED VIEW ã¯ãã©ã³ã¶ã¯ã·ã§ã³å ã§æŽæ°ã§ãããèŠæ±ã«å¿ããŠã®ã¿æŽæ°ã§ããŸã (ããã«éåžžã«å³ããå¶éããããŸã)ããã®ãããèæ ®ããŠããŸããã ãããããããã«ã¯ããã®äœ¿çšãå€§å¹ ã«å¶éããããã€ãã®åé¡ããããŸãã
ãŸãããããªã¢ã©ã€ãŒãŒã·ã§ã³ãæå¹ã«ã§ããã®ã¯ãéåžžã® VIEW ããã§ã«äœæããŠããå Žåã®ã¿ã§ãã ãã以å€ã®å Žåã¯ããã®å ·äœåã䜿çšããããã«æ°ããäœæããããã¥ãŒã«ã¢ã¯ã»ã¹ããããã«æ®ãã®ãªã¯ãšã¹ããæžãçŽãå¿ èŠããããŸãã ãŸãã¯ããã¹ãŠããã®ãŸãŸã«ããŠãããŸããããã§ã«äºåã«èšç®ãããç¹å®ã®ããŒã¿ããããå€ãã®ã¯ãšãªã§åžžã«ããã䜿çšãããããã§ã¯ãªããåèšç®ãããå Žåã«ã¯ãå°ãªããšãå¹æã¯ãããŸããã
第äºã«ãèšå€§ãªæ°ã®å¶éããããŸãã
ãªã©ã¯ã«
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
å¥ãŸãã¯éåäœã- å ã®ãã¹ãŠã®ããŒãã«ã®ROWID
FROM
ãªã¹ãã¯SELECT
ã¯ãšãªã®ãªã¹ãã- ãããªã¢ã©ã€ãºãã»ãã¥ãŒã»ãã°ã¯ããã¹ãŠã®å®è¡šã®ROWIDãšãšãã«ååšããå¿ èŠããããŸãã
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)
ååšããå¿ èŠããããŸãã ãªã©ã¯ã«ã¯æ¬¡ã®ããšãæšå¥šããŠããŸãSUM(expr)
æå®ãããããšã- If
VARIANCE(expr)
orSTDDEV(expr
) ãæå®ãããCOUNT(expr)
&SUM(expr)
ãæå®ããå¿ èŠããããŸãã ãªã©ã¯ã«ã¯æ¬¡ã®ããšãæšå¥šããŠããŸãSUM(expr *expr)
æå®ãããããšã- ã
SELECT
å®çŸ©ã¯ãšãªå ã®åã¯ãè€æ°ã®ããŒã¹ ããŒãã«ã®åãå«ãè€éãªåŒã«ããããšã¯ã§ããŸããã ããã«å¯Ÿããå¯èœãªåé¿çã¯ããã¹ãããããããªã¢ã©ã€ãºã ãã¥ãŒã䜿çšããããšã§ãã- ã
SELECT
ãªã¹ãã«ã¯ãã¹ãŠãå«ãŸããŠããå¿ èŠããããŸãGROUP
BY
åã- ãããªã¢ã©ã€ãºã ãã¥ãŒã¯ XNUMX ã€ä»¥äžã®ãªã¢ãŒã ããŒãã«ã«åºã¥ããŠããŸããã
- ããªãã䜿çšããŠããå Žå
CHAR
ãããªã¢ã©ã€ãºãã»ãã¥ãŒã»ãã°ã®ãã£ã«ã¿åã®ããŒã¿åã䜿çšããã«ã¯ããã¹ã¿ãŒã»ãµã€ããšãããªã¢ã©ã€ãºãã»ãã¥ãŒã®æåã»ãããåãã§ããå¿ èŠããããŸãã- ãããªã¢ã©ã€ãºãã»ãã¥ãŒã«æ¬¡ã®ãããããããå Žåãé«éãªãã¬ãã·ã¥ã¯åŸæ¥ã® DML æ¿å ¥ããã³çŽæ¥ããŒãã§ã®ã¿ãµããŒããããŸãã
- ãããªã¢ã©ã€ãºããã¥ãŒ
MIN
orMAX
骚æ- ãããªã¢ã©ã€ãºã ãã¥ãŒ
SUM(expr)
ã§ããªãCOUNT(expr)
- ãããªã¢ã©ã€ãºããã¥ãŒãªã
COUNT(*)
ãã®ãããªãããªã¢ã©ã€ãºã ãã¥ãŒã¯ãæ¿å ¥å°çšãããªã¢ã©ã€ãºã ãã¥ãŒãšåŒã°ããŸãã
- ãããªã¢ã©ã€ãºããã¥ãŒ
MAX
orMIN
åé€ãŸãã¯æ··å DML ã¹ããŒãã¡ã³ãã®åŸã«ãWHERE
å¥ã
åé€ãŸãã¯æ··å DML åŸã®æ倧/æå°é«éãªãã¬ãã·ã¥ã¯ãæ¿å ¥ã®ã¿ã®å ŽåãšåãåäœãããŸããã 圱é¿ãåããã°ã«ãŒãã®æ倧å€/æå°å€ãåé€ããŠåèšç®ããŸãã ããã©ãŒãã³ã¹ãžã®åœ±é¿ãèªèããå¿ èŠããããŸãã- ååä»ããã¥ãŒãŸãã¯ãµãã¯ãšãªãå«ããããªã¢ã©ã€ãºã ãã¥ãŒ
FROM
ãã¥ãŒãå®å šã«ããŒãžã§ããã°ãå¥ãããã«ãªãã¬ãã·ã¥ã§ããŸãã ã©ã®ãã¥ãŒãããŒãžããããã«ã€ããŠã¯ããåç §ããŠãã ããããOracle Database SQLèšèªãªãã¡ã¬ã³ã¹ã .- å€éšçµåããªãå Žåã¯ãä»»æã®éžæãšçµåãå¯èœã§ãã
WHERE
å¥ã- å€éšçµåã䜿çšãããããªã¢ã©ã€ãºãéèšãã¥ãŒã¯ãå€éšããŒãã«ã®ã¿ãå€æŽãããŠããã°ãåŸæ¥ã® DML ããã³çŽæ¥ããŒãåŸã«é«éãªãã¬ãã·ã¥å¯èœã§ãã ãŸããå éšçµåããŒãã«ã®çµååã«ã¯äžæå¶çŽãååšããå¿ èŠããããŸãã å€éšçµåãããå Žåã¯ããã¹ãŠã®çµåã次ã®æ¹æ³ã§æ¥ç¶ããå¿ èŠããããŸãã
AND
s ã§ãããçäŸ¡æ§ (=
) æŒç®åã- ãããªã¢ã©ã€ãºããã¥ãŒã®å Žå
CUBE
,ROLLUP
ãã°ã«ãŒãåã»ããããŸãã¯ãããã®é£çµã«ã¯ã次ã®å¶éãé©çšãããŸãã
- ã
SELECT
ãªã¹ãã«ã¯ã°ã«ãŒãåèå¥åãå«ãŸããŠããå¿ èŠããããŸããGROUPING_ID
ãã¹ãŠã«æ©èœããGROUP
BY
è¡šçŸãGROUPING
ããããã« XNUMX ã€ã®æ©èœ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
æŒç®åã¯ã次㮠XNUMX ã€ã®äŸå€ãé€ããŠããµãã¯ãšãªå ã«åã蟌ãããšã¯ã§ããŸãããUNION
ALL
ã®ãµãã¯ãšãªã«å«ããããšãã§ããŸãFROM
å®çŸ©ã¯ãšãªã次ã®åœ¢åŒã§ããå Žåã®å¥SELECT * FROM
(ãã¥ãŒãŸãã¯ãµãã¯ãšãªUNION
ALL
) 次ã®äŸã®ããã«:CREATE VIEW view_with_unionall AS (SELECT c.rowid crid, c.cust_id, 2 umark FROMåŸæå c WHERE c.cust_last_name = 'Smith' UNION ALL SELECT c.rowid crid, c.cust_id, 3 umark FROMåŸæå c WHERE c.cust_last_name = ããžã§ãŒã³ãºã); MATERIALIZED VIEW ãäœæ Unionall_inside_view_mv SELECT * 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
.
Oracle ãã¡ã³ãæãããã€ããã¯ãããŸãããã圌ãã®å¶éãªã¹ãããå€æãããšããã®ã¡ã«ããºã ã¯ããçš®ã®ã¢ãã«ã䜿çšããŠäžè¬çãªã±ãŒã¹ã§ã¯ãªããäœå人ãã®ã€ã³ã人ã«ãã£ãŠæžãããããã§ãããããã§ã¯èª°ãããããè¡ãæ©äŒãäžããããŠããŸãããèªåã®ãã©ã³ããäœæãããããããã§ããéãã®ããšãè¡ããå®éã«å®è¡ããŸããã ãã®ã¡ã«ããºã ãå®éã®ããžãã¯ã«äœ¿çšããããšã¯ãå°é·åãæ©ããããªãã®ã§ãã æçœã§ã¯ãªãå¶éã®ããããã«è©²åœããããšã§ããã€ã§ãå°é·ãååŸã§ããŸãã ãããã©ã®ããã«æ©èœãããã«ã€ããŠãå¥ã®åé¡ã§ããããã®èšäºã®ç¯å²ãè¶ ããŠããŸãã
Microsoft SQL ãµãŒããŒ
è¿œå èŠä»¶
SET ãªãã·ã§ã³ãšæ±ºå®è«çé¢æ°ã®èŠä»¶ã«å ããŠã次ã®èŠä»¶ãæºããå¿ èŠããããŸãã
- å®è¡ãããŠãŒã¶ãŒ
CREATE INDEX
ãã¥ãŒã®ææè ã§ããå¿ èŠããããŸãã- ã€ã³ããã¯ã¹ãäœæãããšã
IGNORE_DUP_KEY
ãªãã·ã§ã³ã¯ OFF (ããã©ã«ãèšå®) ã«èšå®ããå¿ èŠããããŸãã- ããŒãã«ã¯ XNUMX ã€ã®éšåãããªãååã§åç §ããå¿ èŠããããŸãã ã¹ããŒã.ããŒãã«å ãã¥ãŒå®çŸ©ã§ã
- ãã¥ãŒã§åç §ããããŠãŒã¶ãŒå®çŸ©é¢æ°ã¯ã
WITH SCHEMABINDING
ãªãã·ã§ã³ãéžæããŸãã- ãã¥ãŒå ã§åç §ããããŠãŒã¶ãŒå®çŸ©é¢æ°ã¯ãXNUMX ã€ã®éšåãããªãååã§åç §ããå¿ èŠããããŸãã ..
- ãŠãŒã¶ãŒå®çŸ©é¢æ°ã®ããŒã¿ ã¢ã¯ã»ã¹ ããããã£ã¯æ¬¡ã®ãšããã§ããå¿ èŠããããŸãã
NO SQL
ãå€éšã¢ã¯ã»ã¹ ããããã£ã¯æ¬¡ã®ãšããã§ããå¿ èŠããããŸããNO
.- å ±éèšèªã©ã³ã¿ã€ã (CLR) é¢æ°ã¯ãã¥ãŒã®éžæãªã¹ãã«è¡šç€ºã§ããŸãããã¯ã©ã¹ã¿ãŒåã€ã³ããã¯ã¹ ããŒã®å®çŸ©ã®äžéšã«ããããšã¯ã§ããŸããã CLR é¢æ°ã¯ããã¥ãŒã® WHERE å¥ãŸãã¯ãã¥ãŒå ã® JOIN æäœã® ON å¥ã«ã¯äœ¿çšã§ããŸããã
- ãã¥ãŒå®çŸ©ã§äœ¿çšããã CLR é¢æ°ãš CLR ãŠãŒã¶ãŒå®çŸ©åã®ã¡ãœããã«ã¯ã次ã®è¡šã«ç€ºãããã«ããããã£ãèšå®ãããŠããå¿ èŠããããŸãã
ããããã£
Note決å®ç = ç
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
å ±éããŒãã«åŒ (CTE)ãããŒã1, íŽëŒì°ë êž°ë° AI/MLë° ê³ ì±ë¥ 컎íší ì íµí ëì§íž ížìì êž°ìŽ â Edward Hsu, Rescale CPO ë§ì ìì§ëìŽë§ ì€ì¬ êž°ì ìê² íŽëŒì°ëë R&Dëì§íž ì íì 첫 ëšê³ìŒ ë¿ì ëë€. íŽëŒì°ë ììì íì©íŽ ìì§ëìŽë§ íì ì ìœì íŽê²°íë ëšê³ë¥Œ ëìŽ, ì뮬ë ìŽì ìŽìì íµí©íê³ ìµì ííë©°, ê¶ê·¹ì ìŒë¡ë ëªšëž êž°ë°ì íì 곌 ìì¬ ê²°ì ì ì§ìíì¬ ì ì íì ê²°ì í ë ë°ìŽí° êž°ë° ìì§ëìŽë§ì ì ì©íê³ ì í©ëë€. Rescaleì ìŽë¬í íì ì ëêž° ìíŽ ì»Žíší ì¶ì² ìì§, íµí© ë°ìŽí° íšëžëŠ, ë©íë°ìŽí° êŽëŠ¬ ë±ì ê°ë°íê³ ììµëë€. ìŽë² ì늬륌 ë¹ë € ë¹ìŠëì€ ê²œìë ¥ ì ê³ ë¥Œ ìí ëì§íž ížì ë° ëì§íž ì€ë ë ì ëµ ê°ë° ë°©ë²ì ëí ìžì¬ìŽížë¥Œ ëëê³ ì í©ëë€. , ntext, ç»å, XMLãŸã㯠ãã¡ã€ã«ã¹ããªãŒã ã³ã©ã
ãµãã¯ãšãªãŒ
OVER
ã©ã³ã¯ä»ããŸãã¯éèšãŠã£ã³ããŠé¢æ°ãå«ãå¥å šæè¿°èª (
CONTAINS
,FREETEXT
)
SUM
NULL 蚱容åŒãåç §ããé¢æ°
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
ãååšããå Žåã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 *
orSELECT <table_name>.*
DISTINCT
STDEV
,STDEVP
,VAR
,VARP
ãŸãã¯AVG
å ±éããŒãã«åŒ (CTE)ãããŒã1, íŽëŒì°ë êž°ë° AI/MLë° ê³ ì±ë¥ 컎íší ì íµí ëì§íž ížìì êž°ìŽ â Edward Hsu, Rescale CPO ë§ì ìì§ëìŽë§ ì€ì¬ êž°ì ìê² íŽëŒì°ëë R&Dëì§íž ì íì 첫 ëšê³ìŒ ë¿ì ëë€. íŽëŒì°ë ììì íì©íŽ ìì§ëìŽë§ íì ì ìœì íŽê²°íë ëšê³ë¥Œ ëìŽ, ì뮬ë ìŽì ìŽìì íµí©íê³ ìµì ííë©°, ê¶ê·¹ì ìŒë¡ë ëªšëž êž°ë°ì íì 곌 ìì¬ ê²°ì ì ì§ìíì¬ ì ì íì ê²°ì í ë ë°ìŽí° êž°ë° ìì§ëìŽë§ì ì ì©íê³ ì í©ëë€. Rescaleì ìŽë¬í íì ì ëêž° ìíŽ ì»Žíší ì¶ì² ìì§, íµí© ë°ìŽí° íšëžëŠ, ë©íë°ìŽí° êŽëŠ¬ ë±ì ê°ë°íê³ ììµëë€. ìŽë² ì늬륌 ë¹ë € ë¹ìŠëì€ ê²œìë ¥ ì ê³ ë¥Œ ìí ëì§íž ížì ë° ëì§íž ì€ë ë ì ëµ ê°ë° ë°©ë²ì ëí ìžì¬ìŽížë¥Œ ëëê³ ì í©ëë€. , ntext, ç»å, XMLãŸã㯠ãã¡ã€ã«ã¹ããªãŒã ã³ã©ã
ãµãã¯ãšãªãŒ
OVER
ã©ã³ã¯ä»ããŸãã¯éèšãŠã£ã³ããŠé¢æ°ãå«ãå¥å šæè¿°èª (
CONTAINS
,FREETEXT
)
SUM
NULL 蚱容åŒãåç §ããé¢æ°
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
OUTER JOINãUNIONãORDER BY ãªã©ã¯çŠæ¢ãããŠããŸãã äœã䜿çšã§ããªããããããäœã䜿çšã§ããããæå®ããæ¹ãç°¡åã ã£ãããç¥ããŸããã ãªã¹ãã¯ãããããã£ãšçããã®ã«ãªãã§ãããã
èŠçŽãããšãLGPL ãã¯ãããžã«ã¯ããã¹ãŠã® (åçšã§ããããšã«æ³šæããŠãã ãã) DBMS ã«èšå€§ãªå¶éãããã(è«ççãªãã®ã§ã¯ãªã XNUMX ã€ã®è«ççãªãã®ãé€ããŠ) å¶éã¯ãããŸããã ãã ãããã®ã¡ã«ããºã ããªã¬ãŒã·ã§ãã« ããžãã¯ã§å®è£ ããã®ã¯ã説æããé¢æ°åããžãã¯ãããè¥å¹²é£ããããšã«æ³šæããŠãã ããã
å ·çŸå
䜿ãæ¹ïŒ PostgreSQLã¯ãä»®æ³ãã·ã³ããšããŠå©çšãããŸãã å
éšã«ã¯ã¯ãšãªãæ§ç¯ããè€éãªã¢ã«ãŽãªãºã ããããŸãã ãã
ããã¯å¹æçã«æ©èœããŸããïŒ ããªãå¹æçã§ãã æ®å¿µãªãããããã蚌æããã®ã¯å°é£ã§ãã 倧èŠæš¡ãªã¢ããªã±ãŒã·ã§ã³ã«ååšããäœåãã®ã¯ãšãªãèæ
®ãããšãå¹³åããŠåªããéçºè
ã®ã¯ãšãªãããå¹ççã§ãããšããèšããŸããã åªç§ãª SQL ããã°ã©ããŒã¯ãããããã¯ãšãªãããå¹ççã«äœæã§ããŸãããã¯ãšãªã XNUMX åãããå Žåããããå®è¡ããã¢ãããŒã·ã§ã³ãæéããããŸããã æå¹æ§ã®èšŒæ ãšããŠä»ç§ãæããããå¯äžã®ããšã¯ãããã€ãã®ãããžã§ã¯ãããã® DBMS äžã«æ§ç¯ããããã©ãããã©ãŒã äžã§åäœããŠãããšããããšã§ãã
次ã®èšäºã§ã¯ãæ©èœã®å¶éãèšå®ããæ¹æ³ãå€æŽã»ãã·ã§ã³ã®æäœæ¹æ³ãªã©ã«ã€ããŠã説æããŸãã
åºæïŒ habr.com