MySQL の SELECT の基本
ここでは MySQL でデータを取得するのに使われる SELECT 文の基本についてご説明します。
サンプルデータベースのテーブルを使いますので、実際にスクリプトを実行してみたい方は、こちら のスクリプトを実行して school_db データベースを作成しておいてください。
MySQL の SELECT 文の基本
MySQL でデータベースのテーブルからデータを取得には SELECT 文を使います。
SELECT 文は上手に書くと欲しいデータを効率よく取得することができます。
逆に下手に書くと、データの取得に時間がかかり、アプリケーションのパフォーマンスに大きく影響したりします。
SELECT 文には様々な句、キーワード、オプションなどが指定できますが、よく使う基本の SELECT 文の構文は次の通りです。
SELECT select_expr
[ FROM table_references ]
[ WHERE where_condition ]
[ GROUP BY {col_name | expr | position} ]
[ HAVING where_condition ]
[ ORDER BY {col_name | expr | position} [ ASC | DESC ] ]
[ LIMIT {[offset,] row_count | row_count OFFSET offset} ];
必須なのは SELECT 句だけで、[ ] でくくられているのはオプショナルな句です。
それぞれの句の役割をざっくり説明すると、次のような感じです。
- SELECT: 取得したいデータを指定する
- FROM: データを取得したいテーブルを指定する
- WHERE: データを取得する際の条件を指定する
- GROUP BY: データをグループ化したいときに指定する
- HAVING: データをグループ化したときの条件を指定する
- ORDER BY: データのソート順を指定する (ASC: 昇順 | DESC: 降順)
- LIMIT: SELECT 文の結果セットの何行目から何行分取得するか指定する
それぞれの句の具体的な使い方は、これからサンプルデータで実際にクエリーを書いて試しながら、学習していきましょう。
テーブルの全カラムの全レコードを取得する
それでは SELECT 文を使って、データを取得してみましょう。
テーブルの全カラム、全レコードを取得したい時には次のクエリーで取得することができます。
SELECT *
FROM テーブル名;
SELECT の次の * は、FROM で指定されているテーブルの全てのカラムのデータを取得したい時に使われます。
サンプルデータベースの school_db をスクリプトを実行して作った方は、次のような students テーブルができてデータが入っていると思います。
この students テーブルの全カラム、全レコードを取得したい時は次のクエリーで取得できます。
SELECT *
FROM students;
上のクエリーを実行すると、次のようになります。
students テーブルの全カラム、全レコードが、テーブルのカラム順で取得できました。
テーブルの特定のカラムの全レコードを取得する
では、次にテーブルの全カラムではなく、特定のカラムの全レコードを取得してみましょう。
特定のカラムのデータのみを取得したい場合は、SELECT 句でそのカラム名を指定します。
例えば、first_name、last_name、gender のデータのみを取得するクエリーは次のようになります。
SELECT first_name,
last_name,
gender
FROM students;
上のクエリーを実行すると、次のようになります。
students テーブルの first_name、last_name、gender カラムの全レコードが取得できましたね。
以上、MySQL でデータを取得するのに使われる SELECT 文の基本についてご説明しました。