SELECT文とは
データベースを操作する命令文の一種で、主に検索に使用します。すでにあるテーブルの中からいろんな情報を好きな条件で引っ張ってくることができます。
データベースでよく使われる「CRUD」のうちのC(Create)です。
基本構文
SELECT 検索する項目 FROM テーブル名;
これが最も基本的なSELECT文です。検索したいものの条件を指定したいときはテーブル名の後にさらに記述が増えますが、それについては後で説明します。
まずは例としてMySQLの公式サイトからダウンロードできる練習ファイルで説明していきます。
興味のある方は以下のリンクからworld databaseをダウンロードしてみてください。
https://dev.mysql.com/doc/index-other.html
Zipを解凍して出てきたsqlファイルをMySQLで実行すればデータを手に入れることができます。サイトの方はMySQLの公式サイトなので気軽にダウンロードできるかと思います。
使用方法
上の表は先ほど述べたworld databaseの中のcountrylanguageテーブルです。まずはこの中からLanguageだけ取り出してみます。今後の作業はMySQLのWorkbench上で行います。
SELECT Language FROM countrylanguage;
上記のSELECT文をWorkbenchで記述しCtrl + Enterを押下します。すると以下のようにLanguageの列だけ取り出せます。
次は少し難易度を上げてcountrylanguageの中からEnglishのものだけを取り出そうと思います。
条件付き検索構文
SELECT 検索する項目 FROM テーブル名 WHERE 条件式;
今までのSELECT文の後ろにWHEREという語句を加えることにより条件を指定して検索することができます。
では使ってみましょう。下記の文を実行してみます。
SELECT * FROM countrylanguage WHERE Language = 'English';
すると上の図のように英語を使う人がいる国を抽出することができました。ちなみにSELECTの後にある*(アスタリスクマーク)はワイルドカードと呼ばれ、全部取り出すときに指定します。
ここまででもだいぶ面白い使い方ができましたが、まだデータが多いのでさらにこの中から英語を50%以上使用している国を降順に抽出してみます。ではまた下記の文を実行します。
SELECT * FROM countrylanguage WHERE Language = 'English' and Percentage >= 50 order by Percentage desc;
するとデータの量がかなり絞れてなおかつきれいに並べることができました。先ほどの文を説明していくと、WHEREの後の条件はandで繋げることにより複数記述できます。そこでPercentageが50%以上のものの指定を追加しています。
最後に書いてあるorder by という部分では検索結果をどのように並べるかを指定しています。今回は降順であるdescを使用しています。昇順にしたい場合はascを使います。
まとめ
今回使用した文法をまとめておきます。
文法等 | 使い方 |
SELECT | SELECT 取り出したいもの で指定する |
FROM | FROM テーブル名 でどこからとってくるか指定する |
* | 取り出したいものを指定せずに全て取ってきたいときに使用 |
WHERE | WHERE 条件 で抽出の条件を指定する |
ORDER BY | 並べ方を指定できる よく使われるのはASC(昇順)とDESC(降順) |
かなり基本的な部分であり、まだまだやれることはいっぱいあるのですが今回紹介したことができれば、最低限の操作はできるようになると思うのでぜひ試してみてください。