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

データベースについて

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.

 データベースについて

Avatar for Takehiro Yamaguchi

Takehiro Yamaguchi

January 01, 2019
Tweet

More Decks by Takehiro Yamaguchi

Other Decks in Technology

Transcript

  1. DB ( Database ) ͱ͸ʁ 6 σʔλΛѻ͍΍͍͢ܗͰೖΕ͓ͯ͘ശͰ͢ name lv hp

    mp ͋Δ͢ 35 79 0 ͜ͳΜ 33 140 63 ͤΓ͋ 27 151 67 ༐ऀσʔλ
  2. Question ࣗ෼ͰσʔλΛ؅ཧͨ͠ΒͲ͏ͳͷʁ 9 file = File.open("access.txt", "r") count = file.gets.to_i

    + 1 file.close file = File.open("access.txt", "w") file.puts(count) file.close load save count count + 1 ΞΫηε਺.txt ΞΫηεΧ΢ϯλʔ
  3. Answer 11 ͜ͷྫͷ৔߹ɺಉ࣌ΞΫηεͨ͠ͱ͖ʹยํͷ஋͕൓ө ͞Εͳ͍͜ͱ͕͋Γ·͢ɻ 10 10 + 1 10 10

    10 + 1 11 DBMSΛ࢖Θͳ͚Ε͹࡞Εͳ͍༁Ͱ͸ͳ͍ ༷ͨͩʑͳศརͳػೳ͕͋ΔͨΊ ΈΜͳ࢖͍ͬͯ·͢ʂ
  4. DBMSͷछྨ 13 DBMS RDBMS NoSQL . . . . ͘͘͝͝Ұ෦

    SQLΛ࢖͍දͷܗࣜͷσʔλΛѻ͏΋ͷ RDBMSҎ֎ͷDBMS
  5. DBMSͷछྨ 14 DBMS RDBMS NoSQL . . . . ͘͘͝͝Ұ෦

    SQLΛ࢖͍දͷܗࣜͷσʔλΛѻ͏΋ͷ RDBMSҎ֎ͷDBMS RDBMS͕جຊͰ͢ɻ ࣮ࡍʹ৮ֶͬͯΜͰ͍͖·͠ΐ͏ʂ
  6. MySQLͷInstallɾىಈ 18 $ brew install mysql $ brew services start

    mysql mac 3306൪ ϙʔτ ϩάΠϯ͍ͨ͠Έ͍ͨͩɻ Ϣʔβσʔλ͘Εʂ
  7. RDBMSͱͷʮ஻Γํʯ 22 3306൪ ϙʔτ SELECT * FROM users WHERE id

    = 1 RDBMSͱ͸ SQLͱ͍͏ݴ༿Λ࢖ͬͯ஻Γ·͢
  8. Try ࣮ࡍʹSQLจΛଧͬͯΈΑ͏ 23 $ mysql -uroot ... mysql> select version();

    +-----------+ | version() | +-----------+ | 5.7.22 | +-----------+ 1 row in set (0.00 sec) MySQLͱͷʮର࿩ϞʔυʯʹೖΔίϚϯυ όʔδϣϯΛਘͶΔSQLจ
  9. Answerྫ 33 ໊લ HP ߈ܸྗ ΰϒϦϯ 20 20 εϥΠϜ 30

    10 ຐԦͷ࢖͍ 50 50 ໊લ HP ߈ܸྗ ༐ऀ 100 20 ઓ࢜ 50 50 ૐཿ 200 10 ώʔϩʔͷද ఢͷද ࢓༷ ώʔϩʔͱఢ͸໊લͱHPͱ߈ܸྗΛ࣋ͪ·͢ɻ
  10. ࣮ࡍʹσʔλϕʔε͸Ͳ͏ͳ͍ͬͯΔͷ͔ʁ 34 ໊લ HP ߈ܸྗ ΰϒϦϯ 20 20 εϥΠϜ 30

    10 ຐԦͷ࢖͍ 50 50 ໊લ HP ߈ܸྗ ༐ऀ 100 20 ઓ࢜ 50 50 ૐཿ 200 10 ώʔϩʔςʔϒϧ ఢςʔϒϧ RPGσʔλϕʔε ϑΟʔϧυ (ྻɾΧϥϜ) Ϩίʔυ(ߦ)
  11. ϑΟʔϧυͷܕ 35 ໊લ HP ߈ܸྗ ΰϒϦϯ 20 20 εϥΠϜ 30

    10 ຐԦͷ࢖͍ 50 50 ໊લ HP ߈ܸྗ ༐ऀ 100 20 ઓ࢜ 50 50 ૐཿ 200 10 ֤ϑΟʔϧυʹͲΜͳ஋͕ೖΔ͔Λ ʮܕʯͰࢦఆ͠·͢ ਺஋ ਺஋ ਺஋ ਺஋ จࣈ จࣈ
  12. ϑΟʔϧυͷܕ 36 ໊લ HP ߈ܸྗ ΰϒϦϯ 20 20 εϥΠϜ 30

    10 ຐԦͷ࢖͍ 50 50 ໊લ HP ߈ܸྗ ༐ऀ 100 20 ઓ࢜ 50 50 ૐཿ 200 10 ֤ϑΟʔϧυʹͲΜͳ஋͕ೖΔ͔Λ ʮܕʯͰࢦఆ͠·͢ ਺஋ ਺஋ ਺஋ ਺஋ จࣈ จࣈ σʔλϕʔεʹ૝ఆ֎ͷ஋͕ೖΔͷΛ๷͙
  13. ϑΟʔϧυͷܕ 37 ໊લ HP ߈ܸྗ ΰϒϦϯ 20 20 εϥΠϜ 30

    10 ຐԦͷ࢖͍ 50 50 ໊લ HP ߈ܸྗ ༐ऀ 100 20 ઓ࢜ 50 50 ૐཿ 200 10 ֤ϑΟʔϧυʹͲΜͳ஋͕ೖΔ͔Λ ʮܕʯͰࢦఆ͠·͢ ਺஋ ਺஋ ਺஋ ਺஋ จࣈ จࣈ σʔλϕʔεʹ૝ఆ֎ͷ஋͕ೖΔͷΛ๷͙ σʔλྔΛ૝ఆͯ͠ശΛ༻ҙ͢Δ͜ͱͰແବΛݮΒ͢
  14. ϑΟʔϧυͷܕ 38 ໊લ HP ߈ܸྗ ΰϒϦϯ 20 20 εϥΠϜ 30

    10 ຐԦͷ࢖͍ 50 50 ໊લ HP ߈ܸྗ ༐ऀ 100 20 ઓ࢜ 50 50 ૐཿ 200 10 ֤ϑΟʔϧυʹͲΜͳ஋͕ೖΔ͔Λ ʮܕʯͰࢦఆ͠·͢ ਺஋ ਺஋ ਺஋ ਺஋ จࣈ INT ੔਺ VARCHAR จࣈྻ (࠷େจࣈ਺͋Γ) DATE ೔෇ ୅දతͳʮܕʯ จࣈ
  15. ϑΟʔϧυͷܕ 39 ໊લ HP ߈ܸྗ ΰϒϦϯ 20 20 εϥΠϜ 30

    10 ຐԦͷ࢖͍ 50 50 ໊લ HP ߈ܸྗ ༐ऀ 100 20 ઓ࢜ 50 50 ૐཿ 200 10 ֤ϑΟʔϧυʹͲΜͳ஋͕ೖΔ͔Λ ʮܕʯͰࢦఆ͠·͢ int int int int varchar (50) INT ੔਺ VARCHAR จࣈྻ (࠷େจࣈ਺͋Γ) DATE ೔෇ ୅දతͳʮܕʯ varchar (50)
  16. Try ࣮ࡍʹDBΛ࡞ͬͯΈΑ͏ʂ 40 40 name(int) hp(int) power(int) ΰϒϦϯ 20 20

    εϥΠϜ 30 10 ຐԦͷ࢖͍ 50 50 name(varchar) hp(int) power(int) ༐ऀ 100 20 ઓ࢜ 50 50 ૐཿ 200 10 heroes table enemies table db: rpg CREATE DATABASE rpg; USE rpg; CREATE TABLE heroes ( name VARCHAR(50), hp INT, power INT ); CREATE TABLE enemies ( name VARCHAR(50), hp INT, power INT );
  17. ϨίʔυΛૢ࡞͢ΔSQLจɹʔɹ௥ՃʢINSERTʣ INSERT INTO ςʔϒϧ໊ ( ϑΟʔϧυ໊ ) VALUES ( ೖΕΔ஋

    ) name(varchar) hp(int) power(int) ༐ऀ 100 20 ઓ࢜ 50 50 ૐཿ 200 10 heroes table ྫ
  18. Try herosͱenemiesʹϨίʔυΛೖΕͯΈΑ ͏ʂ 43 43 name(int) hp(int) power(int) ΰϒϦϯ 20

    20 εϥΠϜ 30 10 ຐԦͷ࢖͍ 50 50 name(varchar) hp(int) power(int) ༐ऀ 100 20 ઓ࢜ 50 50 ૐཿ 200 10 heroes table enemies table db: rpg INSERT INTO ςʔϒϧ໊ ( ϑΟʔϧυ໊ ) VALUES ೖΕΔ஋
  19. 55 ࢓༷ ༐ऀ͸෢ثΛ1ͭ૷උͰ͖ΔΑ͏ʹ͍ͨ͠Ͱ͢ɻ ෢ث͸໊લͱ߈ܸྗΛ࣋ͪ·͢ɻ ʮ͘ͳ͍ʯ͸߈ܸྗ͕2Ͱ͢ɻ ʮ΍Γʯ͸߈ܸྗ͕5Ͱ͢ɻ 55 name(varchar) hp(int) power(int)

    weapon_name weapon_power ༐ऀ 100 20 ΍Γ 5 ઓ࢜ 50 50 ΍Γ 5 ૐཿ 200 10 ͘ͳ͍ 2 heroes table ಉ͡ʮ಺༰ʯ͕ॏෳͯ͠͠·͍ σʔλͷແବ͕ଟ͍ʂ
  20. 56 ࢓༷ ༐ऀ͸෢ثΛ1ͭ૷උͰ͖ΔΑ͏ʹ͍ͨ͠Ͱ͢ɻ ෢ث͸໊લͱ߈ܸྗΛ࣋ͪ·͢ɻ ʮ͘ͳ͍ʯ͸߈ܸྗ͕2Ͱ͢ɻ ʮ΍Γʯ͸߈ܸྗ͕10Ͱ͢ɻ 56 name(varchar) hp(int) power(int)

    weapon_name weapon_power ༐ऀ 100 20 ΍Γ 5 ઓ࢜ 50 50 ΍Γ 5 ૐཿ 200 10 ͘ͳ͍ 2 heroes table ࢓༷มߋ͓ئ͍͠·ʔ͢
  21. 57 ࢓༷ ༐ऀ͸෢ثΛ1ͭ૷උͰ͖ΔΑ͏ʹ͍ͨ͠Ͱ͢ɻ ෢ث͸໊લͱ߈ܸྗΛ࣋ͪ·͢ɻ ʮ͘ͳ͍ʯ͸߈ܸྗ͕2Ͱ͢ɻ ʮ΍Γʯ͸߈ܸྗ͕10Ͱ͢ɻ 57 name(varchar) hp(int) power(int)

    weapon_name weapon_power ༐ऀ 100 20 ΍Γ 5 ઓ࢜ 50 50 ΍Γ 10 ૐཿ 200 10 ͘ͳ͍ 2 heroes table ࢓༷มߋ͓ئ͍͠·ʔ͢ 1Օॴߋ৽࿙ΕͪΌͬͨʂ
  22. 58 ࢓༷ ༐ऀ͸෢ثΛ1ͭ૷උͰ͖ΔΑ͏ʹ͍ͨ͠Ͱ͢ɻ ෢ث͸໊લͱ߈ܸྗΛ࣋ͪ·͢ɻ ʮ͘ͳ͍ʯ͸߈ܸྗ͕2Ͱ͢ɻ ʮ΍Γʯ͸߈ܸྗ͕10Ͱ͢ɻ 58 name(varchar) hp(int) power(int)

    weapon_name weapon_power ༐ऀ 100 20 ΍Γ 5 ઓ࢜ 50 50 ΍Γ 10 ૐཿ 200 10 ͘ͳ͍ 2 heroes table ࢓༷มߋ͓ئ͍͠·ʔ͢ 1Օॴߋ৽࿙ΕͪΌͬͨʂ σʔλͷॏෳ͕͋Δͱ ӡ༻্৭ʑͱʮπϥ͍ʯͰ͢...
  23. ਖ਼نԽͱ͸ʁ 60 σʔλͷॏෳΛͳͨ͘͢Ίͷ ςʔϒϧઃܭͷߟ͑ํ name(varchar) hp(int) power(int) ༐ऀ 100 20

    ઓ࢜ 50 50 ૐཿ 200 10 heroes table name(varchar) power(int) ͘ͳ͍ 2 ΍Γ 5 weapons table ੾ͬͯ
  24. Question Ͳ͏΍ͬͨΒςʔϒϧΛܨ͛ΒΕΔ͔ গ͠ߟ͑ͯΈΑ͏ 61 name(varchar) hp(int) power(int) ༐ऀ 100 20

    ઓ࢜ 50 50 ૐཿ 200 10 heroes table name(varchar) power(int) ͘ͳ͍ 2 ΍Γ 5 weapons table ܨ͛Δ
  25. ςʔϒϧͱςʔϒϧͷܨ͛ํ 62 name(varchar) hp(int) power(int) weapon_id ༐ऀ 100 20 2

    ઓ࢜ 50 50 2 ૐཿ 200 10 1 heroes table Id (int) name(varch ar) power(int) 1 ͘ͳ͍ 2 2 ΍Γ 5 weapons table Primary Key (id) Ͱࢦఆ͢Δ͜ͱͰ ςʔϒϧͱςʔϒϧͷؔ܎ੑΛද͢
  26. 64 name(varchar) hp(int) power(int) power ༐ऀ 100 20 5 ઓ࢜

    50 50 5 ૐཿ 200 10 2 heroes table name(varch ar) power(int) ͘ͳ͍ 2 ΍Γ 5 weapons table ΋͠idͰ͸ͳ͘powerͰܨ͛Α͏ͱͨ͠Βʁ ϨίʔυΛಛఆ͢ΔͨΊͷϑΟʔϧυ Primary Keyͱ͸ʁ
  27. 1ର1ɹ1ରଟɹଟରଟ 66 name(varchar) hp(int) power(int) weapon_id ༐ऀ 100 20 2

    ઓ࢜ 50 50 2 ૐཿ 200 10 1 heroes table Id (int) name(varch ar) power(int) 1 ͘ͳ͍ 2 2 ΍Γ 5 weapons table දͱදͷؔ܎ੑΛ਺ͰݟͯΈ·͠ΐ͏ heroes͔ΒݟΔͱɺweapon͸1ͭ weapons͔ΒݟΔͱɺheros͸ෳ਺
  28. 1ର1ɹ1ରଟɹଟରଟ 67 id name(varch ar) hp(int) power(int) 1 ༐ऀ 100

    20 2 ઓ࢜ 50 50 3 ૐཿ 200 10 heroes table Id (int) name(varch ar) power(int) 1 ͘ͳ͍ 2 2 ΍Γ 5 weapons table දͱදͷؔ܎ੑΛ਺ͰݟͯΈ·͠ΐ͏ equip table hero_id weapon_id 1 1 1 2 3 1