Upgrade to Pro — share decks privately, control downloads, hide ads and more …

SQL Meisterへの道 ~基礎〜参照編~ / sql-meister-R

machu
November 02, 2020

SQL Meisterへの道 ~基礎〜参照編~ / sql-meister-R

Biz職もエンジニアリングやっていきの流れができたので、社内勉強会用に書いた。

machu

November 02, 2020
Tweet

More Decks by machu

Other Decks in Technology

Transcript

  1. ໨࣍ - SQL͸͍͍ͧ - ༻ޠղઆͱجຊͷཱͪճΓ - SQL(ΫΤϦ)ͬͯͳΜͧ - ςʔϒϧͬͯͳΜͧ -

    σʔλϕʔεͬͯͳΜͧ - ڞ௨Ͱ࢖͑ΔWHERE۟Λ֮͑Α͏ - SELECTจͰσʔλΛݟͯΈΑ͏ - SELECTจͷจ๏ - ࣮ߦ - ΫΤϦ࣮श(redashͷ࢖͍ํ) - ΫΤϦ࣮श(SELECT&WHERE) - ू߹ͷײ֮Λ௫Ή - JOIN͕Ͱ͖Ε͹͍ͬͪΐલ - ΫΤϦ࣮श(JOIN) - ूܭΫΤϦ ~ूܭؔ਺~ - ूܭΫΤϦ ~group by~ - ΫΤϦ࣮श(ूܭΫΤϦ) - αϒΫΤϦ - ΫΤϦ࣮श(αϒΫΤϦ)
  2. σʔλϕʔε(DB)ͬͯͳΜͧ σʔλϕʔε(DB)ͱ͍͏ͷ͸ɺςʔϒϧΛ· ͱΊͨ΋ͷͰ͢ɻ DBαʔόʔͷ͜ͱΛ෺ཧDBɺ͜ͷςʔϒϧ ͷ·ͱ·ΓΛ࿦ཧDBͱݺΜͰ۠ผͨ͠Γ͠ ·͢ɻ `show databases` ͰDBͷҰཡΛ֬ೝͰ͖ ·͢ɻ

    infomation_schemeは勝手に作られる あんまり気にしないでいいやつで、 alp_subscription_sandboxが我々の定義したテーブルが 入ってるDBです
  3. WHERE۟ͬͯͳΜͧ WHERE۟Ͱ͸ɺ ׬શҰகɺ෦෼ҰகɺϦετҰக(Ϧετ಺ͷͲΕ͔ʹ׬શҰக)ͷ৚݅ ͕࢖͑·͢ɻ ׬શҰக͸ `${ΧϥϜ໊} = “৚݅"` ෦෼Ұக͸`${ΧϥϜ໊} LIKE

    “%৚݅%”` ϦετҰக͸ `${ΧϥϜ໊}` IN (“৚݅1”,“৚݅2”,“৚݅3”) ͱ͍͏Α͏ʹࢦఆͰ͖·͢ɻ ͜ΕΒͰSELECTͳΒࢀর͢Δର৅ɺINSERT,UPDATE,DELETEͳΒߋ৽͢Δ ର৅ΛߜΓ·͢ɻ 条件をまとめないと結果が変わる部分は()でまとめます 掛け算割り算と同じノリです! ※しれっとLIMITを使ってますが、これは件数を制限するやつです! データ量多すぎてうっとおしい時は件数を絞りましょう
  4. INNER JOINจͷจ๏ SELECT * -> ࢀর͢ΔΧϥϜ໊Λࢦఆɻجຊ͸શ෦Λҙຯ͢Δ`*`ͰOK FROM ${ςʔϒϧ໊A} -> ࢀর͢Δςʔϒϧ໊Λࢦఆ

    INNER JOIN ${ςʔϒϧ໊B} -> JOIN͍ͨ͠ςʔϒϧ໊Λࢦఆ ON ${৚݅} -> WHERE۟ͱಉ͡ॻ͖ํͰ৚݅Λࢦఆ͢Δɻ͜͜ͷ৚݅͸ݫ͍͠΄͏͕ JOIN͢Δର৅͕গͳ͘ͳΔͷͰύϑΥʔϚϯε΋ྑ͘ͳΔɻ WHERE ${৚݅} -> ৚݅Λࢦఆ
  5. LEFT JOINจͷจ๏ SELECT * -> ࢀর͢ΔΧϥϜ໊Λࢦఆɻجຊ͸શ෦Λҙຯ͢Δ`*`ͰOK FROM ${ςʔϒϧ໊A} -> ࢀর͢Δςʔϒϧ໊Λࢦఆ

    LEFT JOIN ${ςʔϒϧ໊B} -> JOIN͍ͨ͠ςʔϒϧ໊Λࢦఆ ON ${৚݅} -> WHERE۟ͱಉ͡ॻ͖ํͰ৚݅Λࢦఆ͜͜ͷ৚݅͸ݫ͍͠΄͏͕JOIN͢ Δର৅͕গͳ͘ͳΔͷͰύϑΥʔϚϯε΋ྑ͘ͳΔɻ WHERE ${৚݅} -> ৚݅Λࢦఆ INNER JOINとほぼ一緒だぜ!
  6. GROUP BYͬͯʁ GROUP BY͸ɺࢦఆͨ͠ΧϥϜͰ݁ՌΛ·ͱΊͯ͘Ε·͢ɻ ઌఔͷ👇ͷूܭΫΤϦ͸1ͭͷϓϩόΠμͷquantity߹ܭΛूܭ͍ͯ͠·͢ɻ GROUP BY͸ϓϩόΠμຖͷquantityͷ߹ܭΛશͯݟ͍ͨ৔߹ʹ࢖͑·͢ɻ // ͋Δproviderͷcustomerͷ૯਺ΛͱΔ >

    SELECT COUNT(*) FROM customer WHERE provider_id = "aaa"; // ܖ໿ຖͷbilling_itemͷquantity૯਺ΛͱΔ > SELECT provider_id, COUNT(*) FROM customer GROUP BY provider_id;
  7. Ͳ͏ॻ͘ͷʁ ${ू߹} ͷ෦෼Λ ()ͰғͬͨSELECTจʹஔ͖׵͑·͢ɻ ͜Μͳײ͡Ͱॻ͖·͢ɻ(΍΍͍͜͢͠Ͷʘ(^o^)ʗ) SELECT ${ू߹ͷཁૉ} FROM ( SELECT

    * FROM ${ू߹} WHERE aa=“xx” ) XXX JOIN ( SELECT * FROM ${ू߹} WHERE aa=“xx” ) ON ${ू߹ͷཁૉʹΑΔ৚݅} WHERE ${ू߹ͷཁૉʹΑΔ৚݅}