Categories: sql

業務で使えるSQL講座 基礎編

本当にこれだけでいいの?
というほど大切な部分のみに絞り込んで書いています。
ですが私が20年業務でSQL使用していて、
これだけ知っていれば十分という内容を書いています。

この記事はSQLを知らないプログラマーの初心者、
ビジネスユーザを対象にしています。

SQLを覚えよう

次の章
業務で使えるSQL講座 中級編

この記事で覚えること

コマンド内容
SELECT出力する項目を指定します。
FROMどこのテーブル(情報源)からデータを出すかを指定します
WHEREデータの絞り込み条件を指定します

1. データを全件をもってこよう FROM

データはテーブルという箱に入っています。
例えばこの「受注」テーブルの情報を全部とってきてみましょう

「受注」テーブル

顧客名受注日受注金額
ABC会社2020-01-011,000
XYZ会社2020-02-011,000
ABC会社2020-02-015,000
YYY会社2020-02-013,000

SQLはこのように書けます

SELECT
*
FROM 受注
SELECT

出力したい項目を書きます。
SELECTからFROMの間に、出力したい項目を書きます。
*はすべての項目を出すという意味です。
SELECT * と書くと❝すべての項目を出力する❝という意味になります。

FROM

出力するデータを指定します。
FROMの後にテーブル名を書きます。
FROM 受注 と書くと、
❝受注テーブルからデータを持ってくる❝という意味になります。

2. 欲しいデータだけ持ってこよう WHERE

次に「ABC会社」だけのデータを持ってきましょう。
WHEREというコマンドを追加します。

WHERE

抽出条件を指定します
テーブルの項目名 = ‘抽出したい値
と指定することで欲しいデータだけ抽出します。
文字を指定する場合は’で囲みます。
ということで 'ABC会社' となります。

SELECT
*
FROM 受注
WHERE 顧客名 = 'ABC会社'

このSQLを実行すると結果はこのようになります。

顧客名受注日受注金額
ABC会社2020-01-011,000
ABC会社2020-02-015,000

条件をもっと追加して絞り込みたい場合はどうしたらいいでしょうか?
ANDで条件をつなげることで複数条件を付けることができます。
2,000円以上の受注のみ表示してみましょう

SELECT
*
FROM 受注
WHERE 顧客名 = 'ABC会社'
  AND 受注金額 >= 2,000

結果はこのようになります

顧客名受注日受注金額
ABC会社2020-02-015,000

2-1 あいまい検索の方法 LIKE

名前の一部を忘れてしまったけど、検索したい。
という事はよくあると思います。
その場合は LIKE を使うと検索できます。

「顧客の会社名に確かYが入っていたはずなんだよなぁ。なんだったけなぁ」
という場合、

SELECT
*
FROM 受注
WHERE 顧客名 LIKE '%Y%'

と書きます。
%Y% と%を使用しているのに気が付くと思います。
%は何かわからないけど何かしらの文字をあらわします。
言葉でいうと「ほにゃらら」です。
「ほにゃららYほにゃららで検索して!!」
という意味です。
結果はこのようになります。

顧客名受注日受注金額
XYZ会社2020-02-013,000
YYY会社2020-02-012,000

2-2 一休み

ここまでわかりましたでしょうか?
ここまでわかればもう80%到達しています。
驚くと思いますが、これは本当です。

私は開発で1日に20回以上はSQLを実行します。
実行するSQLの半分はこの知識だけでできるものです。

もっと複雑なことをしたい場合はどうするのでしょうか?
それはSQLでとったデータをExcelに張り付けて加工すればいいのです。
Excelに張り付けられれるレベルのデータ量に絞り込む。
これができれば第一ステップは終了です。

2-3 もう少し複雑な抽出をしてみよう OR

WHEREの抽出条件はよく使うので、もう少し説明します。
XYZ会社もしくはYYY会社を抽出したい場合はどうするのでしょうか?
OR を使うと両方の会社を出すことができます。

SELECT
*
FROM 受注
WHERE 顧客名 = 'XYZ会社'
   OR 顧客名 = 'YYY会社'

このSQLを実行すると結果はこのようになります。

顧客名受注日受注金額
XYZ会社2020-02-011,000
YYY会社2020-02-013,000

SQLでは複数条件の場合は OR でなく IN で書くことができます。
このSQLも先ほどと同じ結果になります。
INで書いた方がすっきりしている事がわかると思います。

SELECT
*
FROM 受注
WHERE 顧客名 IN('XYZ会社','YYY会社')

3. 欲しい項目だけ表示しよう SELECT

テーブルによってはすごい数の項目がある場合があります。
その場合はSELECTに出力したい項目を指定することで、
欲しい項目だけ出すことができます。

例として顧客名と受注金額だけを表示したいとします。
その場合カンマで区切って項目名を書きます。

SELECT 
  顧客名
 ,受注金額
FROM 受注

出力結果はこのようになります。
受注日のデータが出力されなくなったことがわかります。

顧客名受注金額
ABC会社1,000
XYZ会社1,000
ABC会社5,000
YYY会社3,000

3-1 計算結果を出力するには?

出力データを変換したい場合は、はじめはExcelで変換すれば十分です。
ですが何度も出力する場合は、毎回Excelで変換するのはたいへんですよね。

例えば受注金額の10%をいつも計算しているとします。
SQLをこのように書くことで計算できます

SELECT 
  顧客名
 ,受注金額
 ,受注金額 * 0.1 AS インセンティブ
FROM 受注


掛け算をする場合は * を使います。
AS という語句がでますが、これは項目の名前を付ける時に使用します。
受注金額 * 0.1 の計算した結果を「インセンティブ」という名前で呼びますよ
という意味になります。

出力結果をみると「インセンティブ」という項目が追加されています。

顧客名受注金額インセンティブ
ABC会社1,000100
XYZ会社1,000100
ABC会社5,000500
YYY会社3,000300

3-2 基礎編の知識で実践で活用

ここまでどうでしたでしょうか?
ほんとにこれだけでいいの?
というほど簡単だったと思います。

ビジネスユーザはまずこれで実践を進めるの事をお勧めします。
これ以上のことは使いながら徐々に知識を増やしけば大丈夫です。
SQLで出来きないことどうすればいいでしょうか?
それはExcelで行えばいいのです。
SQLの知識が増えてきたら、SQL側で少しずつ複雑なことをしていけば大丈夫です。

というのも私たちの目的はデータを出すことではないからです。
データを使って分析をするという事が目的です。
データを頻繁に使うことで分析の能力を鍛えていきましょう。

4. 基礎編で覚えたこと

コマンド内容
SELECT出力する項目を指定します。
FROMどこのテーブル(情報源)からデータを出すかを指定します
WHEREデータの絞り込み条件を指定します

まずは
SELECT * FROM テーブル名
を覚えてください。
テーブル名の部分を自分の欲しいテーブルの名前に変えてください。

次の章はこちらから
業務で使えるSQL講座 中級編

本でSQLを勉強したい方への記事

Katahira

Share
Published by
Katahira

Recent Posts

トランザクションテーブルの特徴を知ろう

この記事で解決できる疑問 トラ…

3年 ago

マスタテーブルの設計で注意すべき3点を紹介

この記事で解決できる疑問 マス…

3年 ago

Power BI道場 コンテンツ紹介

ここでは筆者が提供しているPo…

3年 ago

Power BI道場 ヒストグラムの作成。知っていれば簡単!!

この記事で解決できる疑問 ヒス…

3年 ago
Close Bitnami banner
Bitnami