見るための データベース・SQL 1つのテーブルからデータを取り出す


エンジニアの方にとってみれば、SQL は使えてあたりまえかもしれませんが、営業や管理部の人からすれば魅惑の魔法といわれることもあります。 しかし非エンジニアの方でも SQL が使えた方がいいですし、 そのほうがエンジニアの作業も楽になります。

そこで今回は、 非エンジニアの方が SQL を使えるようにするための準備作業について解説します。

環境

  • PostgreSQL
  • pgAdmin 3
  • Windows 10

PostgreSQL を使います。 データベースに Oracle Database, MySQL を使用している場合は一部異なります。

どんなデータがありそうかを見る

pgAdmin を起動します。 左ペインから、ダブルクリックやクリックを繰り返してツリーを下のように展開していきます。

pgadmin_table_list

Tables というところに、 テーブル(保存されたデータのセット)が入っています。 左のツリーでも見えますし、右上のペインでも表示されます。 (灰色で隠していますが。)

では例えば users というテーブルの中にどんなデータが入っているのか予想してみましょう。 テーブルの一覧の中から users をクリックします。 すると右下に、テーブルの構造が表示されます。

ここでは次のように表示されています。

上の users テーブル は管理用のデータが多いのですが、 id, email と書いてあるところから、 ユーザID と メールアドレス が入っていそうです。 ここから、 SQL を使ってデータを抽出していきます。 pgAdmin には、 簡単にデータを見る方法も用意されていますが、 できることに限界がありますので SQL を使用します。

データを見てみる

pgAdmin のツールバーに SQL と書かれたアイコンがあります。 それをクリックします。

すると新しいウインドウが開きます。 左上の “SQL Editor” と書かれた SQL 入力場所、 ツールバーの赤丸で囲んだ実行ボタン、 画面下の結果を表示する “Output pane” を覚えておいてください。

pgadmin_sql_window

では試しに 10件 だけデータを取り出してみます。 SQL Editor に次のように入力します。

そして実行ボタンをクリックします。 すると “Output pane” にデータが表示されます。

SQL の内容を説明します。

SELECT
データを取り出す命令です。
*
テーブルにあるデータのすべての列を取り出します。
FROM users
users テーブル からデータを取り出します。
LIMIT 10
10件に件数を絞り込みます。

SQL の改行などはエンジニアによってさまざまです。 テーブル名も含めて大文字小文字も自由に使われます。

データの絞り込み

ここからは、データの絞り込み方を考えます。

先ほどのテーブルで、次のようなデータがあるとします。

id email
1 sample_1@mail.com
2 sample_2@mail.com
3 sample_3@mail.com
4 sample_4@mail.com
5 sample_5@example.com
6 sample_6@example.com
7 sample_7@example.com
8 sample_8@example.com
9 sample_9@example.com
10 sample_10@example.com

先ほどはアスタリスクを使いましたが、アスタリスクを使うと idemail だけがほしいときでも、余計なデータも一緒に表示されます。 そういうときは、カラム名(列名)を並べて記載します。

LIMIT 10 も外しました。 こうすると、 すべてのユーザについて id, name が抽出されます。 idemail の書く順番を変えると、出力される順番も変わります。

id(数値) で絞り込み

id 5234 のユーザのデータが見たい、 といった時に使える方法を紹介します。

WHERE のところに id = 5234 という条件を書きます。 簡単ですね。

ほかにも次のようなフィルタができます。

id != 5234
id が 5234 ではないユーザを抽出します。
id > 5234
id が 5234 より大きいユーザを抽出します。
id < 5234
id が 5234 より小さいユーザを抽出します。
id >= 5234
id が 5234 以上のユーザを抽出します。
id <= 5234
id が 5234 以下のユーザを抽出します。

>=, <=>, < が先なのか = が先なのかややこしいですが、 次のように考えると覚えられます。 不等号ですから、 “不” つまり等しくないものが先に、 “等号” が後にきます。

email(文字列)

email で絞り込む場合も同じように不等号が使えます。 sample_1@mail.com がメールアドレスになっているユーザを探してみましょう。

こちらも id で絞り込んだ場合と同じです。 不等号 >, < の順序は簡単に言えば、「あいうえお順」のような辞書順になります。 この順番はデータベースごとに設定されており、データベースが異なると比較順序も変わることがあります。

email のような文字列の場合は、 前方一致、中間一致、後方一致で検索することもできます。

前方一致

emailsample で始まるユーザを検索します。

後方が決まっていないので % にします。 このときは 等号・不等号 ではなく、 LIKE と書いていることにも注意してください。

後方一致

emailmail.com で終わるユーザを検索します。

決まっていない前方部分を % にします。

中間一致

email1 が含まれるユーザを検索します。

決まっていない前方部分と後方部分を % にします。

複数条件で絞り込む

複数の条件を使うときは、 AND, OR で条件をつなげます。

id が 8 より小さく、 メールアドレスに ex が含まれるユーザを検索します。

id が 5 より小さい または id が 8 より大きいユーザを検索します。

簡単ですね。

では AND, OR の入り乱れた検索をやってみましょう。

id が 3以下 で メールアドレスに “am” が含まれるか、 id が 7以上 で メールアドレスに 1 が含まれるデータを抽出します。

まとまった条件を括弧で囲めば解決できます。 この場合は括弧なしでも動きますが、わかりやすさを重視して括弧をつけるようにしましょう。

もうひとつ例を出します。 メールアドレスに a または e が含まれ、 かつ l または o が含まれるデータを探します。

見るためのデータベース・SQL データの並び順 に続きます。