- 1 1. ã¯ããã«
- 2 2. ALTER TABLE ⊠MODIFY/CHANGE ã®åºæ¬
- 3 3. è€æ°ã«ã©ã ã®äžæ¬å€æŽ
- 4 4. å¶çŽã»ããã©ã«ãã»NULL屿§ã®åãæ±ã
- 5 5. ããã©ãŒãã³ã¹ã»éçšäžã®æ³šæ
- 6 6. ãããããšã©ãŒãšãã©ãã«ã·ã¥ãŒã
- 7 7. å®çš Tipsã»å¿çš
- 7.1 7.1 DDLïŒALTERæïŒã®ããŒãžã§ã³ç®¡ç
- 7.2 7.2 DBãã€ã°ã¬ãŒã·ã§ã³ããŒã«ã®æŽ»çš
- 7.3 7.3 ãã¹ãç°å¢ã§ã®äºåæ€èšŒ
- 7.4 7.4 CI/CDãã€ãã©ã€ã³ã§ã®èªåå
- 7.5 7.5 ããŒã«ããã¯æŠç¥ãšã¢ãŒã«ã€ã
- 7.6 7.6 å ¬åŒããã¥ã¡ã³ãã»ãªãã¡ã¬ã³ã¹ã®æŽ»çš
- 8 8. ãŸãšã
1. ã¯ããã«
MySQLã®ããŒãã«èšèšãéçšãé²ããäžã§ãåŸãããã«ã©ã ã®ããŒã¿åã倿Žãããããšèããçµéšã¯ãããŸãããïŒããšãã°ãæåã¯VARCHAR(50)
ã§ååã ãšæã£ãŠããã«ã©ã ããå®éã®ããŒã¿éãå¢ããããšã§ããã£ãšå€§ããªåãå¿
èŠã ããšæ°ã¥ããããæ°å€ã®æ¡æ°ãæ³å®ããå€ããªã£ãããšã§INT
ããBIGINT
ãžå€æŽããããªãå Žé¢ã¯çãããããŸããã
ãããããã«ã©ã åã®å€æŽãã¯ãMySQLãé·ã䜿ãã»ã©é¿ããŠéããªãäœæ¥ã®äžã€ã§ããããããããæ¹ãééãããšããŒã¿æå€±ããµãŒãã¹åæ¢ãªã©æãã¬ãã©ãã«ã«ã€ãªããããšãããšãã«æ¬çªéçšäžã®ããŒã¿ããŒã¹ã§ã¯ãã«ã©ã åã®å€æŽãã·ã¹ãã å šäœãžäžãã圱é¿ã倧ãããæ éãªå¯Ÿå¿ãæ±ããããŸãã
ãã®èšäºã§ã¯ãMySQLã§ãã«ã©ã åãå®å šãã€å¹ççã«å€æŽããæ¹æ³ãã«ã€ããŠãå®éã®çŸå Žã§ãã䜿ãããALTER TABLEæã®å ·äœäŸãäžå¿ã«ããããã倱æãã¿ãŒã³ã泚æç¹ããã©ãã«ã·ã¥ãŒããŸã§ç¶²çŸ çã«è§£èª¬ããŸããåãªãæ§æã®ç޹ä»ã«ãšã©ãŸãããçŸå Žã§åœ¹ç«ã€å®è·µçãªããŠããŠãçã蟌ã¿ãŸããã
ãMySQLã®ã«ã©ã åã倿Žããããã©ãã©ããªæé ãæ³šæç¹ãããã®ïŒããšæããŠããæ¹ããæ¥ã ã®éçšãããå®å šã»ç¢ºå®ã«é²ãããæ¹ã¯ããã²æ¬èšäºãåèã«ããŠãã ãããããªãã®ããŒã¿ããŒã¹éçšãããã£ãšæè»ã§å®å¿ãªãã®ã«ããããã®ç¥èããå±ãããŸãã
2. ALTER TABLE ⊠MODIFY/CHANGE ã®åºæ¬
MySQLã§ã«ã©ã ã®ããŒã¿åã倿Žããå Žåãæããã䜿ãããã®ã ALTER TABLE
æã§ãããã®ã³ãã³ãã¯ããŒãã«ã®æ§é ãã®ãã®ã倿Žããããã®ãã®ã§ãã«ã©ã ã®è¿œå ã»åé€ã»å倿Žãªã©ãå¹
åºãçšéã«å¯Ÿå¿ããŠããŸãã
ã«ã©ã åã®å€æŽã«ã¯ãäž»ã«ãMODIFYããšãCHANGEãã®2ã€ã®æ§æãååšããŸããããããã®äœ¿ãæ¹ãéããçè§£ããããšã§ãããé©åã«ã«ã©ã ã®åã倿Žã§ããããã«ãªããŸãã
2.1 MODIFY ãš CHANGE ã®éã
- MODIFY
MODIFY
ã¯ã«ã©ã ã®ããŒã¿åã屿§ïŒNOT NULL, DEFAULT ãªã©ïŒã倿Žããããšãã«äœ¿ããŸããã«ã©ã åèªäœã¯å€æŽãããŸããã - CHANGE
CHANGE
ã¯ã«ã©ã åãã®ãã®ãå€ããããšãã«å©çšããŸãããã ããåã屿§ãåæã«æå®ããå¿ èŠããããŸãã
2.2 åºæ¬æ§æãšäœ¿çšäŸ
ALTER TABLE ããŒãã«å MODIFY ã«ã©ã å æ°ããããŒã¿å [屿§];
ALTER TABLE ããŒãã«å CHANGE å€ãã«ã©ã å æ°ããã«ã©ã å æ°ããããŒã¿å [屿§];
2.3 å®éã®äœ¿çšäŸ
ããšãã°ããusersãããŒãã«ã®ãnameãã«ã©ã ã®åã VARCHAR(50)
ãã TEXT
ã«å€æŽãããå Žåã¯ã以äžã®ããã«èšè¿°ããŸãã
ALTER TABLE users MODIFY name TEXT;
ãŸãããageãã«ã©ã ã®ååããuser_ageãã«å€æŽãããã€åã INT
ãã BIGINT
ã«å€ãããå Žåã¯ã次ã®ãããªSQLã«ãªããŸãã
ALTER TABLE users CHANGE age user_age BIGINT;
2.4 泚æç¹
CHANGE
ã䜿ãå Žåã¯ãã«ã©ã åã®å€æŽãäžèŠã§ããæ°ããã«ã©ã åããšãããŒã¿åãã®äž¡æ¹ãæå®ããªããã°ãªããŸãããäžæ¹ã§ãååã倿Žããåã ããå€ãããå Žå㯠MODIFY
ãã·ã³ãã«ã§ããããã§ãã
ãã®ããã«ããMODIFYããšãCHANGEãã¯äŒŒãŠããããã§çšéãç°ãªããŸããã©ã¡ãã䜿ãã¹ããç¶æ³ã«å¿ããŠéžæã§ããããã«ãªãã°ãMySQLã®ããŒãã«èšèšã»éçšã®å¹ ããã£ãšåºãããŸãã
3. è€æ°ã«ã©ã ã®äžæ¬å€æŽ
MySQLã§ã¯ãALTER TABLEæã䜿ã£ãŠè€æ°ã®ã«ã©ã ãåæã«å€æŽããããšãã§ããŸããè€æ°ã®ã«ã©ã åãåå¥ã«äœåºŠãALTER TABLEæã§å®è¡ãããšããã®ãã³ã«ããŒãã«ãããã¯ãããããããã©ãŒãã³ã¹ã«æªåœ±é¿ãäžããå ŽåããããŸãããã®ãããã§ããã ã1åã®æäœã§ãŸãšããŠå€æŽããã®ããã¹ããã©ã¯ãã£ã¹ã§ãã
3.1 åºæ¬æ§æãšäœ¿ãæ¹
è€æ°ã®ã«ã©ã ãäžåºŠã«å€æŽããã«ã¯ãALTER TABLEæã®äžã§å€æŽå
容ãã«ã³ãåºåãã§äžŠã¹ãŸãã
äŸãã°ã2ã€ã®ã«ã©ã ãemailããšãscoreãã®åã屿§ã倿Žãããå Žåã¯ã次ã®ããã«èšè¿°ããŸãã
ALTER TABLE users
MODIFY email VARCHAR(255) NOT NULL,
MODIFY score INT UNSIGNED DEFAULT 0;
ãã®ããã«ãã«ã³ãã§åºåã£ãŠè€æ°ã®MODIFYãCHANGEæãé£ããããšã§ãäžåºŠã«è€æ°ã«ã©ã ã®å€æŽãåæ ã§ããŸãã
3.2 CHANGE ã䜿ã£ãè€æ°å€æŽã®äŸ
ã«ã©ã åã®å€æŽãšå倿Žãäžæ¬ã§è¡ãå Žåãåæ§ã«å¯èœã§ãã
ALTER TABLE users
CHANGE nickname user_nickname VARCHAR(100),
CHANGE points user_points BIGINT;
3.3 å®éã«è€æ°ã«ã©ã ãäžæ¬å€æŽããã¡ãªãã
- ããã©ãŒãã³ã¹ã®åäž
1åã®ALTER TABLEå®è¡ã§æžããããããŒãã«ãããã¯ãããæéãæå°éã«æããããŸãã - ã¡ã³ããã³ã¹å¹çã¢ãã
ã¹ã¯ãªããããã€ã°ã¬ãŒã·ã§ã³ããŒã«ã§ç®¡çããéã«ããè€æ°ã®å€æŽããŸãšããŠèšè¿°ã§ãããã管çãæ¥œã«ãªããŸãã - ãšã©ãŒçºçæã®äžè²«æ§ç¢ºä¿
ãŸãšããŠå®è¡ããããšã§ãéäžã§å€±æããå Žåã«å€æŽãããŒã«ããã¯ããããããªããããŒã¿ã®æŽåæ§ãä¿ãŠãŸãã
3.4 泚æç¹ãšTIPS
- æžåŒãã¹ã«æ³šæ
ã«ã³ãã®æã¡ééãããMODIFYã»CHANGEã®äœ¿ãåããééãããšãšã©ãŒã®åå ã«ãªããããSQLã¯äºåã«ãã¹ãç°å¢ã§åäœç¢ºèªããŸãããã - å€§èŠæš¡ããŒãã«ã§ã¯åœ±é¿ç¯å²ã確èª
äžæ¬å€æŽã¯äŸ¿å©ã§ããã倧ããªããŒãã«ã®å Žåã¯æ³å®ä»¥äžã®æéããããå ŽåããããŸãã宿œåã«ããã¯ã¢ãããåããªã©ãå®å šå¯Ÿçãå¿ããã«ã
è€æ°ã«ã©ã ã®äžæ¬å€æŽã¯ãå¹ççãã€å®å šãªããŒãã«ç®¡çã«æ¬ ãããªããã¯ããã¯ã§ãããã²èŠããŠãããŸãããã
4. å¶çŽã»ããã©ã«ãã»NULL屿§ã®åãæ±ã
ã«ã©ã ã®åã倿Žããéã«ã¯ãå¶çŽïŒNOT NULLãUNIQUEãªã©ïŒãããã©ã«ãå€ãNULLèš±å¯ïŒäžèš±å¯ã®èšå®ã«ã泚æãå¿ èŠã§ãããããã®å±æ§ã¯ãã«ã©ã åã倿Žãããšãã«æå³ãã倱ããããã倿Žåãšç°ãªãç¶æ ã«ãªãå ŽåããããŸãã
4.1 MODIFYïŒCHANGEã§çºçããããèœãšã穎
MySQLã§MODIFY
ãCHANGE
ã䜿ã£ãŠã«ã©ã ã®åã倿Žããå Žåãå
ã
èšå®ãããŠããå¶çŽãããã©ã«ãå€ãæç€ºçã«æå®ããªããšããã®æ
å ±ãæ¶ããŠããŸãããšããããŸãã
ããšãã°ã次ã®ãããªã«ã©ã ããã£ããšããŸãã
CREATE TABLE members (
id INT PRIMARY KEY,
status VARCHAR(20) NOT NULL DEFAULT 'active'
);
ãã®ãstatusãã«ã©ã ã®åãVARCHAR(50)
ã«å€æŽããããšããããæ¬¡ã®ããã«æžããšââ
ALTER TABLE members MODIFY status VARCHAR(50);
å ã ãã£ããNOT NULLããšãDEFAULT ‘active’ããæ¶ããŠããŸãããstatusãã«ã©ã ã¯NULLèš±å¯ã»ããã©ã«ãå€ãªãã®ç¶æ ã«ãªããŸãã
4.2 å¶çŽãããã©ã«ãå€ãç¶æããæ¹æ³
å¶çŽãããã©ã«ãå€ãä¿æãããŸãŸå倿Žãè¡ãã«ã¯ãå¿ ãæ¢åã®å±æ§ããã¹ãŠæå®ãçŽãå¿ èŠããããŸãã
ALTER TABLE members MODIFY status VARCHAR(50) NOT NULL DEFAULT 'active';
ãã®ããã«æžãã°ãåãå€ããŠãå ã®å¶çŽãããã©ã«ãå€ãç¶æã§ããŸãã
4.3 NULLå¶çŽã®æ³šæç¹
- NOT NULLæå®ãå€ãå Žå
æç€ºçã«NULL
ãšæžãããšã§ã«ã©ã ã®NULLèš±å¯ç¶æ ã倿Žã§ããŸãã - NOT NULLã«å€ããå Žå
æ¢åããŒã¿ã«NULLãå«ãŸããŠãããšãšã©ãŒã«ãªããããäºåã«NULLãåããïŒUPDATEããïŒå¿ èŠããããŸãã
4.4 ä»ã®å¶çŽãšã®é¢ä¿
- UNIQUEãINDEXãªã©
å倿޿ã«åœ±é¿ãåããããšããããããéèŠãªã€ã³ããã¯ã¹ãäžæå¶çŽã«ã€ããŠã倿ŽåŸã«å確èªããŸãããã - CHECKå¶çŽïŒMySQL 8.0以éïŒ
CHECKå¶çŽãèšå®ãããŠããå Žåãåã倿Žãããšå¶çŽæ¡ä»¶ãæºãããªããªãããšãããã®ã§èŠæ³šæã§ãã
4.5 ãŸãšã
ã«ã©ã å倿޿ã¯ãå¶çŽãããã©ã«ãå€ãNULL屿§ãªã©ãå¿ ãæç€ºçã«æå®ããŸãããããã£ããæå®ãçç¥ãããšãããŒãã«ã®ä»æ§ãå€ãã£ãŠããŸããæãã¬ãã°ãé害ã®åå ãšãªããŸããALTER TABLEæãçºè¡ããåã«ã¯ãå¿ ãçŸç¶ã®ã«ã©ã å®çŸ©ã確èªããå¿ èŠãªå±æ§ãåŒãç¶ãããšã倧åã§ãã
5. ããã©ãŒãã³ã¹ã»éçšäžã®æ³šæ
ã«ã©ã ã®å倿Žã¯åãªãSQLæã®å®è¡ãšæãããã¡ã§ãããå®éã®éçšçŸå Žã§ã¯ããã©ãŒãã³ã¹ãã·ã¹ãã å šäœãžã®åœ±é¿ã匷ãæèããå¿ èŠããããŸãããšãã«ããŒã¿éãå€ãæ¬çªããŒãã«ã§ALTER TABLEæãå®è¡ããå Žåã¯ãæ éãªå¯Ÿå¿ãæ±ããããŸãã
5.1 ããŒãã«ããã¯ãšããŠã³ã¿ã€ã
MySQLã§ALTER TABLEã«ããå倿Žãè¡ãéãå€ãã®å ŽåããŒãã«å
šäœãããã¯ãããŸãããã®éãä»ã®ã¯ãšãªããããŒãã«ã«ã¢ã¯ã»ã¹ã§ããªããªãããµãŒãã¹ã«äžæçãªããŠã³ã¿ã€ã ãçºçããå¯èœæ§ããããŸãã
ãšãã«å€§èŠæš¡ããŒãã«ã§ã¯ãå倿Žã®å®è¡ã«æ°åããå Žåã«ãã£ãŠã¯æ°åå以äžãããããšãçãããããŸããã
5.2 ããŒãã«ã³ããŒæ¹åŒãšã€ã³ãã¬ãŒã¹æ¹åŒ
MySQLã§ã¯ALTER TABLEã®å éšåŠçãšããŠããŒãã«ã³ããŒæ¹åŒãšã€ã³ãã¬ãŒã¹æ¹åŒã®2çš®é¡ããããŸãã
- ããŒãã«ã³ããŒæ¹åŒ
æ°ããããŒãã«ãäœæããå šããŒã¿ãã³ããŒããŠããå€ãããŒãã«ã眮ãæããŸããããŒã¿éãå€ãå Žåã¯ãã®å·¥çšãããã«ããã¯ãšãªããŸãã - ã€ã³ãã¬ãŒã¹æ¹åŒ
æ¢åããŒãã«ã®æ§é ãå¯èœãªéãç¶æããªãã倿Žãè¡ããããããã¯æéãççž®ãããããã§ãããã ãããã¹ãŠã®å倿Žãã€ã³ãã¬ãŒã¹ã§å¯Ÿå¿ã§ããããã§ã¯ãããŸããã
ã©ã¡ãã®æ¹åŒãæ¡çšããããã¯ã倿Žå 容ãMySQLã®ããŒãžã§ã³ã»ã¹ãã¬ãŒãžãšã³ãžã³ïŒäž»ã«InnoDBïŒã«ãã£ãŠç°ãªããŸãã
5.3 ALGORITHMãªãã·ã§ã³ã®æŽ»çš
MySQL 5.6以éã§ã¯ãALTER TABLEæã«ALGORITHM
ãªãã·ã§ã³ãä»ããŠãã©ã®æ¹åŒã§åŠçãããæå®ã§ããŸãã
ALTER TABLE users MODIFY name TEXT, ALGORITHM=INPLACE;
ãã®ããã«æå®ããããšã§ãã€ã³ãã¬ãŒã¹æ¹åŒã匷å¶ããåŠçäžã«ãšã©ãŒã«ãªã£ãå Žåãå³åº§ã«æ°ã¥ããŸãïŒã€ã³ãã¬ãŒã¹å¯Ÿå¿äžå¯ã®å Žåã¯ãšã©ãŒã«ãªããŸãïŒã
5.4 ããã¯ã¢ãããšããŒã«ããã¯å¯Ÿç
ã«ã©ã å倿Žã¯ããŒã¿ããŒã¹å šäœã«åœ±é¿ããéå€§ãªæäœã§ãã
- äºåã«ãã«ããã¯ã¢ãããååŸãã
- å¯èœã§ããã°ã¹ããŒãžã³ã°ç°å¢ã§äºåæ€èšŒãã
- 倱ææã«ããããŒã«ããã¯ã§ããããããªã¹ãã¢æé ãçšæããŠãã
ãããã®å¯Ÿçã培åºããããšããå®å šãªéçšã®ããã«äžå¯æ¬ ã§ãã

5.5 æ¬çªç°å¢ã§ã®ãã¹ããã©ã¯ãã£ã¹
- ããŒã¯æé垯ãé¿ããŠå®æœ
å¯èœãªéãã¢ã¯ã»ã¹ã®å°ãªãæ·±å€ãäŒæ¥ã«å®æœããŸãããã - å®è¡ååŸã§å¿
ãããŒã¿ãã§ãã¯
倿ŽååŸã§ä»¶æ°ãã€ã³ããã¯ã¹ãå¶çŽãæ£ããç¶æãããŠãããå¿ ã確èªããŸãã - 倿Žå±¥æŽã®èšé²
ã©ã®ã«ã©ã ãã©ã®ããã«å€æŽããããSQLæãšãšãã«èšé²ãæ®ããŠããããšã§ããã©ãã«æã«åå ãç¹å®ãããããªããŸãã
å倿Žã¯äŸ¿å©ãªåé¢ãã·ã¹ãã ã«äžããã€ã³ãã¯ãã倧ããæäœã§ããäºåæºåã»å®æœã¿ã€ãã³ã°ã»æ€èšŒã»ããã¯ã¢ããã®4ç¹ã培åºããããšãããã©ãã«é²æ¢ã®ã«ã®ãšãªããŸãã
6. ãããããšã©ãŒãšãã©ãã«ã·ã¥ãŒã
MySQLã§ã«ã©ã åã倿Žããéãæãã¬ãšã©ãŒããã©ãã«ã«çŽé¢ããããšããããŸããäºåã«ãã©ããªå€±æãèµ·ããããããããšãã®å¯ŸåŠæ³ãç¥ã£ãŠããããšã§ãã¹ã ãŒãºãªéçšãå¯èœã«ãªããŸããããã§ã¯ãå®éã«ããééãããšã©ãŒãšããã®è§£æ±ºçããŸãšããŸãã
6.1 ããŒã¿å倿ãšã©ãŒ
åã倿Žããéãæ¢åããŒã¿ãæ°ããåã®å¶çŽãæºãããŠããªããšãšã©ãŒãçºçããŸãã
- äŸïŒ
VARCHAR(5)
ããINT
ã«å€æŽããããšãããšãæååããŒã¿ãæŽæ°ã«å€æã§ããªãå Žåã«ãšã©ãŒ - 察çïŒäºåã«å€æã§ããªãããŒã¿ããªãããã§ãã¯ããå¿ èŠã«å¿ããŠããŒã¿ãä¿®æ£ïŒäŸïŒäžæ£ãªå€ãUPDATEãDELETEã§é€å»ïŒ
6.2 NULLå¶çŽéå
ã«ã©ã ãNOT NULL
ã«å€æŽããå Žåãæ¢åããŒã¿ã«NULLå€ãå«ãŸããŠãããšãšã©ãŒã«ãªããŸãã
- 察çïŒå€æŽåã«NULLãå«ãããŒã¿ãUPDATEã§é©åãªå€ã«çœ®ãæããŠãã
UPDATE users SET score = 0 WHERE score IS NULL;
6.3 ããã©ã«ãå€ã®æ¶å€±
å倿޿ã«DEFAULT
屿§ãåæå®ããªããšãããã©ã«ãå€ãæ¶å€±ããäºæãã¬æåããšã©ãŒã«ã€ãªãããŸãã
- 察çïŒALTER TABLEæã§å¿ ãå ã®DEFAULT屿§ãåæå®ãã
6.4 ã€ã³ããã¯ã¹ãUNIQUEå¶çŽãžã®åœ±é¿
å倿Žã«ãã£ãŠã€ã³ããã¯ã¹ã®æå¹æ§ã倱ãããããUNIQUEå¶çŽéåãçºçããããšããããŸãã
- äŸïŒæ¡æ°ãçž®å°ããŠéè€ããŒã¿ãçããã±ãŒã¹
- 察çïŒå€æŽåã«å¯Ÿè±¡ã«ã©ã ã®éè€ãå¶çŽéåãçºçããªãã確èªãã
6.5 å€éšããŒå¶çŽã®ãšã©ãŒ
å€éšããŒå¶çŽãèšå®ãããŠããã«ã©ã ãå倿Žããå Žåãåç §å ããŒãã«ã®ã«ã©ã åãšäžèŽããŠããªããšãšã©ãŒãçºçããŸãã
- 察çïŒåç §å ã®ã«ã©ã åãåãããã«å€æŽããããå€éšããŒå¶çŽãäžæçã«åé€ããŠããå倿Žãè¡ã
6.6 ãã©ãã«çºçæã®ãã§ãã¯æ¹æ³
SHOW WARNINGS;
ã§çŽè¿ã®ãšã©ãŒãèŠåã確èªããDESCRIBE ããŒãã«å;
ã§ããŒãã«å®çŸ©ãå確èªãã- MySQLã®ãšã©ãŒãã°ããã§ãã¯ãã
6.7 倿Žã®åãæ¶ãïŒããŒã«ããã¯ïŒ
ALTER TABLEæã¯ååããŒã«ããã¯ã§ããŸããã誀ã£ãå倿Žãããå Žåãããã¯ã¢ããããã®ãªã¹ãã¢ãå¿ èŠã«ãªããŸãã
- 察çïŒäºåã«ããã¯ã¢ãããå¿ ãååŸããŠãã
- ããã¯ã¢ããããç¹å®ããŒãã«ã®ã¿ãªã¹ãã¢ã§ããããã«ããŠãããšå®å¿
ã«ã©ã åã®å€æŽã¯çްããªèœãšã穎ãå€ãäœæ¥ã§ãããšã©ãŒããã©ãã«ã®ãã¿ãŒã³ãç¥ããäºåã«ãã£ãããšæºåã»ç¢ºèªãè¡ãããšã§ãå®å®ããéçšã«ã€ãªããŸãããã
7. å®çš Tipsã»å¿çš
MySQLã®ã«ã©ã å倿Žã¯ãåçŽãªALTER TABLEæã®éçšã ãã§ãªããããŸããŸãªå Žé¢ã§å·¥å€«ãå¿çšãæ±ããããäœæ¥ã§ãããã®ç« ã§ã¯ãçŸå Žã§åœ¹ç«ã€ãã¯ããã¯ãå¹çåã®æ¹æ³ãããã«ã¯ç¶ç¶çãªéçšãèŠæ®ããç®¡çæ¹æ³ã«ã€ããŠè§£èª¬ããŸãã
7.1 DDLïŒALTERæïŒã®ããŒãžã§ã³ç®¡ç
è€æ°äººã§éçºã»éçšããŠãããããžã§ã¯ãããã¹ããŒãžã³ã°ã»æ¬çªç°å¢ã§ããŒãã«æ§é ã管çããå ŽåãALTER TABLEæãªã©DDLã®ããŒãžã§ã³ç®¡çãéåžžã«éèŠã§ãã
代衚çãªæ¹æ³ã¯ãGitãªã©ã®ããŒãžã§ã³ç®¡çã·ã¹ãã ã«DDLã¹ã¯ãªãããä¿åãããã€ã»èª°ãã»ã©ããªçç±ã§åã倿Žãããå±¥æŽãæ®ãããšã§ããããã«ããããã©ãã«çºçæã®åå ç¹å®ãè¿
éãªããŒã«ããã¯ãå¯èœã«ãªããŸãã
7.2 DBãã€ã°ã¬ãŒã·ã§ã³ããŒã«ã®æŽ»çš
è¿å¹Žã¯ãDBãã€ã°ã¬ãŒã·ã§ã³ããŒã«ïŒäŸïŒFlyway, Liquibase, Railsã®Active Record Migrationsãªã©ïŒã掻çšããããšã§ãALTER TABLEãèªååã»å®å
šã«ç®¡çã§ããŸãã
ãã€ã°ã¬ãŒã·ã§ã³ããŒã«ã䜿ãããšã§ã
- æ¬çªãšéçºã®æ§é ã®ãºã¬ãé²ã
- è€æ°ç°å¢ãžã®åæé©çšãç°¡å
- 倿Žå±¥æŽãç¶æ
ãå¯èŠåã§ãã
ãšãã£ãã¡ãªããããããŸãã
7.3 ãã¹ãç°å¢ã§ã®äºåæ€èšŒ
å倿Žã«ãã圱é¿ã¯ãå®éã«åäœãããŠã¿ãªããšåãããªãããšãå€ãã§ãã
- ãŸãã¯ãã¹ãçšã®ãããŒããŒãã«ãäœæããŠALTER TABLEæã詊ãããšã©ãŒãæå³ããªãåäœããªããã確èªããŸãããã
- ããŒã¿ç§»è¡ãå倿ã®åäœç¢ºèªãäºåã«æžãŸããããšã§ãæ¬çªç°å¢ã§ã®ãã©ãã«ã倧ããæžãããŸãã
7.4 CI/CDãã€ãã©ã€ã³ã§ã®èªåå
è¿å¹Žã§ã¯ãCI/CDïŒç¶ç¶çã€ã³ãã°ã¬ãŒã·ã§ã³ïŒç¶ç¶çããªããªãŒïŒã®äžç°ãšããŠãDDLã®å€æŽãèªåãã¹ãã»èªåé©çšã®ããã»ã¹ã«çµã¿èŸŒãã®ãäž»æµã§ãã
- äŸãã°ãGitãžã®DDLã³ãããæã«èªåãã¹ãç°å¢ã§é©çšããåé¡ãªããã°æ¬çªåæ
- 倱æããå Žåã¯å³åº§ã«éç¥ïŒããŒã«ããã¯
ãã®ãããªãããŒãåãå ¥ããããšã§ããã¥ãŒãã³ãšã©ãŒãéçšè² æ ã倧ããæžãããŸãã
7.5 ããŒã«ããã¯æŠç¥ãšã¢ãŒã«ã€ã
é倧ãªå倿ŽãäžåºŠããã®å€§èŠæš¡ãªå€æŽæã¯ãããŒã«ããã¯æŠç¥ãèããŠãããŸãããã
- 倿ŽååŸã®ããŒãã«ãäžæçã«ã¢ãŒã«ã€ããã
- å¿ èŠã«å¿ããŠæ°æ§ããŒãã«ãäžæçã«äœµåãããç§»è¡æéãèšãã
- 倱ææã«ã¯ããæ§ããŒãã«ã«æ»ããããã«ã¹ã¯ãªãããæºåããŠãã
7.6 å ¬åŒããã¥ã¡ã³ãã»ãªãã¡ã¬ã³ã¹ã®æŽ»çš
MySQLã®ããŒãžã§ã³ã«ãã£ãŠALTER TABLEã®æåã察å¿ç¶æ³ãç°ãªãå ŽåããããŸãã
ææ°ã®MySQLå
¬åŒããã¥ã¡ã³ãããå©çšäžã®ã¹ãã¬ãŒãžãšã³ãžã³ïŒInnoDB, MyISAMãªã©ïŒã®ä»æ§ãäºåã«å¿
ã確èªããŠãããŸãããã
ããããå®çšçãªããŠããŠãå¿çšãã¯ããã¯ã身ã«ã€ããããšã§ãMySQLã®ã«ã©ã å倿Žãããå®å šãã€å¹ççã«éçšã§ããããã«ãªããŸããçŸå Žã§åœ¹ç«ã€äžæãšããŠããã²ã掻çšãã ããã
8. ãŸãšã
MySQLã®ã«ã©ã å倿Žã¯ãããŒãã«èšèšãã·ã¹ãã éçšã®äžã§ããšãŠãéèŠãªäœæ¥ã®ã²ãšã€ã§ããé©åãªæé ãæ³šæç¹ãçè§£ããŠãããªããšãããŒã¿æ¶å€±ããµãŒãã¹åæ¢ãããã©ãŒãã³ã¹ã®äœäžãšãã£ãæ·±å»ãªãã©ãã«ã«çºå±ããããšããããŸãã
æ¬èšäºã§ã¯ããALTER TABLEãæã«ããåºæ¬çãªã«ã©ã åã®å€æŽæ¹æ³ãããè€æ°ã«ã©ã ã®äžæ¬å€æŽãå¶çŽãããã©ã«ãå€ã®æ±ããéçšäžã®ããã©ãŒãã³ã¹æ³šæç¹ããããããšã©ãŒããã©ãã«ã®å¯ŸåŠæ³ãããã«ã¯çŸå Žã§åœ¹ç«ã€å®çšçãªãã¯ããã¯ãŸã§ãå¹ åºã解説ããŠããŸããã
ç¹ã«å€§åãªãã€ã³ããæ¯ãè¿ããšã以äžã®5ç¹ãæããããŸãã
- å倿޿ã¯å¶çŽãããã©ã«ãå€ãå¿ ãæç€ºçã«æå®ããããš
- å€§èŠæš¡ããŒãã«ã§ã¯ããã©ãŒãã³ã¹ãããŠã³ã¿ã€ã ã«ååæ³šæããããš
- ãšã©ãŒããã©ãã«ã®ãã¿ãŒã³ãç¥ããäºåã«ããŒã¿ã®ç¶æ ããã§ãã¯ããããš
- DDLã®å±¥æŽç®¡çããã€ã°ã¬ãŒã·ã§ã³ããŒã«ã®æŽ»çšã§äœæ¥ã®åçŸæ§ã»å®å šæ§ãé«ããããš
- å¿ ãããã¯ã¢ãããåããããŒã«ããã¯æé ãçšæããŠããããš
ããããæèããŠå®è·µããããšã§ãMySQLã®ã«ã©ã å倿Žã«é¢ãããªã¹ã¯ãæå°éã«æããããå®å šã§å¹ççãªããŒã¿ããŒã¹éçšãå®çŸã§ããŸãã
ããããã«ã©ã åã®å€æŽã«åãçµãæ¹ããæ¥ã ã®éçšãèŠçŽãããæ¹ãããã²ä»åã®å 容ãçŸå Žã§æŽ»ãããŠããã ããã°å¹žãã§ãã