非エンジニアでも知らないとヤバイSQL Part2 〜SELECT文でデータ抽出〜
コラムDB、SQLについて
前回の非エンジニアでも知らないとヤバイSQL Part1では、DBの種類(「関係型」「NoSQL」「階層型」「ネットワーク型」)、その中でも現在主流になっている「ネットワーク型」(RDBMS)について、SQLについて触れました。
今回は具体的に、SQLのデータ抽出のクエリ、SELECTについてです。SQLをある程度知っているとデータの扱い方やマーケティング、ゲームの企画などでも活かせます。構文はシェア率の高いMySQLで進めていきます。
SELECTの基本
前回も登場した社員マスターテーブル、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 (オフセット,) 抽出件数;
結果は以下のようになります。
ここでもう一度クエリを確認してみてください。3番目からなのにOFFSETに2がはいっていることに気づきましたか?開始位置は0から始まるので、3番目を指定したい場合は2をOFFSETに指定する必要があります。
まとめ
今回はMySQLでSELECTする際、全カラム抽出、カラム指定抽出、件数指定抽出、OFFSETを使った件数指定抽出についてでした。データ抽出の仕組みや方法って、色々な場面で役にたちます。非エンジニアでも知っているだけで大違いなSQL。次回もSELECTの続きをやっていきます!
株式会社Knocknote代表取締役。大学卒業後不動産営業に従事した後、ITの重要性を強く感じエンジニアへ転職。ソーシャルゲーム開発、スマホアプリやPepperアプリの企画及び開発、高校でのプログラミング講師などの業務に携わる。2017年1月に創業。現在はプログラミング教育事業、システム開発事業を展開。今後は海外向けの教育事業をさらに拡大させていく事が目標。著書:『作って学べるUnity超入門』(技術評論者)