ç®æ¬¡
- ãªãSQLã®ã¹ã¿ã€ã«ã¬ã€ããéèŠãªã®ã
- ãã®èšäºã®ç®ç
- ãã®èšäºã®å¯Ÿè±¡è
- åæSQLã¹ã¿ã€ã«ã¬ã€ãã®æé
- åºæ¬ã«ãŒã«
- åœåèŠå
- ã€ã³ãã³ãã«ãŒã«
- å¥åã«ãŒã«
- joinã«ãŒã«
- ã¯ãšãªåå²ã«ãŒã«
â ã³ã¡ã³ãæ¬ã§ãããç§ã¯ããæãïŒããšããæèŠãããããããã ããŸããïŒãã²ãã¡ãã埡芧ãã ããïŒïŒæ±ºããŠæ¶æã§ã¯ãªãã§ãïŒ
ãªãSQLã®ã¹ã¿ã€ã«ã¬ã€ããéèŠãªã®ã
SQLã¯ããã°ã©ãã³ã°æªçµéšè ã§ããšã£ã€ããããèšèªãšèšããããšã³ãžãã¢ãåæãæ¬æ¥ãšããŠããªã人ã§ãSQLãäœ¿ãæ©äŒãå¢ããŠããŠãããšæããŸãã
ãããªSQLã§ããããã¡ãã®ããã°ã§ãææãããŠããéããäžè¬çãªã¹ã¿ã€ã«ã¬ã€ããå®ãŸã£ãŠããŸãããã¹ã¿ã€ã«ã¬ã€ããšã¯ã³ãŒãã®æžãæ¹ãããŒãããªãã®ã§ãã©ãã§æ¹è¡ãããã空çœã¯ããã€å ¥ãããã倧æåã䜿ãããªã©ã®è«žã ãæããŸãã
ããã¹ã¿ã€ã«ã¬ã€ããç¡ããšãããªäºãèµ·ãããŸã
- ã³ãŒãã«äžè²«æ§ãç¡ããããã¹ãçºèŠãã¥ãããªã
- ã¯ãšãªãæžããã³ã«æžãæ¹ãæ€èšããã®ã«é ã䜿ã
- ã³ãŒããèªã¿ã¥ããã¬ãã¥ãŒå¹çãäžãã
- ã³ãŒããè§£èªããã®ã倧å€ã§åå©çšããããçµç¹ã®è³ç£ã«ãªãã«ãã
ãã®èšäºã®ç®ç
ãã®èšäºã¯èªåã®ã³ãŒãã£ã³ã°ã¹ã¿ã€ã«ãä»äººã«æŒãä»ãããã®ã§ããèªå以å€ã®ã³ãŒãã£ã³ã°ã¹ã¿ã€ã«ãæ¹å€ãããã®ã§ããããŸããã
ãããŸã§ãåæSQLã¹ã¿ã€ã«ã¬ã€ãã®äžäŸã玹ä»ãããã®ã§ãã©ããã®ããŒã ãSQLã®ã¹ã¿ã€ã«ã¬ã€ããæ±ºããéããã®ããã°ãåèã«ãªãã°ãšæã£ãŠãããŸãã
ãŸãããã®ã³ãŒãã£ã³ã°ã¬ã€ãã«å¯Ÿããåè«ãTwitterçã§ãåŸ ã¡ããŠãããŸãïŒ
ãã®èšäºã®å¯Ÿè±¡è
ç§ã¯æ®æ®µããŒã¿åæãè·ã«ããŠããŠããšã³ãžãã¢ã§ã¯ãããŸããã
ãã®èšäºã®å¯Ÿè±¡è
ãSQLã䜿ã£ãŠåæãããåæè
åãã®ãã®ãšãªããŸãã
ãã£ãŠã·ã¹ãã ã«çµã¿èŸŒãŸãããããªSQLãæ³å®ããŠããããã§ã¯ãããŸããããå ±éç¹ã¯ããã¯ãã§ãã®ã§ãšã³ãžãã¢ã®æ¹ã®æèŠããåŸ ã¡ããŠãããŸãã
åæSQLã¹ã¿ã€ã«ã¬ã€ãã®æé
ã¹ã¿ã€ã«ã¬ã€ãã®ç޹ä»ã®åã«ãèªåã倧äºã«ããŠããïŒã€ã®æéããäŒãããŸãããã¹ãŠã®ã«ãŒã«ã¯ãã®æéã«åºã¥ããŠäœãããŠããŸãã
æéãæžãã
ããã¯ã³ãŒãã£ã³ã°ã¬ã€ããå®ããç®çãšãèšãããããããæã倧äºã«ããŠããæéã§ãããã¹ãŠã®ã«ãŒã«ã¯æéãæžããããã«ãããæéãå¢ããŠèŠæ ããçŸãããªãã¬ã€ãã¯ç¡æå³ã§ãã

çžŠãšæšªãæèãã
ç§ã¯SQLãæžãéãçžŠãšæšªã®ã©ã€ã³ã匷ãæèããŠããŸãã瞊ã®ã©ã€ã³ã¯ã€ã³ãã³ãã«ãã£ãŠäœãããæšªã®ã©ã€ã³ã¯æ¹è¡ã«ãã£ãŠäœãããŸãã

圹å²ããšã«åãã
ãªããžã§ã¯ãæåãšãŸã§ã¯èšããŸãããã圹å²ã®ç°ãªãã¯ãšãªãåãå Žæã«æžãããšã¯äººéã®çè§£ã劚ããŸããããŒã¿ã®çš®é¡ãåŠçã®ç²åºŠã倧ããç°ãªããšãã¯ã¯ãšãªãåããã¹ãã§ãã

åºæ¬ã«ãŒã«
SQLãæžãäžã§å šäœã«åœ±é¿ããåºæ¬ã®ã«ãŒã«ã§ã
äºçŽèªãå šéšå°æåã§æžã

ãã¡ãªãããã³ãŒãã£ã³ã°ã楜ã«ãªã
ãããªã奜ã¿ãåãããã«ãŒã«ã§ãã¿ãŸãããç§ã¯ãã¹ãŠå°æåãåŒ·ãæŒããŸããæ
£ç¿ã§å€§æåã«ããŠãã人ãå€ããšæããŸãããäžåºŠå°æåã§æžããŠã¿ãŠãã ãããæ¥œãã«ã³ã£ããããŸããã
èŠããããšãã人ãå±
ãŸãããæ®éã®ãšãã£ã¿ãŒãªãã·ã³ã¿ãã¯ã¹ãã€ã©ã€ããããŸããããã¬ã€ã«ã€ã³ãã³ãããŠããã°å®¹æã«åãããŸããäžçªäœ¿ãäºçŽèªã¯select,from,and,orã§ãããããæ¯å倧æåã«ããèŠåŽãšãèŠåãããããªãã¡ãªããã©ã¡ãã倧ãããã¯æããã ãšæããŸãã
ãããªãç±ãå
¥ããããŸãããããããã¯èœã¡çããŠãããŸãã
å·Šæãã§æžã

ãã¡ãªãããã³ãŒãã£ã³ã°ã楜ã«ãªã
ãã®èšäºãæžãã«ãããããããäžã®è²ã
ãªã³ãŒãã£ã³ã°ã«ãŒã«ã調ã¹ããšãããäžå€®ç·ã«å¯ããŠæžãæµæŽŸãäžå®æ°ããããšã«ããªãé©ããŸããã
峿ãã®å Žåã巊端ã®ã€ã³ãã³ãæ°ãselectãfromã§ç°ãªãã®ã§æ¯åæããªããšãããŸããããå·Šæããªãã¿ããåè§ã¹ããŒã¹4ã€ã«èšå®ããŠããã°ãïŒã¹ãããã§ã€ã³ãã³ãã§ããŸãã
ã€ã³ãã³ãã¯ã¿ãã䜿ããåè§ã¹ããŒã¹4ã€ã§çµ±äž

ãã¡ãªãããã¯ãšãªã®æžãæããæ¥œã«ãªã
å€ãã®å Žåãã¿ããšåè§ã¹ããŒã¹ã¯èçŒã§èŠåããä»ããŸãããæ··åšããŠãããšãã¯ãšãªãæžãæãããšãã«ã....ã£ããã¿ãããïŒããšãªããŸããã¿ãã¯ãšãã£ã¿ãŒã«ãã£ãŠèŠãæ¹ãåè§ã¹ããŒã¹4ã€åã ã£ãã8ã€åã ã£ããããã®ã§ãåè§ã¹ããŒã¹ã«çµ±äžããŸãã
åè§ã¹ããŒã¹ã®æ°ã¯ïŒãèŠèªæ§ãè¯ãã®ã§ããããŠããŸãããæ£çŽ2ã§ããããšæã£ãŠãŸããæŠãæå¿ã¯ãããŸããã4ã€ã ãšæšªã«é·ããªãããããšèšãã®ã§ããã°ããã¯ã¯ãšãªã«åé¡ããããšæããŸã
ã«ã³ãïŒ,ïŒ/and/orã¯å é ã«çœ®ã

ãã¡ãªãããã¯ãšãªã®ãã¹ãæžã
åŸããããå
é ã«ããæ¹ãã«ã³ã/and/orã®èŠèªæ§ããããå
¥åå¿ããæžããŸã
å
é ã«ã³ããéåæãããšãã人ãå€ãã§ãããå人çã«ã¯andãå
é ã«ããã®ã«ã«ã³ããææ«ã«ãããã°ãã°æã®æ¹ãéåæãããã»ããåã®å¢æžäœæ¥ã楜ãšããã¡ãªããããããŸãã
â ç§ã¯ã«ã³ãæé 掟ã§ããã«ã³ãææ«æŽŸã®ã»ããå€ãããã§ãïŒ
andãorãåç¬è¡ã«çœ®ã人ãå± ãŸãããå é ã«çœ®ãããšã§whereå¥ã®è¡æ°ïŒæ¡ä»¶ã®æ°ã«ãªãã®ã§ã¯ãšãªãèªã¿è§£ããããã§ãã
1ã€ã®selectããšã«ã¯ãšãªã®èª¬æãæžã
ãã¡ãªãããã¯ãšãªãèªã¿ããããªã
withå¥ããµãã¯ãšãªã«ãã£ãŠãã²ãšã€ã®ã¯ãšãªã®äžã«è€æ°ã®selectãå
¥ãããšããããŸããæäœéãã®åäœã§ã¯ãšãªã®èª¬æãæžãããšã¯ãå°ããªèŠåŽã§ããèªãåŽã«ãšã£ãŠã¯ãšãŠãããããããã®ã§ãã

åœåèŠå
asã§ååãããŒãã«åãæ±ºããéã®åœåèŠåãå®ããŸãã
åºæ¬ã«ãŒã«
ãã¹ãŠå°æåã§æžããã¢ã³ããŒããŒã§ã€ãªãïŒsnake caseïŒ

åå
åã®å 容ã«ãã£ãŠæ¥å°ŸèŸãå®ããŠããããšã§ãçµ±äžæ§ããã£ãŠèŠãããæ¯åèããæéãçãã
| æ¥å°ŸèŸ | å©çšã¿ã€ãã³ã° |
|---|---|
| _id | primary keyãªã©ã®idã«ã©ã |
| _flag | ãã©ã°ãªã©ã®äœããã®ã¹ããŒã¿ã¹ |
| _date | æ¥ä»ã«é¢ããã«ã©ã |
| _name | äœãã®ååãæå³ããã«ã©ã |
| _ratio | æ¯çã衚ãã«ã©ã |
| _sum | sum()ã®ååŸã«ã©ã |
| _count | count()ã®ååŸã«ã©ã |
| _min | min()ã®ååŸã«ã©ã |
| _max | max()ã®ååŸã«ã©ã |
ããŒãã«å
åæã«ãããŠããŒãã«åã¯æè»ã«æ±ºããã¹ãã§ã決ããããã¹ãã§ã¯ãªããšæã£ãŠããŸããããã§ç€ºãæ¥å°Ÿæã¯ã«ãŒã«ã§ã¯ãªãèãæ¹ã®åèãšããŠãã ããã
| æ¥å°ŸèŸ | å©çšã¿ã€ãã³ã° |
|---|---|
| _act | è¡ååäœã®ããŒãã« |
| _user | ãŠãŒã¶ãŠããŒã¯ã®ããŒãã« |
| _day | æ¥å¥ã®ããŒãã« |
| _month | æå¥ã®ããŒãã« |
ã€ã³ãã³ãã«ãŒã«
1段ç®ãã3段ç®ã«ãããŠåŸã
ã«åŠçã®ç²åºŠã现ããããŠãããåãéå±€ã«ç°ãªãç²åºŠã®åŠçãæžããªãã
ãã¡ãªãããã³ãŒããæ§é çã«èªãããšãã§ããçè§£ãããã
1段ç®ã¯åŠçã®å€§åºåã瀺ãå¥ã ãïŒselect,from,groupby,with,orderbyïŒ
äžæ®µç®ã¯å€§åºåã«ããããšã§ãã³ãŒãå
šäœã®ã©ãã«äœãæžããŠããããããã«åããã

2段ç®ã¯åŠç颿°ãååãããŒãã«åã䞊ã¹ãïŒååãããŒãã«åãcase whenã®caseïŒ
2段ç®ãèŠãããšã§åŠçã®æŠèŠãšã€ã³ããããšã¢ãŠãããããçè§£ã§ããã

3段ç®ã¯åŠçã®è£è¶³ãèšèŒããïŒjoinã®onãcase whenã®whenïŒ
3段ç®ãèŠãããšã§ããã詳现ãªåŠçã®å
容ã詳ããç¥ãããšãã§ãã

å¥åã«ãŒã«
SQLã®å¥åã¯ãããŸã䜿ãã°èªã¿ããããªããäžæã«äœ¿ããšèªã¿ã¥ããããªããŸãã
ããŒãã«ã®å¥åã¯å é ã®æåã䜿ããéè€ããå Žåã¯é£çªãæ¯ãã

å¥åãa,b,cãt1,t2ãšäœ¿ã人ã¯å€ãååšããŸãããèããæéãçã以å€ã«ã¯ããŸãæå³ããããŸãããåç
§ããããŒãã«åã®å
é ã®æå䜿ããéè€ããŠããŸãå Žåã¯é£çªãæ¯ãããšã§æ©æ¢°çã«å¥åãæ±ºããããæéãå¢ããããããããããªããŸãã
ããŒãã«ãè€æ°çµåããã¯ãšãªã§ã«ã©ã ãæå®ãããšãã¯ããŒãã«ã®å¥åãæç€ºãã

ããŒãã«ãè€æ°çµåããŠããã¯ãšãªã§ãããè¡ããªããšãã¯ãšãªãèªãã ãã§ã¯ãã®ã«ã©ã ã¯ã©ã®ããŒãã«ã®ã«ã©ã ãªã®ãåãããŸãããããŒãã«å®çŸ©æžãèªãã ãå®éã«ããŒãã«ã®äžèº«ãselectããŠèª¿ã¹ãªããã°ãããªãæéãå¢ããŸãã
joinã«ãŒã«
SQLã®ãã¹ã§æãå€ãã®ãjoinã§ããããã§ã¯ãã¹ãæžããã¹ã¿ã€ã«ã¬ã€ãã玹ä»ããŸãã
right joinã¯çµ¶å¯Ÿã«äœ¿ããªã

right joinãšå
šãåãããšã¯left joinã§å®çŸã§ããŸããäž¡è
ãæ··åšãããšèªã人ã«å€§ããªè² æ
ãäžããŸãã人éã¯å·ŠåŽãèµ·ç¹ã«èããåŸåããããããã«éããã¡ãªããããªã以äžright joinã䜿ãçç±ãå
šããããŸããã
left joinãåºæ¬ãšããçµã蟌ãæå³ããããšãã®ã¿inner joinã䜿ã

inner joinã¯æå³ããè¡ãåã£ãŠããŸããããã«æ°ã¥ãã«ãããšããæ¬ ç¹ããããäŸãã°è³Œè²·ãã°ããŒã¿ãšååãã¹ã¿ãã§inner joinã§çµåããéããã¹ã¿ã«äžåããã£ããšããŠããåºåãããã®è¡ãã®ãã®ãç¡ããªãã®ã§äžåã«æ°ã¥ãã«ããã
ãéäžããŒã¿ã®è¡æ°ããã§ãã¯ããã°åé¡ãªãããšããæèŠã¯ãã£ãšãã§ããããããããã®ãªã¹ã¯ã¯æžããã¹ãã§ãã
ã¡ãªã¿ã«ãçè ã®left joinãšinner joinã®å©çšé »åºŠã¯ã ããã9:1çšåºŠã§ãã
ã¯ãšãªåå²ã«ãŒã«
è€éãªã¯ãšãªã¯èªãåŽã«ãè² æ ãäžããŸãããããå°ãã§ã軜æžããã«ãŒã«ã玹ä»ããŸãã
ãµãã¯ãšãªã§ã¯ãªãwithå¥ã䜿ã

withå¥ã䜿ãããšã«ãã£ãŠãã¯ãšãªãäžããäžã«èªãããšãã§ããŸãããµãã¯ãšãªã«ããŠããŸããšãã¯ãšãªã®æ§é ãçè§£ãããšããããã¯ãããå¿
èŠãããééããã«èªãããšã«è³ã®ç¥çµãåãããŸãã
䌌ãåŠçãäœåãããå Žåã¯äžéããŒãã«ãäœã
ããŒã¿åæã§SQLãæžãéãäžåºŠãã£ãŠçµããã§ã¯ãªãéäžããåå²ããŠè©Šè¡é¯èª€ããããšã¯å°ãªããããŸããããã®ãããªãšãã«äžéããŒãã«ãäœã£ãŠããã°ãåŠçæéã®ççž®ã«ã€ãªããã ãã§ãªããå¥ã®äººãã¯ãšãªãèªãéã«éãæžã广ããããŸãã
æåŸã«
ããã«æžããã¹ã¿ã€ã«ã¬ã€ãã¯çæ³è«ã§ã¯ãªããå®åã§å®çŸå¯èœãªã¬ã€ãã ãšæã£ãŠããŸãããŸãããããŸã§ã¬ã€ãã§ãããç¶æ³ã«ãã£ãŠã¯ã¬ã€ãã«åŸãã¹ãã§ãªããšãããããŸãããµã¯ããšç¢ºèªããã ãã®æ®ããªãã¯ãšãªã¯ç§ãããã®ã¬ã€ããã¬ãããªç¡èŠããŠæžããŠããŸãã
ãã²ããä»ã®ããæ¹ã«æ £ããŠãããâŠãã倧æåã§æžãçãä»ããŠãããâŠããšå°»èŸŒã¿ãããã®ã¹ã¿ã€ã«ã詊ããŠã¿ãŠãææ³ããèãããã ããïŒ
Twitterããã£ãŠããã®ã§ãDMããªãã§æèŠããã ãããšå¬ããã§ãïŒ
仿æçš¿ããSQLã¹ã¿ã€ã«ã¬ã€ãã®Qiitaèšäºã«ã€ããŠãå šäœåãå¯èŠåããŸããïŒ
â ããïœå³è§£ããŒã¿ãµã€ãšã³ãã£ã¹ã (@kai_data) January 11, 2021
SQLã¯ãªã¬ãªã¬æµãã¯ã³ãããã¡ãªã®ã§ããã®æã«ã³ãŒãã£ã³ã°èŠåãå®ããŠã¿ãŠã¯ãããã§ããããïŒ#100æ¥æçš¿ #69æ¥ç® pic.twitter.com/C6e8KwiJ5Q
