- 1 1. ã¯ããã«
- 2 2. UPDATEæã®åºæ¬æ§æ
- 3 3. SELECTæã䜿ã£ãUPDATEã®å¿çš
- 4 4. å¹ççãªUPDATEã®ãã¯ããã¯
- 5 5. 泚æç¹ãšãã¹ããã©ã¯ãã£ã¹
- 6 6. FAQïŒãããã質åïŒ
- 6.1 Q1: UPDATEæã§è€æ°ã®ããŒãã«ãåæã«æŽæ°ã§ããŸããïŒ
- 6.2 Q2: UPDATEæã®ããã©ãŒãã³ã¹ãåäžãããã«ã¯ã©ãããã°ããã§ããïŒ
- 6.3 Q3: UPDATEæã§ãµãã¯ãšãªã䜿çšããéã®æ³šæç¹ã¯äœã§ããïŒ
- 6.4 Q4: ãã©ã³ã¶ã¯ã·ã§ã³ã䜿ããã«UPDATEãè¡ããšã©ããªããŸããïŒ
- 6.5 Q5: UPDATEæã§æ¡ä»¶ãæå®ããã«å®è¡ããŠããŸã£ãå Žåãã©ã察åŠããã°ããã§ããïŒ
- 6.6 Q6: MySQLã§UPDATEæã䜿ã£ãéã«DeadlockãçºçããŸãããã©ãããã°ããã§ããïŒ
- 7 7. ãŸãšã
1. ã¯ããã«
MySQLã¯ãå€ãã®ãŠã§ãã¢ããªã±ãŒã·ã§ã³ãã·ã¹ãã ã§å©çšãããäž»èŠãªããŒã¿ããŒã¹ç®¡çã·ã¹ãã ã§ãããã®äžã§ããããŒã¿ã®æŽæ°ãã¯ãæ¥ã
ã®éçšã«ãããŠé¿ããŠéããªãæäœã§ããç¹ã«ãæ¢åã®ããŒã¿ãä»ã®ããŒãã«ãèšç®çµæã«åºã¥ããŠæŽæ°ããå Žé¢ã§ã¯ãUPDATE
æãšSELECT
æãçµã¿åãããæ¹æ³ãå¿
èŠã§ãã
ãã®èšäºã§ã¯ãMySQLã®UPDATE
æãšSELECT
æãçµã¿åãããé«åºŠãªããŒã¿æäœã«ã€ããŠè©³ãã解説ããŸããåå¿è
ã§ãåãããããããã«åºç€ããå§ããå®åã§åœ¹ç«ã€å¿çšäŸãŸã§å¹
åºã玹ä»ããŸããããŒã¿ããŒã¹ã®å¹ççãªæŽæ°æ¹æ³ãåŠã³ããæ¹ããSQLã¹ãã«ãåäžããããæ¹ã«æé©ãªã¬ã€ããšãªãã§ãããã
2. UPDATEæã®åºæ¬æ§æ
ãŸãã¯UPDATE
æã®åºæ¬ãã確èªããŸããããUPDATE
æã¯ãããŒãã«å
ã®ç¹å®ã®è¡ãŸãã¯è€æ°ã®è¡ã®ããŒã¿ã倿Žããããã«äœ¿çšãããŸãã
åºæ¬æ§æ
UPDATE
æã®åºæ¬çãªæ§æã¯ä»¥äžã®éãã§ãã
UPDATE ããŒãã«å
SET ã«ã©ã å = æ°ããå€
WHERE æ¡ä»¶;
- ããŒãã«å: æŽæ°å¯Ÿè±¡ãšãªãããŒãã«ã®ååã
- ã«ã©ã å: æŽæ°ããã«ã©ã ã®ååã
- æ°ããå€: ã«ã©ã ã«èšå®ããå€ã
- æ¡ä»¶: æŽæ°å¯Ÿè±¡ã®è¡ãéå®ããæ¡ä»¶åŒã
ç°¡åãªäŸ
ååã®äŸ¡æ ŒãæŽæ°ããå ŽåãäŸã«ãšããŸãã
UPDATE products
SET price = 100
WHERE id = 1;
ãã®ã¯ãšãªã¯ãproducts
ããŒãã«å
ã§id
ã1ã®ååã®äŸ¡æ Œã100
ã«æŽæ°ããŸãã
è€æ°ã«ã©ã ã®æŽæ°
è€æ°ã®ã«ã©ã ãåæã«æŽæ°ããããšãå¯èœã§ãã
UPDATE employees
SET salary = 5000, position = 'Manager'
WHERE id = 2;
ãã®äŸã§ã¯ãemployees
ããŒãã«å
ã§id
ã2ã®åŸæ¥å¡ã®salary
ãšposition
ãåæã«æŽæ°ããŠããŸãã
WHEREå¥ã®éèŠæ§
WHERE
å¥ãçç¥ãããšãããŒãã«å
ã®ãã¹ãŠã®è¡ãæŽæ°ãããŸããããã«ãããããŒã¿ãæå³ãã倿Žãããå¯èœæ§ãããããæ³šæãå¿
èŠã§ãã
UPDATE products
SET price = 200;
ãã®ã¯ãšãªã¯ãproducts
ããŒãã«å
ã®ãã¹ãŠã®ååã®äŸ¡æ Œã200
ã«èšå®ããŸãã
3. SELECTæã䜿ã£ãUPDATEã®å¿çš
MySQLã§ã¯ãUPDATE
æãšSELECT
æãçµã¿åãããããšã§ãä»ã®ããŒãã«ãç¹å®ã®æ¡ä»¶ããååŸããããŒã¿ãå
ã«ã¬ã³ãŒããæŽæ°ã§ããŸãããã®ã»ã¯ã·ã§ã³ã§ã¯ãSELECT
æã掻çšãã2ã€ã®äž»èŠãªæ¹æ³ã§ããããµãã¯ãšãªããšãJOINãã䜿ã£ãã¢ãããŒãã«ã€ããŠè§£èª¬ããŸãã
3.1 ãµãã¯ãšãªãçšããUPDATE
ãµãã¯ãšãªã䜿ããšãç¹å®ã®æ¡ä»¶ãæºããããŒã¿ãSELECT
æã§ååŸãããããå
ã«æŽæ°ãè¡ãããšãã§ããŸãããã®æ¹æ³ã¯ãæ¯èŒçã·ã³ãã«ãªæ§é ã§æè»ã«äœ¿çšã§ããŸãã
åºæ¬æ§æ
UPDATE ããŒãã«å
SET ã«ã©ã å = (SELECT ã«ã©ã å FROM ä»ã®ããŒãã« WHERE æ¡ä»¶)
WHERE æ¡ä»¶;
å ·äœäŸ
äŸãã°ãproducts
ããŒãã«ã®äŸ¡æ Œããproduct_stats
ããŒãã«ã®å¹³åäŸ¡æ Œã§æŽæ°ããã±ãŒã¹ãèããŸãã
UPDATE products
SET price = (SELECT average_price FROM product_stats WHERE product_stats.product_id = products.id)
WHERE EXISTS (SELECT * FROM product_stats WHERE product_stats.product_id = products.id);
- ãã€ã³ã:
- ãµãã¯ãšãªã¯ãæŽæ°å¯Ÿè±¡ã®å€ãè¿ã圹å²ãæãããŸãã
EXISTS
ã䜿çšããããšã§ããµãã¯ãšãªã®çµæãååšããå Žåã®ã¿æŽæ°ãå®è¡ã§ããŸãã
泚æç¹
- ãµãã¯ãšãªã¯åäžã®å€ãè¿ãå¿
èŠããã:
è€æ°è¡ã®çµæãè¿ããµãã¯ãšãªã䜿çšãããšãSubquery returns more than one row
ãšãããšã©ãŒãçºçããŸãããããåé¿ããã«ã¯ãLIMIT
ãéèšé¢æ°ïŒäŸ:MAX
ãAVG
ïŒãå©çšããŠçµæã1è¡ã«çµãå¿ èŠããããŸãã
3.2 JOINãçšããUPDATE
ãµãã¯ãšãªãããããã©ãŒãã³ã¹ãé«ãå Žåãå€ãæ¹æ³ããJOIN
ã䜿çšããUPDATE
ã§ããç¹ã«ã倧éã®ããŒã¿ãæŽæ°ããéã«é©ããŠããŸãã
åºæ¬æ§æ
UPDATE ããŒãã«A
JOIN ããŒãã«B ON æ¡ä»¶
SET ããŒãã«A.ã«ã©ã å = ããŒãã«B.ã«ã©ã å
WHERE æ¡ä»¶;
å ·äœäŸ
次ã«ãorders
ããŒãã«ã®å²åŒçããé¢é£ãã顧客ã®default_discount
ã§æŽæ°ããäŸã瀺ããŸãã
UPDATE orders AS o
JOIN customers AS c ON o.customer_id = c.id
SET o.discount = c.default_discount
WHERE c.vip_status = 1;
- ãã€ã³ã:
JOIN
ã䜿ãããšã§ãè€æ°ã®ããŒãã«ãçµåããªããå¹ççã«æŽæ°ã§ããŸãã- ãã®äŸã§ã¯ã
customers
ããŒãã«ã®VIP顧客ã«å¯ŸããŠã®ã¿orders
ããŒãã«ã®å²åŒçãæŽæ°ããŠããŸãã
泚æç¹
- ããã©ãŒãã³ã¹:
JOIN
ãçšããUPDATE
ã¯ãç¹ã«å€§èŠæš¡ãªããŒã¿ã»ããã§å¹ççã§ãããçµåæ¡ä»¶ã«é©åãªã€ã³ããã¯ã¹ãèšå®ããŠããªããšããã©ãŒãã³ã¹ãäœäžããå¯èœæ§ããããŸãã
ãµãã¯ãšãªãšJOINã®éã
é ç® | ãµãã¯ãšãª | JOIN |
---|---|---|
å©äŸ¿æ§ | ç°¡åã§æè» | è€éã ãå¹çç |
ããã©ãŒãã³ã¹ | å°èŠæš¡ããŒã¿ã§é©å | å€§èŠæš¡ããŒã¿ãè€æ°ããŒãã«ã®æŽæ°ã«é©ããŠãã |
å®è£ ã®é£æåºŠ | åå¿è ã«ããããããã | æ¡ä»¶èšå®ãããè€é |
4. å¹ççãªUPDATEã®ãã¯ããã¯
MySQLã§ã®ããŒã¿æŽæ°ã¯ãã·ã³ãã«ãªæ§æã§å®è¡ã§ããŸãããå€§èŠæš¡ãªããŒã¿ãæ±ãå Žåãé »ç¹ã«æŽæ°ãè¡ãå Žåã«ã¯ãããã©ãŒãã³ã¹ãšå®å
šæ§ãèæ
®ããå¹ççãªã¢ãããŒããæ±ããããŸãããã®ã»ã¯ã·ã§ã³ã§ã¯ãUPDATE
æãæé©åããããã®å®è·µçãªãã¯ããã¯ãã玹ä»ããŸãã
4.1 倿Žãããå Žåã®ã¿æŽæ°
ããŒã¿ãæŽæ°ããéãå®éã«å€æŽãå¿ èŠãªè¡ã®ã¿ãæŽæ°ããããšã§ãç¡é§ãªæžã蟌ã¿ãæžãããããã©ãŒãã³ã¹ãåäžãããããšãã§ããŸãã
åºæ¬æ§æ
UPDATE ããŒãã«å
SET ã«ã©ã å = æ°ããå€
WHERE ã«ã©ã å != æ°ããå€;
å ·äœäŸ
ååã®äŸ¡æ Œã倿Žããå Žåãæ¢åã®äŸ¡æ Œãšæ°ããäŸ¡æ Œãç°ãªããšãã ãæŽæ°ããäŸã§ãã
UPDATE products
SET price = 150
WHERE price != 150;
- ã¡ãªãã:
- äžå¿ èŠãªæžã蟌ã¿ãåé¿ã
- ããŒã¿ããŒã¹ã®ããã¯æéãççž®ã
4.2 æ¡ä»¶åå²ã䜿ã£ãCASEæã®å©çš
ç¹å®ã®æ¡ä»¶ã«å¿ããŠç°ãªãå€ãèšå®ãããå Žåã«ã¯ãCASE
æã掻çšããã®ã䟿å©ã§ãã
åºæ¬æ§æ
UPDATE ããŒãã«å
SET ã«ã©ã å = CASE
WHEN æ¡ä»¶1 THEN å€1
WHEN æ¡ä»¶2 THEN å€2
ELSE ããã©ã«ãå€
END;
å ·äœäŸ
åŸæ¥å¡ã®çµŠäžãããã©ãŒãã³ã¹è©äŸ¡ã«åºã¥ããŠæŽæ°ããäŸã§ãã
UPDATE employees
SET salary = CASE
WHEN performance = 'high' THEN salary * 1.1
WHEN performance = 'low' THEN salary * 0.9
ELSE salary
END;
- ãã€ã³ã:
- æ¡ä»¶ã«å¿ããæè»ãªæŽæ°ãå¯èœã
- å®åã§ããå©çšãããæ¹æ³ã
4.3 ãã©ã³ã¶ã¯ã·ã§ã³ã§å®å šæ§ã確ä¿
è€æ°ã®æŽæ°ãè¡ãå Žåããã©ã³ã¶ã¯ã·ã§ã³ã䜿çšããŠäžé£ã®æäœããŸãšããããšã§ãå®å šæ§ãšæŽåæ§ã確ä¿ã§ããŸãã
åºæ¬æ§æ
START TRANSACTION;
UPDATE ããŒãã«å1 SET ... WHERE æ¡ä»¶;
UPDATE ããŒãã«å2 SET ... WHERE æ¡ä»¶;
COMMIT;
å ·äœäŸ
2ã€ã®ã¢ã«ãŠã³ãéã§éé¡ãç§»åããæäœããã©ã³ã¶ã¯ã·ã§ã³ã§ç®¡çããäŸã§ãã
START TRANSACTION;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
COMMIT;
- ãã€ã³ã:
- éäžã§ãšã©ãŒãçºçããå Žåã«
ROLLBACK
ã§å€æŽãåãæ¶ãããšãå¯èœã - ããŒã¿ã®æŽåæ§ãä¿èšŒã
4.4 ã€ã³ããã¯ã¹ã掻çšããå¹çå
UPDATE
æã§æå®ããæ¡ä»¶ã«äœ¿çšãããã«ã©ã ã«ã€ã³ããã¯ã¹ãèšå®ããããšã§ãæ€çŽ¢é床ãåäžãããå
šäœã®ããã©ãŒãã³ã¹ãåäžã§ããŸãã
åºæ¬äŸ
CREATE INDEX idx_price ON products(price);
ããã«ãããprice
ãæ¡ä»¶ãšããUPDATE
æã®åŠçãé«éåãããŸãã
4.5 ãããåŠçã«ããå€§èŠæš¡ããŒã¿ã®æŽæ°
å€§èŠæš¡ãªããŒã¿ãäžåºŠã«æŽæ°ãããšãããŒã¿ããŒã¹ã®è² è·ãé«ãŸãããã©ãŒãã³ã¹ãäœäžããå¯èœæ§ããããŸãããã®å ŽåããããåŠçã§å°éãã€æŽæ°ãè¡ããšå¹æçã§ãã
åºæ¬æ§æ
UPDATE ããŒãã«å
SET ã«ã©ã å = æ°ããå€
WHERE æ¡ä»¶
LIMIT 1000;
- å ·äœäŸ:
- äžåºŠã«1000è¡ãã€åŠçããã¹ã¯ãªããã§ã«ãŒããããã
5. 泚æç¹ãšãã¹ããã©ã¯ãã£ã¹
MySQLã®UPDATE
æã¯äŸ¿å©ãªæ©èœã§ããã誀ã£ãäœ¿ãæ¹ããããšããã©ãŒãã³ã¹ã®äœäžãããŒã¿ã®äžæŽåãåŒãèµ·ããå¯èœæ§ããããŸãããã®ã»ã¯ã·ã§ã³ã§ã¯ãUPDATE
æã䜿çšããéã®æ³šæç¹ãšãå®åã§ã®ãã¹ããã©ã¯ãã£ã¹ã«ã€ããŠè§£èª¬ããŸãã
5.1 ãã©ã³ã¶ã¯ã·ã§ã³ã®æŽ»çš
è€æ°ã®UPDATE
æãå®å
šã«å®è¡ããããã«ããã©ã³ã¶ã¯ã·ã§ã³ã掻çšããããšãæšå¥šããŸããããã«ãããæäœéäžã§ãšã©ãŒãçºçããå Žåã§ããããŒã¿ã®æŽåæ§ãä¿ã€ããšãã§ããŸãã
泚æç¹
- ãã©ã³ã¶ã¯ã·ã§ã³ã®éå§å¿ã:
START TRANSACTION
ãæç€ºçã«èšè¿°ããªããšããã©ã³ã¶ã¯ã·ã§ã³ãæå¹ã«ãªããŸããã - ã³ããããšããŒã«ããã¯:
æ£åžžçµäºæã«ã¯COMMIT
ããšã©ãŒçºçæã«ã¯ROLLBACK
ã確å®ã«äœ¿çšããŠãã ããã
ãã¹ããã©ã¯ãã£ã¹äŸ
START TRANSACTION;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
COMMIT;
ãã®äŸã§ã¯ãéäžã§ãšã©ãŒãçºçããŠãROLLBACK
ã§ããŒã¿ãå
ã®ç¶æ
ã«æ»ããŸãã
5.2 ã€ã³ããã¯ã¹ã®é©åãªèšå®
UPDATE
æã®æ¡ä»¶ã«äœ¿çšãããã«ã©ã ã«ã€ã³ããã¯ã¹ãèšå®ããããšã§ãæ€çŽ¢é床ãåäžããå
šäœã®ããã©ãŒãã³ã¹ãæ¹åã§ããŸãã
泚æç¹
- éå°ãªã€ã³ããã¯ã¹:
ã€ã³ããã¯ã¹ãå€çšãããšãããŒã¿æŽæ°æã®è² è·ãå¢å ããŸããå¿ èŠæäœéã®ã€ã³ããã¯ã¹ãèšå®ããããå¿æããŠãã ããã
ãã¹ããã©ã¯ãã£ã¹äŸ
ååäŸ¡æ ŒãæŽæ°ããå Žåãprice
ãid
ã«ã©ã ã«ã€ã³ããã¯ã¹ãèšå®ãããšå¹æçã§ãã
CREATE INDEX idx_price ON products(price);
CREATE INDEX idx_id ON products(id);
ããã«ãããWHERE
å¥ã«price
ãid
ã䜿çšããæŽæ°ã¯ãšãªãé«éåãããŸãã
5.3 ããã¯ã®ç®¡ç
MySQLã§UPDATE
ãå®è¡ããéã該åœããè¡ã«ããã¯ãããããŸããç¹ã«å€§éã®ããŒã¿ãäžåºŠã«æŽæ°ããå Žåãä»ã®ã¯ãšãªã«åœ±é¿ãäžããå¯èœæ§ããããŸãã
泚æç¹
- é·æéããã¯:
ããã¯ãé·æéç¶ããšãä»ã®ãã©ã³ã¶ã¯ã·ã§ã³ãåŸ æ©ç¶æ ã«ãªããã·ã¹ãã å šäœã®ããã©ãŒãã³ã¹ãäœäžããŸãã
ãã¹ããã©ã¯ãã£ã¹äŸ
- æŽæ°ããè¡æ°ãå¶éããïŒãããåŠçãå©çšïŒã
WHERE
å¥ã§ç¹å®ã®ç¯å²ã«çµãã
UPDATE orders
SET status = 'completed'
WHERE status = 'pending'
LIMIT 1000;
5.4 ãµãã¯ãšãªã®å©çšæã®æ³šæç¹
SELECT
æãçšããUPDATE
ã§ã¯ããµãã¯ãšãªãè€æ°ã®è¡ãè¿ããšãšã©ãŒãçºçããŸãããŸãããµãã¯ãšãªãå€§èŠæš¡ãªããŒã¿ãæ±ãå Žåãããã©ãŒãã³ã¹ãäœäžããå¯èœæ§ããããŸãã
泚æç¹
- çµæãè€æ°è¡ã«ãªããªãããã«å¶é:
éçŽé¢æ°ïŒäŸ:MAX
,AVG
ïŒãLIMIT
ã䜿çšããŠçµæã1è¡ã«çµãå¿ èŠããããŸãã
ãã¹ããã©ã¯ãã£ã¹äŸ
UPDATE products
SET price = (
SELECT AVG(price)
FROM product_stats
WHERE product_stats.category_id = products.category_id
)
WHERE EXISTS (
SELECT * FROM product_stats WHERE product_stats.category_id = products.category_id
);
5.5 å®è¡èšç»ã確èªãã
è€éãªUPDATE
ã¯ãšãªãå®è¡ããåã«ãEXPLAIN
ã䜿ã£ãŠå®è¡èšç»ã確èªããããšã§ãããã©ãŒãã³ã¹ã®åé¡ãäºåã«ç¹å®ã§ããŸãã
ãã¹ããã©ã¯ãã£ã¹äŸ
EXPLAIN UPDATE products
SET price = 200
WHERE category_id = 1;
ããã«ãããã€ã³ããã¯ã¹ãé©åã«äœ¿çšãããŠããããå šè¡šèµ°æ»ïŒFull Table ScanïŒãçºçããŠããªããã確èªã§ããŸãã
5.6 ããã¯ã¢ããã®ç¢ºä¿
UPDATE
æã誀ã£ãŠå®è¡ããå Žåã倧éã®ããŒã¿ã倱ãããå¯èœæ§ããããŸãããã®ãããéèŠãªæäœãè¡ãåã«ã¯ããŒã¿ããŒã¹ã®ããã¯ã¢ãããååŸããŠããããšãæšå¥šããŸãã
ãã¹ããã©ã¯ãã£ã¹äŸ
MySQLã®ãã³ãããŒã«ãå©çšããŠããã¯ã¢ãããäœæããŸãã
mysqldump -u ãŠãŒã¶ãŒå -p ããŒã¿ããŒã¹å > backup.sql
ã

6. FAQïŒãããã質åïŒ
ããã§ã¯ãMySQLã®UPDATE
æã«é¢é£ããŠããå¯ãããã質åãšãã®åçããŸãšããŸããããããã®æ
å ±ã¯ãå®åã§ã®çåãè§£æ¶ããå¹ççãªããŒã¿æŽæ°ããµããŒãããã®ã«åœ¹ç«ã¡ãŸãã
Q1: UPDATE
æã§è€æ°ã®ããŒãã«ãåæã«æŽæ°ã§ããŸããïŒ
A1:
MySQLã§ã¯ã1ã€ã®UPDATE
æã§è€æ°ã®ããŒãã«ãåæã«æŽæ°ããããšã¯ã§ããŸããããã ããè€æ°ã®ããŒãã«ãçµåïŒJOIN
ïŒããŠ1ã€ã®ããŒãã«ã®ããŒã¿ãæŽæ°ããããšã¯å¯èœã§ãã
äŸ: JOINã䜿çšããããŒãã«æŽæ°
UPDATE orders AS o
JOIN customers AS c ON o.customer_id = c.id
SET o.discount = c.default_discount
WHERE c.vip_status = 1;
Q2: UPDATE
æã®ããã©ãŒãã³ã¹ãåäžãããã«ã¯ã©ãããã°ããã§ããïŒ
A2:
以äžã®æ¹æ³ã§ããã©ãŒãã³ã¹ãåäžãããããšãã§ããŸãã
- ã€ã³ããã¯ã¹ãé©åã«èšå®ãã:
WHERE
å¥ã«äœ¿çšããã«ã©ã ã«ã€ã³ããã¯ã¹ãäœæããŸãã - äžèŠãªæŽæ°ãé¿ãã: æŽæ°ãå¿ èŠãªè¡ã ãã察象ãšããæ¡ä»¶ãæå®ããŸãã
- ãããåŠçãå©çšãã: 倧éã®ããŒã¿ãå°ããã€æŽæ°ããããšã§ããã¯ã®åœ±é¿ã軜æžããŸãã
ãããåŠçã®äŸ
UPDATE products
SET stock = stock - 1
WHERE stock > 0
LIMIT 1000;
Q3: UPDATE
æã§ãµãã¯ãšãªã䜿çšããéã®æ³šæç¹ã¯äœã§ããïŒ
A3:UPDATE
æã§ãµãã¯ãšãªã䜿çšããå Žåã以äžã®ç¹ã«æ³šæãå¿
èŠã§ãã
- ãµãã¯ãšãªã®çµæã¯1è¡ã§ããããš: ãµãã¯ãšãªãè€æ°è¡ãè¿ããšãšã©ãŒãçºçããŸãã
- ããã©ãŒãã³ã¹: ãµãã¯ãšãªãå€çšãããšãç¹ã«å€§èŠæš¡ããŒã¿ã®å Žåã«ããã©ãŒãã³ã¹ãäœäžããå¯èœæ§ããããŸãã
ãµãã¯ãšãªã®äŸ
UPDATE employees
SET salary = (SELECT AVG(salary) FROM department_salaries WHERE employees.department_id = department_salaries.department_id)
WHERE EXISTS (SELECT * FROM department_salaries WHERE employees.department_id = department_salaries.department_id);
Q4: ãã©ã³ã¶ã¯ã·ã§ã³ã䜿ããã«UPDATE
ãè¡ããšã©ããªããŸããïŒ
A4:
ãã©ã³ã¶ã¯ã·ã§ã³ã䜿çšããªãå ŽåãUPDATE
ã®éäžã§ãšã©ãŒãçºçãããšããã以åã«å®è¡ãããæäœã確å®ãããããŒã¿ã®æŽåæ§ã倱ãããå¯èœæ§ããããŸããç¹ã«è€æ°ã®UPDATE
ãå«ãåŠçã§ã¯ããã©ã³ã¶ã¯ã·ã§ã³ã䜿çšããŠããŒã¿ã®äžè²«æ§ãä¿ã€ããšãæšå¥šããŸãã
ãã©ã³ã¶ã¯ã·ã§ã³ã䜿çšããäŸ
START TRANSACTION;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
COMMIT;
Q5: UPDATE
æã§æ¡ä»¶ãæå®ããã«å®è¡ããŠããŸã£ãå Žåãã©ã察åŠããã°ããã§ããïŒ
A5:
æ¡ä»¶ãæå®ããã«UPDATE
ãå®è¡ãããšãããŒãã«å
ã®ãã¹ãŠã®è¡ãæŽæ°ãããŸãããããé²ãããã«ãæäœåã«ããŒã¿ããŒã¹ã®ããã¯ã¢ãããååŸããŠããããšãéèŠã§ãããŸãã圱é¿ãåããè¡æ°ãå°ãªãå Žåã¯æåã§ä¿®æ£ããããããã¯ã¢ããããããŒã¿ã埩å
ããŸãã
Q6: MySQLã§UPDATE
æã䜿ã£ãéã«Deadlock
ãçºçããŸãããã©ãããã°ããã§ããïŒ
A6:Deadlock
ïŒãããããã¯ïŒã¯ãè€æ°ã®ãã©ã³ã¶ã¯ã·ã§ã³ãäºãã«ããã¯ãå¿
èŠãšããŠåŸ
æ©ç¶æ
ã«ãªããšçºçããŸãã以äžã®æ¹æ³ã§å¯ŸåŠå¯èœã§ãã
- æŽæ°ã®é åºãçµ±äžãã: å šãŠã®ãã©ã³ã¶ã¯ã·ã§ã³ã§åãé åºã§è¡ãæŽæ°ããŸãã
- ãã©ã³ã¶ã¯ã·ã§ã³ãåå²ãã: äžåºŠã«æŽæ°ããè¡æ°ãæžããããã©ã³ã¶ã¯ã·ã§ã³ã®ç²åºŠãå°ããããŸãã
7. ãŸãšã
ãã®èšäºã§ã¯ãMySQLã®UPDATE
æã广çã«äœ¿çšããæ¹æ³ã«ã€ããŠãåºæ¬ããå¿çšãŸã§è©³ãã解説ããŸããã以äžã«ãåã»ã¯ã·ã§ã³ã®ãã€ã³ããæ¯ãè¿ããŸãã
1. ã¯ããã«
- MySQLã®
UPDATE
æã¯ãããŒã¿ããŒã¹ã®æŽæ°ã«äžå¯æ¬ ãªããŒã«ã§ãã SELECT
æãšçµã¿åãããããšã§ãä»ã®ããŒãã«ãèšç®çµæãåºã«å¹ççãªããŒã¿æŽæ°ãå¯èœã«ãªããŸãã
2. UPDATEæã®åºæ¬æ§æ
UPDATE
æã®åºæ¬åœ¢ãšã·ã³ãã«ãªäœ¿çšäŸã解説ããŸããã- æ¡ä»¶æå®ïŒ
WHERE
å¥ïŒãå¿ããªãããšã§ãæå³ããªããã¹ãŠã®è¡ã®æŽæ°ãé²ããŸãã
3. SELECTæã䜿ã£ãUPDATEã®å¿çš
- ãµãã¯ãšãªã䜿çšããæè»ãªæŽæ°æ¹æ³ã
- JOINãå©çšããŠè€æ°ããŒãã«éã§å¹ççã«ããŒã¿ãæŽæ°ããæ¹æ³ã
- ãµãã¯ãšãªãšJOINã®éãã䜿ãåãã確èªããŸããã
4. å¹ççãªUPDATEã®ãã¯ããã¯
- äžèŠãªæŽæ°ãé¿ããããã«ã倿Žãããå Žåã®ã¿æŽæ°ãããã¯ããã¯ã
CASE
æã䜿ã£ãæ¡ä»¶åå²ã®å©çšäŸã- ãã©ã³ã¶ã¯ã·ã§ã³ã®æŽ»çšãã€ã³ããã¯ã¹ã®èšå®ããããåŠçã«ããããã©ãŒãã³ã¹åäžã®æ¹æ³ã
5. 泚æç¹ãšãã¹ããã©ã¯ãã£ã¹
- ãã©ã³ã¶ã¯ã·ã§ã³ã掻çšããŠããŒã¿ã®æŽåæ§ãä¿ã€éèŠæ§ã
- ã€ã³ããã¯ã¹ãããã¯ã®é©åãªç®¡çã
- ãµãã¯ãšãªã®äœ¿çšæã«çºçãåŸããšã©ãŒãžã®å¯ŸåŠæ³ããå®è¡èšç»ã®ç¢ºèªææ³ã
6. FAQ
- å®åã§ããããçåã«çãã圢ã§ã
UPDATE
æã®å ·äœçãªäœ¿çšäŸãšåé¡è§£æ±ºæ¹æ³ã玹ä»ããŸããã - è€æ°ããŒãã«ã®æŽæ°ããã©ã³ã¶ã¯ã·ã§ã³ã®éèŠæ§ããããããã¯ãžã®å¯ŸåŠæ³ãªã©ã
次ã®ã¹ããã
ãã®èšäºã§åŠãã å 容ãåºã«ã以äžã®ã¹ãããã詊ããŠã¿ãŠãã ããã
- åºæ¬çãª
UPDATE
æãå®è¡ããŠãæ§æã確èªããã - å®åã·ããªãªã«åãããŠ
SELECT
æãšã®çµã¿åãããJOINã詊ããŠã¿ãã - å€§èŠæš¡ãªããŒã¿ãæŽæ°ããéããã©ã³ã¶ã¯ã·ã§ã³ãã€ã³ããã¯ã¹ã掻çšããŠããã©ãŒãã³ã¹ãè©äŸ¡ããã
ãŸããããã«SQLã¹ãã«ãåäžããããå Žåã¯ã以äžã®ãããã¯ãåŠç¿ããããšããå§ãããŸãã
- MySQLã®ã€ã³ããã¯ã¹æé©å
- ãã©ã³ã¶ã¯ã·ã§ã³ç®¡çã®è©³çް
- SQLããã©ãŒãã³ã¹ãã¥ãŒãã³ã°
MySQLã®UPDATE
æã¯ãããŒã¿ããŒã¹æäœã®äžã§ãéèŠãªã¹ãã«ã§ãããã®èšäºãåèã«ãå®åã§å¹æçã«æŽ»çšããŠãã ãããå®éã«æãåãããŠã¯ãšãªã詊ããã¹ãã«ã磚ããŠãããŸãããïŒ