DB2åˆå¿ƒè€…å‘ã‘ãƒãƒ³ã‚ºã‚ªãƒ³ (2009/09/01)
カテゴリー: DBã«ã¤ã„ã¦
投稿者: shinichi
先週ã®åœŸæ›œæ—¥ã«IBMã®DB2ãƒãƒ¼ãƒ ãŒé–‹å‚¬ã—ã¦ã„ã‚‹Club DB2ã®ã€Žã€åœŸæ›œé–‹å‚¬ã€‘ ã•ã‚ã£ã¦ã¿ã‚ˆã† DB2 9.7ã€ã«å‚åŠ ã—ã¦ãã¾ã—ãŸã€‚
ãªãœã‹DB2ã®ä¸Šä½è³‡æ ¼ã‚’æŒã£ã¦ã„ã‚‹ç§ã§ã™ãŒã€å®Ÿéš›ã«ã¯ã»ã¨ã‚“ã©DB2ã«è§¦ã‚ŒãŸã“ã¨ãŒã‚りã¾ã›ã‚“ã€‚è©¦é¨“å¯¾ç–æœ¬ã‚„DB2æ–°æ©Ÿèƒ½ã®æœ¬ã‚’èªã‚“ã§æ¥½ã—ã‚“ã§ã„ã‚‹ã®ã§å¤šå°‘ã¯çŸ¥ã£ã¦ã„ã‚‹ã¤ã‚‚り。
データベースã£ã¦ãªã‚“ã ã‹ä¸æ€è°ãªæ°—ãŒã—ã¦ã¨ã¦ã‚‚興味をæŒã£ã¦ã„ã‚‹ã®ã§ã™ãŒã€ã›ã„ãœã„SQLを書ããらã„ã§ã™ï¼ˆå‰ã®ç¾å ´ã§ã¯4000行を超ãˆã‚‹SQLを書ã„ãŸã“ã¨ãŒã‚りã¾ã™ï¼‰ã€‚
今回ã®ãƒãƒ³ã‚ºã‚ªãƒ³ã¯é¡Œåã‹ã‚‰ã‚ã‹ã‚‹ã¨ãŠã‚Šã€ã©ã¡ã‚‰ã‹ã¨ã„ã†ã¨åˆå¿ƒè€…å‘ã‘ã®ä¼šã§ã—ãŸã€‚ä¼šã®æµã‚Œã¨ã—ã¦ã¯ã€ã¾ãšã€ŒDBã‚„SQLã£ã¦ã©ã‚“ãªæ„Ÿã˜ã®ã‚‚ã®ãªã®ï¼Ÿã€ã¨ã„ã†ãŠè©±ã‚’èžã„ã¦ã€å¾Œã¯ç”¨æ„ã•れãŸãƒ†ã‚ã‚¹ãƒˆã«æ²¿ã£ã¦SQLã®ãŠå‹‰å¼·ï¼‹DB2ã¨ä»²è‰¯ããªã‚‹æ™‚é–“ã¨ãªã£ã¦ã„ã¾ã—ãŸã€‚終了時間ã¾ã§ã¯ä½•ã‚’ã—ã¦ã‚‚OKï¼
SQLã¯ã ã„ãŸã„知ã£ã¦ã„ã‚‹ã®ã§ãƒ†ã‚ストã¯ã™ãã«çµ‚ã‚りã¾ã—ãŸã€‚ã§ã™ã®ã§ã€æ™®æ®µè§¦ã‚‹ã“ã¨ã®ãªã„DB2ã§ã„ã‚ã„ã‚éŠã‚“ã§ã„ã¾ã—ãŸã€‚
・fromテーブルã®ä½œæˆ
 DB2ã§ã¯SQLã®å˜èªžã‚’テーブルåやカラムåã«è¨å®šã§ãã‚‹ã¨è¨€ã†ã“ã¨ã‚’èžã„ã¦ã„ãŸã®ã§è©¦ã—ã¦ã¿ã¾ã—ãŸã€‚
CREATE TABLE FROM(
SELECT SMALLINT,
FROM SMALLINT,
WHERE SMALLINT,
GROUP_BY SMALLINT,
ORDER_BY SMALLINT
);
 ãã—ã¦ã€é©å½“ãªãƒ‡ãƒ¼ã‚¿ã‚’挿入ã—ã€SELECT。
SELECT FROM FROM FROM
ã¨ã‹
SELECT SELECT FROM FROM WHERE WHERE ORDER BY ORDER_BY
ã¨ã„ã†å®Ÿå‹™ã§ç™ºè¦‹ã—ãŸã‚‰ã¶ã¡ãŽã‚Œãã†ãªSQLを実行ã—ã¦æ¥½ã—ã¿ã¾ã—ãŸã€‚
・新ãƒãƒƒã‚¯æ©Ÿèƒ½"CS with CC"ã®ä½“験
 何ã¨ã„ã†è¨€è‘‰ã®çŸç¸®å½¢ã ã‹ã¯å¿˜ã‚Œã¦ã—ã¾ã„ã¾ã—ãŸãŒï¼ˆCCã¯"Currently Committed")ã€Oracleã«è¿‘ã„å‹•ããŒã§ãるよã†ã«è¿½åŠ ã•れãŸã‚‰ã—ã„ã§ã™ã€‚
 DB2ã®å…ƒã€…ã®å‹•ãã¨ã—ã¦ã¯ã€ãƒ†ãƒ¼ãƒ–ルAã®ãƒ‡ãƒ¼ã‚¿ã‚’UPDATEã—ã¦æœªã‚³ãƒŸãƒƒãƒˆçŠ¶æ…‹ã§ã„ã‚‹å ´åˆã€ã»ã‹ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒãƒ†ãƒ¼ãƒ–ルAã‚’SELECTã—ã¦ã‚‚ãƒãƒƒã‚¯ãŒã‹ã‹ã£ã¦ã„る状態ãªã®ã§ãƒ‡ãƒ¼ã‚¿ã®å–å¾—ãŒã§ãã¾ã›ã‚“。
 今回新ã—ãè¿½åŠ ã•れãŸã“ã®æ©Ÿèƒ½ã‚’有効ã«ã—ãŸå¾Œã«ä¸Šè¨˜ã¨åŒã˜SQLを実行ã™ã‚‹ã¨ã€å¤‰æ›´å‰ã®ãƒ‡ãƒ¼ã‚¿ã‚’èªã¿è¾¼ã‚“ã§ãã¦ãれã¾ã™ã€‚
 ã“れãŒè‰¯ã„ã‹æ‚ªã„ã‹ã¯ç¾å ´ã«ã‚ˆã‚Šã¾ã™ã。
・CLP Plus
 ãªã‚“ã ã‹Oracleã«è¿Žåˆã—ã¦ã„るよã†ãªæ°—ãŒã—ã¾ã™ãŒã€SQL *Plusã«ã‹ãªã‚Šè¿‘ã„æ„Ÿã˜ã§ã‚ªãƒšãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
 dual表を使用ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã—ã€è¡¨ç¤ºãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã‚’Oracleã®ã‚³ãƒžãƒ³ãƒ‰ã§è¨å®šã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ï¼ˆ"set pages"ã‚„"set lin"ãªã©ï¼‰ã€‚
 ãŠå‹‰å¼·ãŒçµ‚ã‚ã£ãŸã‚‰IBMã®äººã¨ã€Club DB2ã«å‚åŠ ã—ãŸäººãŸã¡ã¨ã®æ‡‡è¦ªä¼šã«è¡Œãã¾ã—ãŸã€‚
 土曜日ã«å‹‰å¼·ãƒ»ãƒ»ãƒ»ã¨ã„ã†æ„Ÿã˜ã§ã™ãŒã€é”æˆæ„Ÿã®ã‚ã‚‹åˆå¾Œã§ã—ãŸã€‚
ãªãœã‹DB2ã®ä¸Šä½è³‡æ ¼ã‚’æŒã£ã¦ã„ã‚‹ç§ã§ã™ãŒã€å®Ÿéš›ã«ã¯ã»ã¨ã‚“ã©DB2ã«è§¦ã‚ŒãŸã“ã¨ãŒã‚りã¾ã›ã‚“ã€‚è©¦é¨“å¯¾ç–æœ¬ã‚„DB2æ–°æ©Ÿèƒ½ã®æœ¬ã‚’èªã‚“ã§æ¥½ã—ã‚“ã§ã„ã‚‹ã®ã§å¤šå°‘ã¯çŸ¥ã£ã¦ã„ã‚‹ã¤ã‚‚り。
データベースã£ã¦ãªã‚“ã ã‹ä¸æ€è°ãªæ°—ãŒã—ã¦ã¨ã¦ã‚‚興味をæŒã£ã¦ã„ã‚‹ã®ã§ã™ãŒã€ã›ã„ãœã„SQLを書ããらã„ã§ã™ï¼ˆå‰ã®ç¾å ´ã§ã¯4000行を超ãˆã‚‹SQLを書ã„ãŸã“ã¨ãŒã‚りã¾ã™ï¼‰ã€‚
今回ã®ãƒãƒ³ã‚ºã‚ªãƒ³ã¯é¡Œåã‹ã‚‰ã‚ã‹ã‚‹ã¨ãŠã‚Šã€ã©ã¡ã‚‰ã‹ã¨ã„ã†ã¨åˆå¿ƒè€…å‘ã‘ã®ä¼šã§ã—ãŸã€‚ä¼šã®æµã‚Œã¨ã—ã¦ã¯ã€ã¾ãšã€ŒDBã‚„SQLã£ã¦ã©ã‚“ãªæ„Ÿã˜ã®ã‚‚ã®ãªã®ï¼Ÿã€ã¨ã„ã†ãŠè©±ã‚’èžã„ã¦ã€å¾Œã¯ç”¨æ„ã•れãŸãƒ†ã‚ã‚¹ãƒˆã«æ²¿ã£ã¦SQLã®ãŠå‹‰å¼·ï¼‹DB2ã¨ä»²è‰¯ããªã‚‹æ™‚é–“ã¨ãªã£ã¦ã„ã¾ã—ãŸã€‚終了時間ã¾ã§ã¯ä½•ã‚’ã—ã¦ã‚‚OKï¼
SQLã¯ã ã„ãŸã„知ã£ã¦ã„ã‚‹ã®ã§ãƒ†ã‚ストã¯ã™ãã«çµ‚ã‚りã¾ã—ãŸã€‚ã§ã™ã®ã§ã€æ™®æ®µè§¦ã‚‹ã“ã¨ã®ãªã„DB2ã§ã„ã‚ã„ã‚éŠã‚“ã§ã„ã¾ã—ãŸã€‚
・fromテーブルã®ä½œæˆ
 DB2ã§ã¯SQLã®å˜èªžã‚’テーブルåやカラムåã«è¨å®šã§ãã‚‹ã¨è¨€ã†ã“ã¨ã‚’èžã„ã¦ã„ãŸã®ã§è©¦ã—ã¦ã¿ã¾ã—ãŸã€‚
CREATE TABLE FROM(
SELECT SMALLINT,
FROM SMALLINT,
WHERE SMALLINT,
GROUP_BY SMALLINT,
ORDER_BY SMALLINT
);
 ãã—ã¦ã€é©å½“ãªãƒ‡ãƒ¼ã‚¿ã‚’挿入ã—ã€SELECT。
SELECT FROM FROM FROM
ã¨ã‹
SELECT SELECT FROM FROM WHERE WHERE ORDER BY ORDER_BY
ã¨ã„ã†å®Ÿå‹™ã§ç™ºè¦‹ã—ãŸã‚‰ã¶ã¡ãŽã‚Œãã†ãªSQLを実行ã—ã¦æ¥½ã—ã¿ã¾ã—ãŸã€‚
・新ãƒãƒƒã‚¯æ©Ÿèƒ½"CS with CC"ã®ä½“験
 何ã¨ã„ã†è¨€è‘‰ã®çŸç¸®å½¢ã ã‹ã¯å¿˜ã‚Œã¦ã—ã¾ã„ã¾ã—ãŸãŒï¼ˆCCã¯"Currently Committed")ã€Oracleã«è¿‘ã„å‹•ããŒã§ãるよã†ã«è¿½åŠ ã•れãŸã‚‰ã—ã„ã§ã™ã€‚
 DB2ã®å…ƒã€…ã®å‹•ãã¨ã—ã¦ã¯ã€ãƒ†ãƒ¼ãƒ–ルAã®ãƒ‡ãƒ¼ã‚¿ã‚’UPDATEã—ã¦æœªã‚³ãƒŸãƒƒãƒˆçŠ¶æ…‹ã§ã„ã‚‹å ´åˆã€ã»ã‹ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒãƒ†ãƒ¼ãƒ–ルAã‚’SELECTã—ã¦ã‚‚ãƒãƒƒã‚¯ãŒã‹ã‹ã£ã¦ã„る状態ãªã®ã§ãƒ‡ãƒ¼ã‚¿ã®å–å¾—ãŒã§ãã¾ã›ã‚“。
 今回新ã—ãè¿½åŠ ã•れãŸã“ã®æ©Ÿèƒ½ã‚’有効ã«ã—ãŸå¾Œã«ä¸Šè¨˜ã¨åŒã˜SQLを実行ã™ã‚‹ã¨ã€å¤‰æ›´å‰ã®ãƒ‡ãƒ¼ã‚¿ã‚’èªã¿è¾¼ã‚“ã§ãã¦ãれã¾ã™ã€‚
 ã“れãŒè‰¯ã„ã‹æ‚ªã„ã‹ã¯ç¾å ´ã«ã‚ˆã‚Šã¾ã™ã。
・CLP Plus
 ãªã‚“ã ã‹Oracleã«è¿Žåˆã—ã¦ã„るよã†ãªæ°—ãŒã—ã¾ã™ãŒã€SQL *Plusã«ã‹ãªã‚Šè¿‘ã„æ„Ÿã˜ã§ã‚ªãƒšãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
 dual表を使用ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã—ã€è¡¨ç¤ºãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã‚’Oracleã®ã‚³ãƒžãƒ³ãƒ‰ã§è¨å®šã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ï¼ˆ"set pages"ã‚„"set lin"ãªã©ï¼‰ã€‚
 ãŠå‹‰å¼·ãŒçµ‚ã‚ã£ãŸã‚‰IBMã®äººã¨ã€Club DB2ã«å‚åŠ ã—ãŸäººãŸã¡ã¨ã®æ‡‡è¦ªä¼šã«è¡Œãã¾ã—ãŸã€‚
 土曜日ã«å‹‰å¼·ãƒ»ãƒ»ãƒ»ã¨ã„ã†æ„Ÿã˜ã§ã™ãŒã€é”æˆæ„Ÿã®ã‚ã‚‹åˆå¾Œã§ã—ãŸã€‚