SQL
非エンジニア

非エンジニア向けSQLの基礎

ゴール

  • 簡単な集計SQLを書けるようになること
  • 会社ごとの〇〇率をグラフ化して、と言われてSQLを書きはじめられるようになること
  • SQLの結果をRedashで棒グラフ、積み上げ棒グラフで表現できること

想定する受講者

  • データベース関係の基本的な用語について、聞いたことはある人
  • Redashなどのダッシュボードツールを見たことはある人

話すこと/話さないこと

  • 話すこと
    • データ構造の読み方(ER図)
    • データの取得方法(いろんなSELECT文)
    • RedashでSQLの結果をグラフにする方法
  • 話さないこと
    • DBのインストールとか子難しいやつ
    • ER図
    • 文字にも色々あるよね、とかそこら辺。
    • データを壊してしまうような操作(登録/更新/削除)
    • 権限制御など(DCL)
    • テーブルの作成削除など(DDL)
    • レスポンスの遅いSQLの直し方とか
    • Redashのグラフ

データを取り出してみよう(SELECT文、AS句)


SELECT companies.* FROM companies;
  • SELECT {テーブル名}.* FROM {テーブル名};
    • テーブルのレコードが全部表示されました。

動かなかった。どうしたら?

  • まずはメッセージを読もう。
    • Table 'develop.conmany' doesn't exist
    • conmanyテーブルが無いよ。
      • タイプミスですね。
  • 翻訳すれば大抵の原因は書いてあると思う

SELECT
  c.name,
  c.created_at
FROM companies AS c;
  • SELECT {テーブル名}.{カラム名} FROM {テーブル名} AS {別名};
    • ASでテーブル名に別名をつけて省略できました。
    • *をカラム名にすることで、必要な情報だけ取り出せました。
    • SELECTで表示するカラムはカンマ(,)で複数指定ができます。

データを絞り込んでみよう(WHERE句)


データの種類を覚えよう


SELECT * FROM users AS u WHERE u.email = 'example@example.com';

  • WHERE {テーブル名}.{カラム名} = '{検索したい文字}'
    • = で同じ値のレコードを検索できました。
    • 数字の比較では<>=も使うことがあります。

SELECT *
FROM users AS u
WHERE u.company_id = 2
  AND u.email IS NULL;
  • 2つの条件をANDで繋ぎました。
    • ORもあります
  • WHERE {テーブル名.カラム名} IS NULLでカラのフィールドを検索できました。
    • カラじゃ無い場合はIS NOT NULLだよ

SELECT u.name,
       u.created_at
FROM users AS u
WHERE u.company_id IN (1, 2)
  AND u.created_at > '2017-12-08 11:11:45'
  • WHERE {テーブル名}.{カラム名} IN ({値1}, {値2})
  • ()の中に含まれる値を検索する。

SELECT *
FROM users AS u
WHERE u.name LIKE '田中%'
  • あいまいな文字の検索
    • %はどんな文字でもいいよ、という意味
    • 上記の例だと名前が'田中'から始まるユーザーが検索できる
  • LIKE '%中%'とすると、名前に'中'が含まれるユーザーが検索できる

データの登録、更新、削除などSQLの基礎全般を知りたい!(初心者向け)

  1. スッキリわかる SQL 入門 ドリル215問付き!
    • 新卒エンジニアの鉄板テキスト。一通り何でも書けるようになるはず。
  2. ORACLE MASTER Bronze[12c SQL基礎](試験番号:1Z0-061)完全詳解+精選問題集
    • SIerとかの新卒必携の資格。たかが資格だが知識のヌケモレを無くすためには良い足がかりかと。

複雑な条件分岐、結合などを使いつつ、効率のよいSQLが書けるようになりたい!(中級者向け)

  1. 達人に学ぶ SQL徹底指南書
    • HAVING句、EXISTS術語、使いこなせてますか?中級へのステップに最適なテキスト。
  2. SQLパズル 第2版
    • SQLを書いて書いて書き倒して学びたい!そんな方に。
  3. SQLアンチパターン
    • 他人の書いた長いSQLを読むのってツラいですよね。「アイツの書いたSQLは汚い」そう言われたくないあなたに。

俺はSQLの全てをしりたい!(上級者向け)

  1. プログラマのためのSQL 第4版

便利なサイト