Slide 1

Slide 1 text

データベースと SQL を分かった 気になる勉強会 YouTube Live (2020.6.4 Thur. 21:00~) CTO と VPoE が初学者向けに講義する オンライン勉強会です。 随時質問なども受け付けていますので、 お気軽にどうぞ。 ハッシュタグ #mu_zaru 前編

Slide 2

Slide 2 text

話す人 現役のエンジニア二人 赤貝が好きな CTO と デザイン勉強中のエンジニア @mu_vpoe エンジニアリングMgr。 チームづくり、採用。 Twitter 担当。 数学が好き。 ムー zaru @zaru CTO, Love 赤貝, JavaScript, Firebase, Web Components.

Slide 3

Slide 3 text

初学者向けです。JavaScript/PHP/Ruby などを使って Web 開発をしていきたい方向け。 Lv.2-3 をメイン対象としてます。 難易度? Lv.4 Lv.3 Lv.2 Lv.1 HTML/CSS を触り始める 書籍、Progate、ドットインストールなどで JS/PHP/Ruby 入門 スクールに通いフレームワーク Laravel/Rails や DB/Git 入門 未経験から内定圏内 / エンジニア1年目 実務 1~2年 テストコード、リファクタ、設計、インフラ 中堅 以上 Lv.5 Lv.6

Slide 4

Slide 4 text

Web 開発で、 必須のアイテム 今回のゴール 「データベースを全く触ったことがない人に、 DBとSQLを分かった気になってもらう!」 DB

Slide 5

Slide 5 text

エディタ触りながらではなく、 動画に集中してもらって大丈夫です。 YouTube 上でも、Twitter の メンションでも構いません。 質問にはできるだけ答えていきた いと思います。 質問OK ライブ配信の動画は、 そのまま YouTube に公開します。 なので途中で抜けてもいいし、 生で見なくてもいいです。 動画公開 ソースコード公開 講義中に使うソースコードは全て GitHub に公開しています。 github.com/mu-zaru/mu-zaru-channel

Slide 6

Slide 6 text

データベースってなに? 情報の集まり ユーザ 商品 ToDo 住所 記事 集まっている情報に対して、 検索・挿入・更新・削除する データベース 管理システム いいねの数 情報の蓄積や操作を実現してくれるのが、データベース管理システム。 Web 系の世界では MySQL や PostgreSQL などがよく使われる。

Slide 7

Slide 7 text

データベースってなに? 情報の集まり ユーザ 商品 ToDo 住所 記事 いいねの数 プログラムから見た時には、状態の集合とも言える。状態を保存してお く必要があるプログラムには、データベースが必要。 プログラム プログラムは何 も覚えていない

Slide 8

Slide 8 text

いろんな種類のDB 階層 カード リレーショナル ドキュメント グラフ KVS XML JSON Key Value Key Value

Slide 9

Slide 9 text

いろんな種類のDB 階層 カード リレーショナル ドキュメント グラフ KVS XML JSON Key Value Key Value SQL NoSQL

Slide 10

Slide 10 text

いろんな種類のDB 階層 カード リレーショナル ドキュメント グラフ KVS XML JSON Key Value Key Value 今回は、よく使われるリレーショナルタイプのデータベースについて SQL

Slide 11

Slide 11 text

リレーショナルタイプ について ToDo No ToDo 完了 登録日時 ユーザ名 Email 1 生放送する 完了 2020-05-31 zaru zaru@example.com 2 コード書く 未完了 2020-06-01 zaru zaru@example.com 3 絵を描く 未完了 2020-06-02 mu mu@example.com データを複数の関係で表現した集合体、列と行で作られた表の関係

Slide 12

Slide 12 text

ToDo No ToDo 完了 登録日時 ユーザ名 Email 1 生放送する 完了 2020-05-31 zaru zaru@example.com 2 コード書く 未完了 2020-06-01 zaru zaru@example.com 3 絵を描く 未完了 2020-06-02 mu mu@example.com 列 リレーショナルタイプ について

Slide 13

Slide 13 text

ToDo No ToDo 完了 登録日時 ユーザ名 Email 1 生放送する 完了 2020-05-31 zaru zaru@example.com 2 コード書く 未完了 2020-06-01 zaru zaru@example.com 3 絵を描く 未完了 2020-06-02 mu mu@example.com 行 リレーショナルタイプ について

Slide 14

Slide 14 text

ToDo No ToDo 完了 登録日時 ユーザ名 Email 1 生放送する 完了 2020-05-31 zaru zaru@example.com 2 コード書く 未完了 2020-06-01 zaru zaru@example.com 3 絵を描く 未完了 2020-06-02 mu mu@example.com 行 列 列(属性)と行(タプル)の組み合わせによって表現されている情報の 集合、この集合を表(テーブル)と呼ぶ。語弊を恐れず言えば Excel の ようなもの。 リレーショナルタイプ について

Slide 15

Slide 15 text

正規化 User No 名前 Email 1 zaru zaru@example.com 2 mu mu@example.com ToDo No ToDo 完了 登録日時 User No 1 生放送する 完了 2020-05-31 1 2 コード書く 未完了 2020-06-01 1 3 絵を描く 未完了 2020-06-02 2 4 ご飯つくる 未完了 2020-06-04 1 「ToDo テーブル」と「 User テーブル」の2つに分割。 詳しくは次回

Slide 16

Slide 16 text

SQL について リレーショナル リレーショナル DB の操作を 簡単にするための言語が SQL リレーショナル DB は色々なシステムがあるが、SQL という標準化され た(一応)言語を使って、同じような書き方でデータの操作をすること ができる。

Slide 17

Slide 17 text

簡単な SQL を使ってみる id task status created_at user_name Email 1 生放送する 完了 2020-05-31 zaru zaru@example.com 2 コード書く 未完了 2020-06-01 zaru zaru@example.com 3 絵を描く 未完了 2020-06-02 mu mu@example.com todo テーブル こんなテーブル があるとする まずは基本的な 検索/挿入/更新 をやってみましょう。

Slide 18

Slide 18 text

データの検索 その1 id task status created_at user_name Email 1 生放送する 完了 2020-05-31 zaru zaru@example.com 2 コード書く 未完了 2020-06-01 zaru zaru@example.com 3 絵を描く 未完了 2020-06-02 mu mu@example.com SELECT 取得したい列名 FROM テーブル名; SELECT task, user_name FROM todo; task user_name 生放送する zaru コード書く zaru 絵を描く mu task と user_name の列を取得するこ とができました

Slide 19

Slide 19 text

データの検索 その2 id task status created_at user_name Email 1 生放送する 完了 2020-05-31 zaru zaru@example.com 2 コード書く 未完了 2020-06-01 zaru zaru@example.com 3 絵を描く 未完了 2020-06-02 mu mu@example.com SELECT 取得したい列名 FROM テーブル名; SELECT * FROM todo; id task status created_at user_name Email 1 生放送する 完了 2020-05-31 zaru zaru@example.com 2 コード書く 未完了 2020-06-01 zaru zaru@example.com 3 絵を描く 未完了 2020-06-02 mu mu@example.com ワイルドカード(*) を使うことで全て の列データを取得

Slide 20

Slide 20 text

データの検索 その3 id task status created_at user_name Email 1 生放送する 完了 2020-05-31 zaru zaru@example.com 2 コード書く 未完了 2020-06-01 zaru zaru@example.com 3 絵を描く 未完了 2020-06-02 mu mu@example.com SELECT 取得したい列名 FROM テーブル名 WHERE 検索条件; SELECT task, user_name FROM todo WHERE user_name = “zaru”; task user_name 生放送する zaru コード書く zaru user_name が zaru のものを 抽出できました

Slide 21

Slide 21 text

データの挿入 id task status created_at user_name Email 1 生放送する 完了 2020-05-31 zaru zaru@example.com 2 コード書く 未完了 2020-06-01 zaru zaru@example.com 3 絵を描く 未完了 2020-06-02 mu mu@example.com INSERT INTO テーブル名 VALUES ( “id”, “task”, ... ); INSERT INTO todo VALUES ( 4, “撮影”, “未完了”, “2020-06-05”, “zaru”, ... ); id task status created_at user_name Email 1 生放送する 完了 2020-05-31 zaru zaru@example.com 2 コード書く 未完了 2020-06-01 zaru zaru@example.com 3 絵を描く 未完了 2020-06-02 mu mu@example.com 4 撮影 未完了 2020-06-05 zaru zaru@example.com

Slide 22

Slide 22 text

データの更新 id task status created_at user_name Email 1 生放送する 完了 2020-05-31 zaru zaru@example.com 2 コード書く 未完了 2020-06-01 zaru zaru@example.com 3 絵を描く 未完了 2020-06-02 mu mu@example.com UPDATE テーブル名 SET 列名 = 新しい値 WHERE 条件; id task status created_at user_name Email 1 生放送する 完了 2020-05-31 zaru zaru@example.com 2 コード書く 完了 2020-06-01 zaru zaru@example.com 3 絵を描く 未完了 2020-06-02 mu mu@example.com UPDATE todo SET status = “完了” WHERE id = 2;

Slide 23

Slide 23 text

ありがとうございました! 次回は 6/11(木)21:00~ 「正規化・JOIN・主キーなどについて」 今回のコマンドはこちら github.com/mu-zaru/mu-zaru-channel 質問感想など呟いていただけると嬉しいです! ハッシュタグ #mu_zaru

Slide 24

Slide 24 text

Fin