本当にこれだけでいいの?
というほど大切な部分のみに絞り込んで書いています。
ですが私が20年業務でSQL使用していて、
これだけ知っていれば十分という内容を書いています。
この記事はSQLを知らないプログラマーの初心者、
ビジネスユーザを対象にしています。
コマンド | 内容 |
---|---|
SELECT | 出力する項目を指定します。 |
FROM | どこのテーブル(情報源)からデータを出すかを指定します |
WHERE | データの絞り込み条件を指定します |
データはテーブルという箱に入っています。
例えばこの「受注」テーブルの情報を全部とってきてみましょう
「受注」テーブル
顧客名 | 受注日 | 受注金額 |
---|---|---|
ABC会社 | 2020-01-01 | 1,000 |
XYZ会社 | 2020-02-01 | 1,000 |
ABC会社 | 2020-02-01 | 5,000 |
YYY会社 | 2020-02-01 | 3,000 |
SQLはこのように書けます
SELECT
*
FROM 受注
次に「ABC会社」だけのデータを持ってきましょう。
WHEREというコマンドを追加します。
SELECT
*
FROM 受注
WHERE 顧客名 = 'ABC会社'
このSQLを実行すると結果はこのようになります。
顧客名 | 受注日 | 受注金額 |
---|---|---|
ABC会社 | 2020-01-01 | 1,000 |
ABC会社 | 2020-02-01 | 5,000 |
条件をもっと追加して絞り込みたい場合はどうしたらいいでしょうか?
ANDで条件をつなげることで複数条件を付けることができます。
2,000円以上の受注のみ表示してみましょう
SELECT
*
FROM 受注
WHERE 顧客名 = 'ABC会社'
AND 受注金額 >= 2,000
結果はこのようになります
顧客名 | 受注日 | 受注金額 |
---|---|---|
ABC会社 | 2020-02-01 | 5,000 |
名前の一部を忘れてしまったけど、検索したい。
という事はよくあると思います。
その場合は LIKE
を使うと検索できます。
「顧客の会社名に確かYが入っていたはずなんだよなぁ。なんだったけなぁ」
という場合、
SELECT
*
FROM 受注
WHERE 顧客名 LIKE '%Y%'
と書きます。%Y%
と%を使用しているのに気が付くと思います。
%は何かわからないけど何かしらの文字をあらわします。
言葉でいうと「ほにゃらら」です。
「ほにゃららYほにゃららで検索して!!」
という意味です。
結果はこのようになります。
顧客名 | 受注日 | 受注金額 |
---|---|---|
XYZ会社 | 2020-02-01 | 3,000 |
YYY会社 | 2020-02-01 | 2,000 |
ここまでわかりましたでしょうか?
ここまでわかればもう80%到達しています。
驚くと思いますが、これは本当です。
私は開発で1日に20回以上はSQLを実行します。
実行するSQLの半分はこの知識だけでできるものです。
もっと複雑なことをしたい場合はどうするのでしょうか?
それはSQLでとったデータをExcelに張り付けて加工すればいいのです。
Excelに張り付けられれるレベルのデータ量に絞り込む。
これができれば第一ステップは終了です。
WHEREの抽出条件はよく使うので、もう少し説明します。
XYZ会社もしくはYYY会社を抽出したい場合はどうするのでしょうか? OR
を使うと両方の会社を出すことができます。
SELECT
*
FROM 受注
WHERE 顧客名 = 'XYZ会社'
OR 顧客名 = 'YYY会社'
このSQLを実行すると結果はこのようになります。
顧客名 | 受注日 | 受注金額 |
---|---|---|
XYZ会社 | 2020-02-01 | 1,000 |
YYY会社 | 2020-02-01 | 3,000 |
SQLでは複数条件の場合は OR
でなく IN
で書くことができます。
このSQLも先ほどと同じ結果になります。
INで書いた方がすっきりしている事がわかると思います。
SELECT
*
FROM 受注
WHERE 顧客名 IN('XYZ会社','YYY会社')
テーブルによってはすごい数の項目がある場合があります。
その場合はSELECTに出力したい項目を指定することで、
欲しい項目だけ出すことができます。
例として顧客名と受注金額だけを表示したいとします。
その場合カンマで区切って項目名を書きます。
SELECT
顧客名
,受注金額
FROM 受注
出力結果はこのようになります。
受注日のデータが出力されなくなったことがわかります。
顧客名 | 受注金額 |
---|---|
ABC会社 | 1,000 |
XYZ会社 | 1,000 |
ABC会社 | 5,000 |
YYY会社 | 3,000 |
出力データを変換したい場合は、はじめはExcelで変換すれば十分です。
ですが何度も出力する場合は、毎回Excelで変換するのはたいへんですよね。
例えば受注金額の10%をいつも計算しているとします。
SQLをこのように書くことで計算できます
SELECT
顧客名
,受注金額
,受注金額 * 0.1 AS インセンティブ
FROM 受注
掛け算をする場合は *
を使います。 AS
という語句がでますが、これは項目の名前を付ける時に使用します。
受注金額 * 0.1 の計算した結果を「インセンティブ」という名前で呼びますよ
という意味になります。
出力結果をみると「インセンティブ」という項目が追加されています。
顧客名 | 受注金額 | インセンティブ |
---|---|---|
ABC会社 | 1,000 | 100 |
XYZ会社 | 1,000 | 100 |
ABC会社 | 5,000 | 500 |
YYY会社 | 3,000 | 300 |
ここまでどうでしたでしょうか?
ほんとにこれだけでいいの?
というほど簡単だったと思います。
ビジネスユーザはまずこれで実践を進めるの事をお勧めします。
これ以上のことは使いながら徐々に知識を増やしけば大丈夫です。
SQLで出来きないことどうすればいいでしょうか?
それはExcelで行えばいいのです。
SQLの知識が増えてきたら、SQL側で少しずつ複雑なことをしていけば大丈夫です。
というのも私たちの目的はデータを出すことではないからです。
データを使って分析をするという事が目的です。
データを頻繁に使うことで分析の能力を鍛えていきましょう。
コマンド | 内容 |
---|---|
SELECT | 出力する項目を指定します。 |
FROM | どこのテーブル(情報源)からデータを出すかを指定します |
WHERE | データの絞り込み条件を指定します |
まずは SELECT * FROM テーブル名
を覚えてください。
テーブル名の部分を自分の欲しいテーブルの名前に変えてください。
次の章はこちらから
業務で使えるSQL講座 中級編
本でSQLを勉強したい方への記事