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

非エンジニアのSQL入門

9cfde65b598c5e2fe8578307bfbad682?s=47 ham
May 18, 2021
14

 非エンジニアのSQL入門

9cfde65b598c5e2fe8578307bfbad682?s=128

ham

May 18, 2021
Tweet

Transcript

  1. 非エンジニアのSQL入門 2020/02/08 ham

  2. はじめに データドリブンと言われるようになって久しい今日この頃、営業や企画など非エ ンジニアの方もSQLを駆使してデータを取得している場面をよく目にするように なりました。 ただ、SQLとかデータベースとかハードル高いよと感じている方も多いと思いま す。 しかしデータを参照するためのSQLだけであればすごく簡単に習得できるので是 非チャレンジしてみてください。

  3. 前提条件 • SQLを実行してデータを取得できる環境があり、エンジニア以外もそこにア クセスできること ◦ そもそもデータベースを使っていない場合は対象外です ◦ データドリブンを掲げているのであれば参照専用の環境があるはずです • SQLを毎回書いてデータを取得するのはアドホックなデータを取得したい時

    です。定型データはミスなく簡単に取得できるようにシステム化してもらい ましょう。
  4. データについて データは「テーブル」と呼ばれる箱に入っています。テーブルは「カラム」と呼 ばれるデータ項目を持っています。 e.g.) テーブル: users. カラム: id / name

    / email users id name email 1 伊藤一郎 ito@example.com 2 鈴木太郎 suzuki@example.com 3 伊藤二郎 ito2@example.com
  5. データについて データベースを使っているアプリケーションでは複数のテーブルを使ってデータ を保持しています。 保持しているデータはテーブルやカラムの情報がわからないと抽出できないの で、事前にテーブル定義を入手しておきましょう。 (テーブル定義が存在しない場合は知っている人に作ってもらいましょう)

  6. データ取得の基本 データ取得のSQLは下記の構文で記載します。SQLは;までを1つの文章と判断し ます。そのためキーワードとキーワードの間に改行やスペースを入れてもOKで す。 select [参照したいカラム1, カラム2, …] from [テーブル名]

    where [抽出条件] ;
  7. 参照したいカラム 参照したいカラムを指定します。 usersテーブルからnameとemailのデータを取得します。 select name, email from users ;

  8. 条件 whereを指定することで条件に合致したデータだけを取得することができます。 usersテーブルから’鈴木一郎’のデータを取得します。 select id, name, email from users where

    name = '鈴木一郎' ;
  9. 条件 inを使用することで合致条件を複数指定することができます。 usersテーブルから’鈴木太郎’または’伊藤一郎’のデータを取得します。 select id, name, email from users where

    name in ('鈴木太郎', '伊藤一郎') ;
  10. 条件 部分一致で検索することもできます。%がワイルドカードです。 usersテーブルから’伊藤’で始まるnameのデータを取得します。 select id, name, email from users where

    name like '伊藤%' ;
  11. 条件 数値のカラムの場合、完全一致ではなく大なり小なりで条件を指定できます。 usersテーブルからidが2以上のデータを取得します。 select id, name, email from users where

    id >= 2 ;
  12. 条件 複数条件を指定することもできます。 usersテーブルからidが2以上、かつnameが’伊藤’で始まるデータを取得しま す。 select id, name, email from users

    where id >= 2 and name like '伊藤%' ;
  13. 複数テーブルの結合 ここまでの知識で1テーブルであればデータが取れるようになりましたが、実務 では複数テーブルのデータを紐づけて取得することが多いと思います。 ここからはテーブルの結合を説明します。

  14. 複数テーブルの結合 users exams id name email 1 伊藤一郎 ito@example.com 2

    伊藤二郎 ito2@example.com id user_id answer 1 1 一郎の答え1 2 1 一郎の答え2 3 2 二郎の答え
  15. 複数テーブルの結合 nameとanswerを取得します。 fromのところにinner join [テーブル名] on [結合条件]と記載します。 select users.name, exams.answer

    from users inner join exams on users.id = exams.user_id ;
  16. 複数テーブルの結合 次のようにデータが取得できます。 users join exams users.name exams.answer 伊藤一郎 一郎の答え1 伊藤一郎

    一郎の答え2 伊藤二郎 二郎の答え
  17. 最後に 単純に抽出するSQLだけであればすごく簡単だということがお分かりいただけま したか? 気軽にデータ抽出できるようになってデータドリブンライフを楽しんでくださ い! SQLをガンガン使っていると、大量データを扱って取得に時間がかかったり(パ フォーマンス問題)もっと複雑なデータ抽出をしたくなってくると思います。 そうなったときにはすでにSQL初心者は脱していると思うので、次のステージへ ステップアップしていってください!