非エンジニアでも知らないとヤバイSQL Part2 〜SELECT文でデータ抽出〜

非エンジニアでも知らないとヤバイSQL

DB、SQLについて

前回の非エンジニアでも知らないとヤバイSQL Part1では、DBの種類(「関係型」「NoSQL」「階層型」「ネットワーク型」)、その中でも現在主流になっている「ネットワーク型」(RDBMS)について、SQLについて触れました。
今回は具体的に、SQLのデータ抽出のクエリ、SELECTについてです。SQLをある程度知っているとデータの扱い方やマーケティング、ゲームの企画などでも活かせます。構文はシェア率の高いMySQLで進めていきます。

SELECTの基本

DB
前回も登場した社員マスターテーブル、t_employeeです。

ではまず、社員全員のデータを抽出してみましょう。

結果は以下の通りです。

では上記SQLについて解説です。

SELECT * FROM t_employee;

SELECTの後の*は全てのカラム(列)を意味します。表の縦です。対して横はレコードといい行(row)を意味します。

FROMはどのテーブルから抽出するかです。

SELECT カラム名 FROM テーブル名;

ということになります。慣れないうちは文末の;(セミコロン)を忘れがちなので気をつけてください。

SELECTの基本2  カラムを指定

では今度は社員テーブルから氏名のみを抽出してみましょう。

結果はカラムを指定しているので以下のようになります。

とっても簡単ですね!

SELECTの基本3  抽出件数を指定

では今度は社員テーブルから件数を指定して抽出してみましょう。

MySQLの場合、LIMITの後の数字は何件取得するかを指定します。

SELECT カラム名 FROM テーブル名 LIMIT 抽出件数;

すると結果は以下のようになります。

期待通りの結果ですね!

では、3番目から4人のデータを抽出したい場合、MySQLではどのように書けばいいのでしょうか。
3番目にあたる抽出の開始位置をOFFSET(オフセット)といい、MySQLでは以下のように指定します。オプションですので必要な時のみ指定します。

SELECT カラム名 FROM テーブル名 LIMIT (オフセット,) 抽出件数;

結果は以下のようになります。
MySQL LIMIT OFFSET
ここでもう一度クエリを確認してみてください。3番目からなのにOFFSETに2がはいっていることに気づきましたか?開始位置は0から始まるので、3番目を指定したい場合は2をOFFSETに指定する必要があります。

まとめ

今回はMySQLでSELECTする際、全カラム抽出、カラム指定抽出、件数指定抽出、OFFSETを使った件数指定抽出についてでした。データ抽出の仕組みや方法って、色々な場面で役にたちます。非エンジニアでも知っているだけで大違いなSQL。次回もSELECTの続きをやっていきます!

関連記事