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

データベースについて

 データベースについて

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