サポートタイムズ

サポートタイムズはカスタマーサポートの“今”を届けるメディアです。(Powered by CallConnect)

CS 担当者のための SQL 入門編

f:id:sennba3:20160909173151g:plain

CS 担当者が最初に知るべきプログラミング言語は SQL だと言われています。本記事では実際に SQL をどのように書くのか、入門編としてご紹介します。

SQL の必要性

CS 担当者がなぜ SQL を最初に学ぶべきなのかは、以下の記事にまとめております。

www.supporttimes.com

SQL を使って素早く自分の欲しい顧客データにアクセスできるようになることで、エンジニアに頼らなくて済む自律的なサポートを実現することができます。

用語の確認

まず、SQL とは データベースに保存されたデータを、自分が欲しい形式で取得/作成/更新/削除するためのプログラミング言語です。どんな Web サービスを運営していても、必ずデータをどこかに保存しています。実際にアクセスできるようにするためにはエンジニアの協力が必要ですが、体系的な知識としてご紹介していきます。まず用語の確認をしていきましょう。

"テーブル" とはデータが保存されている形式の箱のようなものです。データを無作為にどんどん入れていくと、データを管理するのが大変になります。例えばユーザー情報を "User" というテーブルに保存すれば、ユーザー情報が欲しい時には "User" というテーブルのデータを取ってくるだけ良くなります。

"カラム" とはテーブルを定義する情報です。例えば "User"テーブルには "email" や "name", "address" といったカラムが定義されていることでしょう。このカラムの定義はサービスを運営しているならば必ず全て用意されています。1つのテーブルに3~10個くらいのカラムが定義されていることが普通です。

"レコード" とはテーブルに保存された一つ一つの情報です。 User の中に 各カラムが定義されたユーザーAさんのレコードがあったり、ユーザー Bさんの情報が入っていることでしょう。こうしたデータの一つ一つをレコードと呼びます。このレコードはユーザーが多ければ多いほど、増加します。100万ユーザーいれば100万レコードは最低でも存在することになります。

以下、User テーブルの例です。

id name email address
1 鈴木 suzuki@example.com 東京都
2 佐藤 sato@example.com 大阪府

2行目や3行目の実データの行がレコード、nameemail などのそれぞれの列がカラムです。

ここで id を定義しているのは、同一の名前やメールアドレス、住所などのレコードが登録されることを許容するために、各ユーザーを識別するために必要なためです。id はほとんどのテーブルで定義されることになります。

やってみよう

自社のテーブル構造がどのようになっているのか、エンジニアに教えてもらいましょう。テーブル構造はどんどん変わっていきますので、最新データはその都度教えてもらう必要があります。

データを取得する SELECT 文

どんなデータが保存されているのかを確認することができたところで、実際にデータを取ってみましょう。まずは最もよく使うであろう指定した id でユーザー情報を取ってくる方法です。

SELECT * FROM User WHERE id = 1;

* の部分は、すべてのUserカラム を意味します。今回の例で言うと、 id, name, email, address の4つ全てを取ってくるということになります。SELECT name FROM~ と言ったように取得するカラムを限定することもできます。

WHERE でどのデータを取ってくるかの絞り込みを行うことができます。今回は id が1であるユーザーの全てのカラムを取ってくるという命令となります。この WHERE は数字であれば >< などの不等号を扱えたり、 IN [1,2,3]と言った記述をすればそれに含まれるデータのみを取得したりといった指定も可能になります。WHERE で指定可能な方法は他にも幾つかありますので、欲しいデータの条件があった時に色々と調べてみると良いでしょう。

明確に条件が指定できない場合は、以下のような書き方も可能です。

SELECT * FROM User ORDER BY id DESC LIMIT 10;

ちょっと複雑になりましたね。今回はORDER BY 句によって並び順を指定しています。 id DESC ということで id の降順を指定していることになります。id が 100 まで保存されたレコードがある場合は、存在するレコード順で 100, 99, 98... といった並び順になります。DESC の反対は ASC ですが昇順の場合は省略可能となっています。

続いて LIMIT によって出力する結果を絞っています。今回は 10 ということなので、"最大でも10行のレコードを取り出して" という命令を SQL で下していることになります。大量データを誤って取ってきてしまうことのないよう、LIMITは日頃から意識して使うようにしましょう。

終わりに

ひとまず入門編として SQL各種言葉の定義や簡単な用法について解説しました。引き続き SQL 講座として連載してまいりますので、次回をお楽しみに!